←2019-09-28 2019-09-29 2019-09-30→ ↑2019 ↑all
00:00:02 <zzo38> I think Unicode is terrible, especially for terminal emulation. (For searching many different documents, Unicode is OK, but Duocode (as described on this IRC before) might be better.) I made up my own code, which includes PETSCII, and also some stuff that is not included in that proposal.
00:00:37 <zzo38> All narrow characters, and the common wide characters, can be represented by a 16-bit code, so that it can be used with 16-bit fonts.
00:01:14 <b_jonas> there are almost certainly other ways that I forget
00:01:31 <zzo38> And you do not need the tables as large and messy as Unicode to calculate the width of a string.
00:02:07 <zzo38> (If there are no control codes, then it is simply the sum of the widths of the individual bytes that make up the string.)
00:02:27 <pikhq> It may be better, but Unicode does have the advantage of handling most people's use cases while being a generally agreed-upon solution.
00:03:02 <pikhq> (I also don't know exactly how useful your code system is, as a lot of the complexity in Unicode is a hard requirement from the languages it supports)
00:03:39 <zzo38> It is useful for a different purpose than Unicode.
00:04:14 <zzo38> Also, even with Unicode, the support for complex scripts and so on is something that I think should be part of the font metrics rather than the character encoding.
00:04:26 <b_jonas> the $^H variable is examined by the compiler, and the relevant values are saved in the opcode tree when compiling the /$s/ thing, which is why you have to set it before that's compiled, that's why we have the BEGIN block.
00:05:22 <b_jonas> `perl -e $i = 'for(1..7){print$_**2," "}'; no utf8 $^H |= 0x200000; $s="(?{$i})"; /$s/; # ais523: and here's how you can do it without a capital E
00:05:23 <HackEso> 1 4 9 16 25 36 49
00:06:02 <b_jonas> the argument to no is evaluated at BEGIN time, we're using the no statement for that side effect only
00:07:52 <b_jonas> imode: "if you have subtraction, equality to zero and AND, is it possible to construct less than and greater than." => yes. check the sign bits of both operands of a subtraction and the sign bit of the result. the three sign bits determine the result of both unsigned less than and signed less than. not the most convenient, but works.
00:08:02 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:08:27 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=66391&oldid=66234 * Vulture001 * (+75)
00:08:28 <b_jonas> ... oh, it's a logical and. you're screwed.
00:11:18 <zzo38> I think that you cannot really have one character set good for all purposes; Unicode tried that and just made it worse in many ways, although there are also some things Unicode is good for, so it isn't entirely bad.
00:19:44 <kmc> hello friends
00:20:08 -!- cocof has joined.
00:20:20 <cocof> during weekend most people do not use freenode?
00:21:58 <b_jonas> "<ais523> I prefer counter machines because they are at least consistently slow" wow
00:25:09 <imode> allo kmc.
00:25:20 <imode> cocof: dunno, it seems active on weekends.
00:26:03 <cocof> wheat’s not the only food whose proteins are degraded into opioid peptides. beer.
00:26:14 <cocof> i tried biology no one there.
00:26:27 <imode> why are you here.
00:26:33 <cocof> I am
00:26:46 <cocof> its like saying why are you?
00:26:54 <cocof> i am here.
00:27:07 <cocof> why does not change this fact.
00:27:36 <kmc> I'm here always
00:27:44 <imode> kmc is eternal.
00:27:49 <kmc> yes
00:28:16 <kmc> fungot: did you see somebody bioengineered E. coli to produce psilocybin
00:28:16 <fungot> kmc: will the hon. member of this house, at the passing of the bill, labour has a different local authority,
00:28:38 <cocof> i know fields of such mushrooms :)
00:28:48 <cocof> as to e coli no.
00:30:07 <kmc> I would like to find such mushrooms
00:30:15 <cocof> I can send you.
00:30:23 <kmc> in the post?m
00:30:27 <kmc> no thanks
00:30:27 <cocof> ye
00:30:33 <kmc> I don't do drugs deals over IRC.
00:30:57 <cocof> how does e coli makes it?
00:30:59 <kmc> ~especially not in a publicly logged channel
00:31:03 <kmc> I dunno
00:31:09 <kmc> genetic engineering
00:31:30 <kmc> https://www.ncbi.nlm.nih.gov/pubmed/31550507/
00:31:51 <cocof> dont worry i can send to imode if you scared to receive :)
00:32:02 <imode> nah.
00:32:03 <cocof> i can literally collect a lot.
00:32:50 <cocof> there was interesting article about magnets, how they can be used to change blood ph.
00:33:27 -!- atslash has quit (Ping timeout: 268 seconds).
00:34:12 <cocof> claims to kills anaerobic infections.
00:34:34 <imode> swallow an iron pellet and stand next to a strong magnet.
00:34:49 <imode> we'll see if you're cured.
00:35:01 <cocof> water molecule is affected by magnets
00:35:27 <imode> crankery detected.
00:36:45 <cocof> why?\
00:36:50 <cocof> just cause you too lazy?
00:39:02 <cocof> Physics shows that chemicals change weight under the influence of magnetic fields; so does water. More hydroxyl (OH-) ions are created to form calcium bicarbonate and other alkaline molecules. It is these molecules that help reduce acidity.
00:41:32 <b_jonas> "<shachaf> B C K W is more directly a duplicate/delete, thing, I guess." => can you explain why that is enough to make that base universal directly, without reducing them to SKI?
00:41:33 <imode> why did you come here.
00:47:46 <imode> b_jonas: B is application, C is parameter reversal (reordering), K is deletion, and W is duplication. you can perform the same reductions that you would in the lambda calculus.
00:48:42 <imode> http://www.cs.ox.ac.uk/people/samson.abramsky/pcpt.pdf
00:48:58 <imode> remove W, and it's no longer universal.
00:49:42 <b_jonas> imode: yes, I know it's no longer universal without W: the mockingbird book explains that
00:50:10 <b_jonas> hmm... or does it only explain why it's not universal without K?
00:53:19 <b_jonas> imode: hmm yes, those slides seem relevant
00:54:13 <cocof> i came here to ask, is it possible to program in a same way as you ride a bike?
00:54:20 <cocof> even if software is complex.
00:54:54 <cocof> simply sit and start writing.
00:54:55 <b_jonas> so basically if you want to eliminate a lambda from the head, then first you duplicate the parameter as many times with W as you need or drop it with K, and then inside the W-thing, you use BCI to build it?
00:55:01 <b_jonas> might work
00:55:07 <b_jonas> thanks for the link
00:55:21 <b_jonas> this could come useful the next time I make such a silly mistake as Amycus ...
00:59:51 <esowiki> [[Crazy]] https://esolangs.org/w/index.php?diff=66392&oldid=66390 * Vulture001 * (+1274) Added 99 bottles
01:00:47 <imode> no problem.
01:04:41 <esowiki> [[Combinatory logic]] https://esolangs.org/w/index.php?diff=66393&oldid=57586 * B jonas * (+166) /* External resources */
01:04:51 <b_jonas> let's put the link there so I can find it easier later
01:07:27 <b_jonas> "<imode> why are array languages classified under "unstructured", I wonder." => because old APL used to have goto and indirect goto, but no if-block or while-block statements
01:10:25 <b_jonas> "<imode> are any esolangs based on logic programming?" => just the one, Brachylog
01:11:49 <b_jonas> "<imode> companies actually use prolog, though." => CS companies use things that are way worse than prolog, believe me. if you ever work in one of them, you never trust any software ever.
01:16:47 <b_jonas> "<arseniiv> yesterday when I was trying to sleep at last, I thought I need to say to you all what nice people you are" => ah yes, I leave for a week and how much difference it makes
01:21:50 <b_jonas> "<QazNotQuaz> is there anything particular i need to do if i want to make a derivative of one of the languages on the wiki?" => yes. don't derive from brainfuck or any brainfuck-derivative.
01:22:44 -!- tromp has joined.
01:25:08 -!- tromp_ has quit (Ping timeout: 276 seconds).
01:29:19 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
01:33:31 <b_jonas> ``` random-card norn # "<tswett[m]> Hey HackEso, do you know what a norn is?"
01:33:32 <HackEso> Norn's Annex \ 3(w/p)(w/p) \ Artifact \ ({(w/p)} can be paid with either {W} or 2 life.) \ Creatures can't attack you or a planeswalker you control unless their controller pays {(w/p)} for each of those creatures. \ NPH-R
01:34:02 <b_jonas> a named character on New Phyrexia
01:36:05 <b_jonas> also an unrelated named character in Nethack, a quest leader
01:38:00 -!- cocof has left.
01:44:16 <b_jonas> shachaf: hmm, another weird hypothetical time travel mechanism
01:46:19 <b_jonas> "<izabera> someone here wrote a terminal emulator i think" => I fixed a bug in one, does that count?
01:46:37 <b_jonas> or rather, I tracked down what causes the bug, which was the hard part. I didn't write the patch to fix it.
01:48:28 <Sgeo_> Also a species of creature in the Creatures series. I suspect that's where tswett[m] knows norn from
01:48:57 <Sgeo_> Oh tswett[m] said that already
01:49:38 <pikhq> Terminals are pretty tricky to implement.
01:50:16 -!- xkapastel has joined.
01:52:12 -!- FreeFull has quit.
02:12:22 -!- oerjan has joined.
02:16:46 <oerjan> <izabera> was it oerjan? <-- no.
02:17:47 * pikhq waves
02:18:36 * b_jonas waves to everyone
02:21:18 <int-e> oerjan feigns innocence... but of what...
02:21:42 <int-e> Ah.
02:23:00 <int-e> Terminal emulators could be zzo38 territory.
02:23:07 <pikhq> Possibly.
02:24:24 <int-e> (But zzo doesn't have a monopoly on weirdly low level, seemingly ancient technology)
02:32:17 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
02:33:59 * oerjan makes waves ~~~~~~~~~~~~
02:37:58 -!- lambdabot has quit (Remote host closed the connection).
02:38:22 -!- int-e has quit (Remote host closed the connection).
02:40:42 -!- lambdabot has joined.
02:42:47 -!- int-e has joined.
02:46:15 <int-e> ∿∿∿
02:53:20 <oerjan> `icode ∿∿∿
02:53:20 <HackEso> ​[U+223F SINE WAVE] [U+223F SINE WAVE] [U+223F SINE WAVE]
02:54:41 <int-e> it looks pretty good in the logs
02:55:09 <int-e> (and it's even in the fixed terminal font. it just doesn't look quite as nice)
04:16:45 <Sgeo_> No cosine wave?
04:24:29 <int-e> Sgeo_: apparently not. Must be an oversight. There seem to be no half waves either?
04:25:21 <int-e> Unicode is not very orthogonal (literally, in this case)
04:25:53 <int-e> (at least as far as orthogonality of functions is a literal rather than an abstract concept)
04:26:05 <oerjan> `wisdom orthog
04:26:07 <HackEso> That's not wise.
04:48:26 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:51:19 -!- Lord_of_Life has joined.
04:51:42 <shachaf> b_jonas: No, I don't have a precise idea of why BCKW works.
04:51:45 <shachaf> b_jonas: But I'd like to know.
05:04:12 <tswett[m]> I seem to remember that abstraction elimination is pretty easy with BCKW.
05:04:20 <tswett[m]> Let me try to remember how it goes.
05:07:33 <tswett[m]> \x.x is WK and \x.E is KE. So the only hard part is what \x.Ex(Fx) is.
05:08:39 <imode> the U combinator probably would be a better case study.
05:09:20 <imode> w.r.t "why is this combinator system universal"
05:11:57 <tswett[m]> Of course, \x.Ex(Fx) is W (\x.\y.Ex(Fy)), and \y.Ex(Fy) is B(Ex)F, and \x.B(Ex)F is \x.BBExF, which is \x.C(BBE)Fx, which is C(BBE)F.
05:11:59 <tswett[m]> And there you have it.
05:22:10 <int-e> How about BCKS
05:24:49 <int-e> That covers the four cases for \x.EF directly (x free/not free in E; x free/not free in F).
05:26:00 <int-e> `? drone
05:26:01 <HackEso> Drones are tools used to perform certain criminal actions that were not possible in ancient times.
05:26:11 <int-e> `? drone sex
05:26:13 <HackEso> Drone sex has never been observed in the wild; in fact it's rare to see drones in their natural habitat because they are extremely shy. Experiments with drones in captivity have only resulted in broken drones, and a rotor stuck in the ceiling. We are still looking for a biological explanation for the ever increasing drone population.
05:26:58 <int-e> (I just saw Friday's xkcd)
05:38:13 <Sgeo_> Ugh have to go write a bug telling someone they misread the equations in a spec. Although the spec's English language explanation is itself wrong.
05:39:46 <zzo38> In what spec?
05:40:16 <Sgeo_> X3D
05:40:33 <Sgeo_> https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/lighting.html#Lightingon
05:41:32 <Sgeo_> The English text claims that diffuseColor modulates the texture. But for RGB and RGBA textures, I_D_rgb, the diffuseColor, isn't used
05:45:50 <int-e> Sgeo_: the text also claims that T_M modulates A_T and that's not reflected in the table either?
05:46:23 <int-e> (for Intensity+Alpha and RGBA)
05:53:34 <Sgeo_> The English in the (older) VRML spec seems to match the table http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html#ImageTexture
05:54:03 -!- oerjan has quit (Quit: Nite).
05:54:58 <int-e> TIL: replace, modulate, it's all the same :)
05:56:04 <int-e> (what I'm really wondering though is which of the two matches the intent of the specification... the text or the table)
05:57:21 <int-e> But I suppose that in practice, the table is more likely to be used in an implementation.
05:58:31 <zzo38> You should complain to whoever wrote the specification, then, since there is something wrong with the specification.
06:01:05 <Sgeo_> int-e, one implementation is matching the English text, writing up a bug report now, and another matches the table but doesn't bother attempting to determine if an image is RGB or intensity so assumes RGB
06:01:50 <Sgeo_> Instead providing an extra field not in the spec for the X3D author to say "Yeah, this is an intensity, not RGB"
06:03:20 <shachaf> I was saying before that K and W correspond directly to delete and duplicate.
06:03:29 <shachaf> And C corresponds to swap.
06:04:30 <shachaf> Which is like starting with a substructural logic and adding contraction and weakening and exchange.
06:05:04 <shachaf> And B presumably corresponds to some kind of modus ponens/composition/cut/whatever?
06:08:55 <int-e> B is (function) composition.
06:09:18 <int-e> So, yeah, logically a cut.
06:10:42 <int-e> Anyway, to me BMN = S(KM)N and CMN = SM(KN) are linear variants of S.
06:10:44 <shachaf> Right.
06:10:57 <shachaf> S certainly does double or triple duty.
06:12:07 <int-e> S is perfectly natural if you approach things from a perspective of abstraction elimination.
06:13:45 <int-e> And B and C are natural from the same point of view if you have a linear formalism.
06:14:38 <shachaf> I agree that S is natural.
06:33:47 <b_jonas> Sgeo_: isn't the sign wave there as a symbol for alternating current, like in the printed text of power supplies?
06:34:37 -!- imode has quit (Ping timeout: 245 seconds).
06:41:06 <int-e> this problem could be solved with a "mirror next character" modifier
07:03:05 -!- xkapastel has quit (Quit: Connection closed for inactivity).
08:46:29 <b_jonas> `? seal
08:46:30 <HackEso> seal? ¯\(°​_o)/¯
08:47:20 <b_jonas> seal is an abbreviation of sea lion.
09:29:53 -!- FreeFull has joined.
09:46:22 -!- sftp has quit (Excess Flood).
09:46:46 -!- sftp has joined.
10:41:37 -!- xkapastel has joined.
10:53:16 -!- kspalaiologos has joined.
10:58:12 -!- sftp has quit (Max SendQ exceeded).
10:58:36 -!- sftp has joined.
10:59:54 -!- atslash has joined.
11:31:29 -!- arseniiv has joined.
12:28:36 <fizzie> There will be a (hopefully short) fungot outage, doing hardware.
12:28:37 <fungot> fizzie: he has the better cakes, i may, from september, we have the time, to the hon. and learned friend the minister for the work he is doing to make sure that i have the very important bilateral relationship.
12:28:48 -!- fungot has quit (Quit: Coyote finally caught me).
12:29:57 -!- APic has quit (Ping timeout: 240 seconds).
12:31:02 <kspalaiologos> I've got (theoretically) my Malbolge interpreter in Malbolge up and running
12:31:27 <kspalaiologos> the problem is, it hogged all of my system memory, turned swapping, ate half of my disk quota and then I killed it
12:31:50 <kspalaiologos> and it's 50MB big
12:38:02 <int-e> kspalaiologos: using https://esolangs.org/wiki/Malbolge_Unshackled ?
12:38:51 <int-e> (Malbolge itself should never grow that big. I'd say can't but of course an implementation could be stupid about it...)
12:39:09 <kspalaiologos> yeah, I am using Malbolge Unshackled
12:39:22 <kspalaiologos> just a simplification to make it more understandable
12:40:08 -!- kpspalaiologos has joined.
12:40:24 <kspalaiologos> I'm switching clients
12:40:29 -!- kspalaiologos has quit (Remote host closed the connection).
12:40:43 -!- kpspalaiologos has quit (Client Quit).
12:41:03 -!- kspalaiologos has joined.
12:42:01 <kspalaiologos> continuing, I'm using dynamic rotation width interpreter
12:42:22 <kspalaiologos> I thought about going with fixed-width 20-big rotation interpreter
12:42:44 <kspalaiologos> but I don't really think it will do something about it.
12:53:28 -!- APic has joined.
13:43:05 -!- xkapastel has quit (Quit: Connection closed for inactivity).
14:17:36 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66394&oldid=66385 * A * (+48) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
14:42:28 -!- imode has joined.
15:18:17 -!- APic has quit (Ping timeout: 240 seconds).
15:25:43 <imode> I wonder. it's possible to process incredibly large datasets using streaming to avoid holding the whole set in memory at a particular point, but I wonder if the same is true for code.
15:26:26 <imode> if I was only allowed to hold 64 instructions in memory at a given point, but my whole program was much, much larger, I couldn't really "stream" it.
15:26:54 <imode> streaming kind of implies a linear traversal from the start to the end of a dataset, but control flow isn't linear.
15:27:29 <imode> so I wonder what a language like brainfuck would look like if you couldn't "jump back", per se.
15:27:47 <imode> once you've read and executed an instruction, it's gone.
15:31:10 <kspalaiologos> there would be no way to make a loop
15:31:16 <kspalaiologos> unles you come up with some clever idea
15:31:48 <imode> you can create a loop _if_ your language has access to the instruction stream and can enqueue instructions.
15:31:59 <kspalaiologos> that's actually a clever idea
15:32:13 <imode> basically inject instructions to be executed later on.
15:32:14 <kspalaiologos> but have you got any "working" example?
15:32:17 <kspalaiologos> I believe that
15:32:22 <imode> kinda, I guess? Modal does this.
15:32:26 <kspalaiologos> you cant make a conditional loop
15:32:30 <kspalaiologos> even if you can inject instructions
15:32:44 <FireFly> well, conditionally inject an instruction :P
15:32:45 <kspalaiologos> it hardly depends on isa tho, because the brainfuck-based one would have no chance of this happening
15:32:49 <imode> https://git.imode.tech https://imode.tech/projects/modal.html
15:33:06 <imode> this language does term rewriitng by placing the whole expression in a queue.
15:33:18 <imode> s/rewriiitng/rewriting
15:33:35 <tswett[m]> Sounds just a little bit like ///.
15:33:36 <tswett[m]> Y'know, rather than BCKW or SKI, I like BCIKSW.
15:33:47 <imode> pretty much what FireFly said, just conditionally inject some instructions.
15:34:26 <kspalaiologos> this language would require having a command
15:34:33 <kspalaiologos> to skip chunk of N instruction forward
15:34:43 <kspalaiologos> *s
15:34:55 <imode> yeah, you could probably use delimiters to mark the sections.
15:36:02 <kspalaiologos> it's perfectly doable
15:36:06 <kspalaiologos> I like it alot
15:36:19 -!- APic has joined.
15:36:43 <kspalaiologos> but
15:36:49 <kspalaiologos> you could insert just one instruction at the time
15:37:06 <kspalaiologos> unless you have a instruction buffer
15:37:16 <kspalaiologos> to store the instructions untill you issue a run command
15:38:03 <imode> hrm.
15:38:23 <kspalaiologos> to minimally represent such machine, I'd use something subleq-like
15:38:39 <kspalaiologos> but, you have to use harvard architecture then
15:38:57 <kspalaiologos> so another instruction has to be added, possibly a memory poke
15:39:18 <kspalaiologos> and the subleq would need to be tweaked too, to change it to an conditional insert operation
15:39:30 <kspalaiologos> (instead of an impossible jump)
15:39:44 <imode> Iiii don't think you need to add another instruction memory. the point is you have a single instruction memory, a finite buffer to hold linear reads through the instruction memory, and you're only allowed to read the instruction memory _once_. assume main memory can't hold the entire contents of the instruction memory, either.
15:40:04 <kspalaiologos> it's defeat of purpose I suppose
15:40:16 <imode> you seem to give up a lot.
15:40:39 <kspalaiologos> i'm not giving up
15:40:44 <kspalaiologos> why make your life easier, when you can make it harder
15:40:49 <imode> attaboy.
15:41:12 <imode> I think the issue would be conditional instruction insertion, yeah.
15:41:34 <kspalaiologos> I first thought of this idea as of physical processor
15:41:38 <imode> if your execution unit held, say, 32 instructions.
15:41:57 <imode> you could load branches and larger portions in pieces and execute them incrementally.
15:42:03 <kspalaiologos> yup
15:42:09 <kspalaiologos> that's the good solution for me
15:42:20 <imode> but at that point you'd literally just be emulating paging from disk.
15:42:37 <kspalaiologos> continuing with the cpu, it would have a bus transferring instructions and 32-byte buffer
15:42:49 <kspalaiologos> when you send a store instruction it adds a character to the buffer
15:43:07 <kspalaiologos> the cpu interprets zero as a nop, so you flush the buffer to cpu pipeline by padding out the buffer with N bytes
15:43:23 <imode> yeah, which corresponds to a run of 0's.
15:43:27 <imode> in the instruction memory.
15:43:40 <imode> I think you can treat the head of the buffer as the "fetch area", too.
15:43:44 <kspalaiologos> yeah
15:43:56 <imode> meaning if an instruction hits the head of the buffer (address N for memory size N+1).
15:44:02 <imode> you execute it.
15:44:23 <imode> that sends the appropriate signals to the control unit, and you can treat the whole buffer as a register area I guess?
15:44:23 <kspalaiologos> that seems like a good idea to eliminate the flush instruction
15:44:39 <kspalaiologos> it would make things really sticky though
15:45:02 <imode> you could probably just add a flush instruction. I don't know if you'd need it, though.
15:45:08 <kspalaiologos> it's not needed
15:45:14 <kspalaiologos> I've been talking about the register area
15:45:36 <kspalaiologos> it would resemble befunge alot
15:45:57 <kspalaiologos> so the cpu would get pumped, say, 10x10 "2d array" of data
15:46:00 <imode> meaning, code size and such. if I was concerned about instruction memory sizes, I'd want to reduce the amount of times I needed to add nops.
15:46:22 <imode> 32 bytes of all zeroes is expensive.
15:46:27 <kspalaiologos> and it would get executed in von Neumann architecture style in a huge playground
15:46:34 <kspalaiologos> so you could add a flush instruction, why not
15:46:52 <kspalaiologos> but, looking forward
15:47:21 <kspalaiologos> it may get impractical as heck as a whole idea
15:47:32 <imode> I dunno. it seems pretty practical.
15:47:42 <imode> linear reads for certain devices are incredibly fast.
15:47:46 <imode> while random seeks aren't.
15:47:58 <kspalaiologos> I'm talking about the way you program it
15:48:03 <imode> aha.
15:48:05 <kspalaiologos> it seems a bit tough to get something big up and running
15:48:11 <imode> yeah... you'd definitely need some kind of delimiter.
15:48:13 <kspalaiologos> it would be quite performant
15:48:47 <imode> i.e some kind of ?(...) instruction format that enqueues the stuff between the parens/delimiters if, say, the current memory cell is != 0.
15:49:33 <imode> hm.
15:49:51 <kspalaiologos> this seems right
15:50:23 <imode> actually.
15:50:50 <imode> it could both enqueue the stuff inside the delimiters, as well as another ? and a copy of the body.
15:50:59 <imode> so ?(...) -> ...?(...)
15:51:06 <imode> this is how you'd form loops.
15:51:13 <kspalaiologos> so you'd make a do...while
15:51:19 <imode> nah this is just while
15:51:19 <kspalaiologos> i think it's not a good idea
15:51:25 -!- fungot has joined.
15:51:34 <imode> say you have ?(1,2+)
15:51:47 <imode> and the condition for ? is true.
15:51:58 <imode> then you'd enqueue 1,2+?(1,2+)
15:51:58 <kspalaiologos> so if stack has 1 on top, push 1, push 2 and sum it
15:52:06 <kspalaiologos> so stack has 3 at the top
15:52:13 <imode> yup.
15:52:17 <kspalaiologos> but at the first one, you'd first put 3 at the top
15:52:24 <kspalaiologos> then check is the value truthy
15:52:31 <kspalaiologos> it is, so execute the block again
15:52:38 <kspalaiologos> so you have a 3 and a 3 on stack?
15:52:48 <imode> yeah. and this would keep going on.
15:52:54 <kspalaiologos> for how long?
15:53:00 <imode> I mean, forever.
15:53:03 <kspalaiologos> until you have a truthy value?
15:53:10 <kspalaiologos> so well, forever
15:53:20 <imode> 1 ?(1) is an infinite loop.
15:53:22 <kspalaiologos> it doesn't seem quite right
15:53:28 <imode> because you first push 1.
15:53:30 <kspalaiologos> so ?(1) is infinite loop too?
15:53:34 <kspalaiologos> brb, excuse me
15:53:36 <imode> no, because your stack is empty.
15:54:31 <imode> you first push 1, then you pop the stack and check if it was 0 or not. if it was truthy, enqueue 1?(1). if it was falsy, just dequeue everything between delimiters.
15:55:09 <imode> so your stack alternates between empty and 1, and your instruction queue alternates between ?(1) and 1?(1)
15:55:42 <imode> huh.
15:55:54 <imode> that's actually really interesting.
15:56:59 <kspalaiologos> I get it now
15:57:02 <kspalaiologos> but if you had
15:57:06 <imode> to make an 'if' statement, you could do <condition> ?(<body> <falsy>)
15:57:14 <kspalaiologos> a tape instead of a stack, proper movement and the incrementation
15:57:17 <kspalaiologos> you have literally brainfuck
15:57:28 <kspalaiologos> the if statement is condition[body[-]]
15:57:40 <imode> 1, 2 < ?(1, 2+ 0)
15:57:56 <kspalaiologos> but, doesn't it lose it's linearity?
15:58:01 <kspalaiologos> you have to store the loop buffer somewhere
15:58:14 <imode> that'd get turned into 1, 2 + 0 ?(1, 2+ 0)
15:58:14 <kspalaiologos> that is at least as big as a loop
15:58:36 <kspalaiologos> and the nested ifs/loops would kill the processor because of amount of cache required
15:58:44 <imode> remember, we are _always_ reading from the instruction cache.
15:58:52 <imode> unless we tell the processor not to.
15:58:56 <kspalaiologos> hm
15:59:03 <imode> and yeah you'd need a buffer large enough to hold the loop in question.
15:59:05 <kspalaiologos> so the cache would have to be really big
15:59:07 <imode> and other stuff.
15:59:11 <kspalaiologos> to do something measurable
15:59:14 <imode> well, no, you could always load it in pieces.
15:59:23 <kspalaiologos> inpractical imo
15:59:35 <imode> 32 bytes would be enough. you could just conditionally "switch on" or "switch off" the read.
15:59:45 <kspalaiologos> yeah
15:59:51 <kspalaiologos> but imagine you had for example
16:00:03 <kspalaiologos> a condition checking is there enough memory to run progra
16:00:04 <kspalaiologos> m
16:00:12 <kspalaiologos> yes > go ahead, no > bail out
16:00:14 <imode> why would you need that, you can always ensure there is.
16:00:19 <kspalaiologos> illustration
16:00:23 <kspalaiologos> i cant come up with better example
16:00:40 <kspalaiologos> you have to put the program code inside the if clause, because if you placed it behind it
16:00:47 <kspalaiologos> there would be no way to exit the program in "no" case
16:00:53 <kspalaiologos> so there would exist some breaks in pages
16:00:56 <imode> so assume there's a large loop with a small conditional.
16:01:07 <imode> 1?(...), for example.
16:01:11 <kspalaiologos> yeah
16:01:44 <imode> there are ways to break up a larger loop into multiple smaller loops by essentially chaining together constructed if statements.
16:03:02 <imode> all you have to do is pass a condition from the start of the loop to each of the pieces, which will in turn pass the condition down to each of the pieces after it.
16:03:11 <imode> all the way until you reach the condition again.
16:03:40 <imode> there may even be a shorter way to do this using nesting.
16:03:49 <kspalaiologos> I've been talking about nesting
16:03:58 <kspalaiologos> but yeah
16:04:03 <kspalaiologos> I think it's a gamechanger
16:04:07 <imode> right. this applies to any loop regardless of nesting depth.
16:05:38 <kspalaiologos> I can't really think in that matter
16:51:13 <imode> while loops with conditionals require duplication of their conditions.
16:51:29 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
16:51:34 -!- Lord_of_Life_ has joined.
16:51:50 <imode> ,10:,0=~?(,1-:,0=~) here's a counter from 10 to 0.
16:52:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:58:33 <imode> https://hatebin.com/cemkjeaqfw
16:58:38 <imode> a sample execution trace.
16:59:30 <imode> whoops, minor error. fixed: https://hatebin.com/yqtkiqoaqo
17:00:57 <imode> I don't think there's a way to do this _without_ duplication of the conditional.
17:02:50 <imode> if/else if/else chains are also possible.
17:06:33 <imode> what's interesting is that do-while loops are kinda cool in this spec..
17:06:48 <imode> literally just 1?(<body> <condition>)
17:07:34 <imode> you can probably get rid of ? as well, just using the beginning delimiter ( as ?, much like brainfuck does.
17:09:18 <imode> this.. also kinda weirdly mirrors how brainfuck's while loops work... huh.
17:10:17 <imode> that's interesting.
17:11:24 <imode> that means there's some interpreter of brainfuck that could only read once from its instruction memory, provided it has a circular buffer to hold instructions.
17:11:46 <imode> and that all loops are partitioned to fit in that circular buffer.
17:14:08 <imode> 'break', in this scheme, can't exist. because loop bodies are unpacked or discarded, with no end delimiter to seek to.
17:15:16 -!- Sgeo__ has joined.
17:16:44 <imode> almost more elegant..
17:16:57 <imode> no need for an instruction pointer if you accept an instruction stream.
17:17:11 <imode> and no need to rewind if you just enqueue your instructions over and over again.
17:18:02 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
17:18:25 <imode> you pay in code size, though.
17:18:48 <imode> mainly duplicated conditionals for while loops. if statements and do-while loops are pretty good, though.
17:20:27 <imode> this is interesting regarding things like character input. the instruction stream could very well be a keyboard.
17:22:35 <imode> what's also interesting is the idea of turning the read on or off. you can calculate ahead of time how much instruction memory is required for a particular program
17:24:56 -!- sftp has quit (Excess Flood).
17:25:51 <imode> while I don't think you'd gain anything (other than fast linear read performance) from this scheme, it is interesting because if you take away the idea of the instruction memory being always present, 'break' et. al. is not an option.
17:27:23 -!- sftp has joined.
17:29:11 <imode> _unless_ you include the end delimiter.
17:31:40 <kspalaiologos> it mirrors brainfuck loops
17:31:49 <imode> right. hence the above.
17:31:54 <kspalaiologos> because you purposely started with brainfuck ISA
17:32:03 <imode> not really, no.
17:32:10 <kspalaiologos> I've pointed it out before
17:32:21 <imode> didn't start out with it, no. it's a stack machine.
17:32:37 <kspalaiologos> "you have literally brainfuck", "the if statement is condition[body[-]]"
17:32:52 <kspalaiologos> yup, we started out with stack machine
17:33:15 <kspalaiologos> but the model a bit persisted
17:33:29 <imode> you can't really have anything besides brainfuck-style loops in this case, though. 'break' is impossible to formulate without a large amount of code.
17:33:30 -!- kspalaiologos has quit (Quit: Leaving).
17:33:54 <imode> he's annoying.
18:04:45 <b_jonas> fungot, have they solved the Brexit situation while I was aware?
18:04:45 <fungot> b_jonas: what does apply do its magic?" choices are " fnord" without finding anything wrong with that.
18:08:31 <Sgeo__> "To get specification conform lighting calculations set the diffuseColor to 1 1 1."
18:08:33 <Sgeo__> asdfkjhaskljfhakwehriusrhwiwu3erw
18:13:59 <Sgeo__> https://github.com/create3000/x_ite/issues/50
18:20:59 -!- sftp has quit (Excess Flood).
18:21:27 -!- sftp has joined.
18:47:45 <zzo38> Do you like the story I wrote (and also the footnotes) and have a comment of it?
18:49:21 <zzo38> Are you going to set up a NNTP for esolang? If you do not want to, I can do according to your request, but I would recommend that you do on the domain name for esolang
18:52:03 <b_jonas> which story? is this another chapter of that fantasy role-playing game with the homunculus wizard apprentice who isn't actually a homunculus but more like a mindflayer or something?
19:05:24 <zzo38> You may be confusing with an earlier one, which is not the one I mean, if you mean what I think you mean.
19:05:35 <zzo38> Rather, I mean the one starting at: http://zzo38computer.org/gurpsgame/1.ui/wiki?name=Session+1
19:06:39 <zzo38> (Session 24 is the last chapter so far.)
19:08:50 <zzo38> (And I never wrote about a homunculus wizard apprentice, I think)
19:09:45 <b_jonas> I know, he was never a homunculus, I just assumed that he's a homunculus for some reason
19:10:12 <zzo38> OK
19:10:18 <b_jonas> probably because homunculuses sometimes serve as a wizard apprentice
19:10:31 <b_jonas> or maybe wizard's servant rather
19:13:23 <zzo38> (I don't know if possibly a Frequently Asked Questions section should be added, maybe, since, some people have some questions. Anyone who has the question, put it in so that we know what the question is.)
19:17:00 <zzo38> Did you see any part of this story I linked now?
19:23:19 <b_jonas> I had seen some parts earlier, but not the recent chapters
19:25:04 <zzo38> OK. Do you have comments of it? (whether the earlier or the recent ones)
19:25:34 <b_jonas> no
19:25:48 <zzo38> OK
19:26:47 <b_jonas> also, as for characters, I've seen a restaurant menu sign, printed in somewhat large size on a fixed sign (rather than a movable paper menu), where "fi" in words like "fish" were replaced by a crossed out box
19:28:06 <zzo38> Badly implemented ligaturing, I suppose
19:28:18 <zzo38> (maybe)
19:28:33 <b_jonas> yep
19:29:12 <b_jonas> but this is the first time I saw it in print, rather than on computer screen
19:30:44 <zzo38> Ligaturing should be implemented in the font metric file (for arbitrary sequences of characters) only, and if trying to implement a font with compatible metrics, they would have to ensure all of the ligatures are also implemented, or else to make the glyphs in a way that a kern will work just as well.
19:31:11 <b_jonas> also, after this vacation I had, if anyone tries to claim that "SS" is still the uppercase of "ß" in any real sense, I won't believe them. I've seen lots of different signs using "ß" in all-uppercase text.
19:37:24 <zzo38> OK
19:54:37 <b_jonas> other random observations from vacation. in the Dortmund hbf station, the S-Bahn station has platforms on both sides of the S-Bahn, it opens doors on both sides, but people are directed to enter the train on one side and leave on the other side.
19:55:01 <b_jonas> this is an interesting arrangement for a high throughput train station that I'd never seen before. I like it.
20:25:31 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66395&oldid=44458 * Voltage2007 * (-2) /* Commands */ Grammatical errors
20:27:25 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66396&oldid=66395 * Voltage2007 * (+11) /* Examples */ Fixed spacing
20:28:38 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66397&oldid=66396 * Voltage2007 * (+0)
21:19:14 -!- arseniiv has quit (Ping timeout: 240 seconds).
21:25:29 <imode> https://hatebin.com/qizljpgdlm
21:26:07 <imode> conditional breaks add a lot.
21:26:20 -!- heroux has quit (Ping timeout: 276 seconds).
21:27:31 -!- heroux has joined.
21:35:31 -!- heroux has quit (Read error: Connection reset by peer).
21:40:33 -!- heroux has joined.
21:50:23 -!- heroux has quit (Read error: Connection reset by peer).
21:51:01 -!- heroux has joined.
21:53:19 -!- Lykaina has quit (Quit: leaving).
21:58:15 -!- heroux has quit (Read error: Connection reset by peer).
21:58:25 -!- heroux has joined.
21:58:27 <zzo38> Some people are discussing parsers on comp.lang.postscript, and I think I might have started it.
21:58:39 <b_jonas> nice
22:15:36 -!- heroux has quit (Read error: Connection reset by peer).
22:16:49 -!- heroux has joined.
22:18:15 -!- heroux has quit (Read error: Connection reset by peer).
22:21:47 -!- heroux has joined.
22:22:35 -!- heroux has quit (Read error: Connection reset by peer).
22:26:48 -!- heroux has joined.
22:42:45 -!- heroux has quit (Read error: Connection reset by peer).
22:43:12 -!- heroux has joined.
22:46:04 <Sgeo__> Is this rude or am I managing to not let my annoyedness show?
22:46:05 <Sgeo__> "Am I understanding correctly that X_ITE's behavior is an intentional deviation from the spec? I wonder if there could be an option or some code to enable closer conformance to the spec (although I understand there might be performance problems determining how many channels an image actually has), or at least some documentation on intentional deviations from spec.
22:46:05 <Sgeo__> "
23:13:47 <esowiki> [[Emojicode]] N https://esolangs.org/w/index.php?oldid=66398 * MiroslavRD * (+19) Redirected page to [[Emoji]]
23:17:14 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66399&oldid=66226 * MiroslavRD * (-16)
23:17:50 <esowiki> [[Hello world program in esoteric languages]] M https://esolangs.org/w/index.php?diff=66400&oldid=66391 * MiroslavRD * (+215)
23:29:54 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66401&oldid=66399 * MiroslavRD * (+58)
23:30:58 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66402&oldid=66401 * MiroslavRD * (+13)
23:31:29 <zzo38> I think that is fine, although I do not know the answer of the quoted question.
23:34:57 -!- heroux has quit (Read error: Connection reset by peer).
23:35:32 -!- heroux has joined.
23:40:02 <Sgeo__> I mean, it makes sense that what X_ITE does is much better than what the spec says to do. But it's still against spec
23:40:19 <Sgeo__> (X_ITE uses diffuseColor regardless of if the texture is RGB or grayscale)
23:41:02 <zzo38> I do think it should be documented, and a compatibility mode would be good, I think, but I don't maintain that software.
23:41:22 -!- heroux has quit (Read error: Connection reset by peer).
23:46:27 -!- heroux has joined.
←2019-09-28 2019-09-29 2019-09-30→ ↑2019 ↑all