00:59:15 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:38:59 <esolangs> [[Talk:PAL]] https://esolangs.org/w/index.php?diff=155045&oldid=154935 * I am islptng * (+65) /* RACTANGLE!TELL ME WHAT YOU DID WITH MY INTERPRETER */ new section
02:24:43 <esolangs> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=155046&oldid=154941 * BigGreenHat * (+39)
02:24:49 <esolangs> [[Nah bro]] N https://esolangs.org/w/index.php?oldid=155047 * BigGreenHat * (+2646) Created page with "Nah-bro is a [[esoteric programming language]] created by [[User:BigGreenHat]] Comments start with # Top value of the stack is 0 Uses the .nah file extension == Instructions == <code> * (number) my ass # Append to stack * (index) go touch grass # Print * make (o
02:24:57 <esolangs> [[User:BigGreenHat]] N https://esolangs.org/w/index.php?oldid=155048 * BigGreenHat * (+3) Created page with "hoi"
02:28:19 <esolangs> [[Nah bro]] https://esolangs.org/w/index.php?diff=155049&oldid=155047 * BigGreenHat * (+94)
03:05:09 <esolangs> [[SeeLlash]] N https://esolangs.org/w/index.php?oldid=155050 * AnotherUser05 * (+4157) Created page with "'''SeeLlash''' is an esolang that is created by [[User:AnotherUser05]], which she finally wrote an interpreter for an esolang before making the page for it. ==Overview== The language is somewhat inspired by [[Brainfuck]], but only uses 2 values, which one of th
03:11:37 <esolangs> [[Tskastic/Command Table]] N https://esolangs.org/w/index.php?oldid=155051 * PrySigneToFry * (+4250) Created page with "{{WIP}} {{Back|Tskastic}} We have a tape, several registers(like [[Apollo (PSTF)]]), an accumulator, a stack, and can manipulate memory. We use both base-10 and base-20. Here is the base-20 table: 0123456789. = Ascii = <pre style='font-family:Cons
03:12:00 <esolangs> [[Tskastic]] https://esolangs.org/w/index.php?diff=155052&oldid=155037 * PrySigneToFry * (-5)
03:13:17 <esolangs> [[EternalGolf]] https://esolangs.org/w/index.php?diff=155053&oldid=154676 * None1 * (+49) /* Basic area */
03:13:26 <esolangs> [[EternalGolf]] https://esolangs.org/w/index.php?diff=155054&oldid=155053 * None1 * (-1) /* Basic area */
03:35:05 -!- nitrix has quit (Quit: ZNC 1.9.1 - https://znc.in).
04:36:19 <Sgeo> Watching a video about differentiation as an infinite matrix, and it shows that D^-1 * D != I, but D * D^-1 = I. This isn't possible with finite matrices, right?
04:41:54 <Sgeo> The video used D', I changed it to D^-1, but that's wrong of me, oops
05:15:17 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=155055&oldid=155033 * C0ffee * (+9)
05:17:38 -!- Hooloovoo has quit (Ping timeout: 252 seconds).
05:18:40 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=155056&oldid=154291 * C0ffee * (+26)
05:21:42 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=155057&oldid=155056 * C0ffee * (+128)
05:33:28 -!- Hooloovoo has joined.
05:35:30 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=155058&oldid=155057 * C0ffee * (-4)
05:57:05 <Sgeo> https://math.stackexchange.com/questions/816863/matrices-whose-product-is-identity-but-do-not-commute finite matrices of different sizes
07:16:38 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
07:16:43 -!- Lord_of_Life_ has joined.
07:18:06 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
07:26:17 <esolangs> [[Talk:PAL]] https://esolangs.org/w/index.php?diff=155059&oldid=155045 * Ractangle * (+254) /* RACTANGLE!TELL ME WHAT YOU DID WITH MY INTERPRETER */
07:33:07 <esolangs> [[BitChanger Busy beaver/Proof]] https://esolangs.org/w/index.php?diff=155060&oldid=154674 * C++DSUCKER * (+1496)
07:43:58 -!- Sgeo has quit (Read error: Connection reset by peer).
07:44:17 <esolangs> [[User:JIT]] https://esolangs.org/w/index.php?diff=155061&oldid=154948 * JIT * (+59)
07:44:44 -!- nitrix has joined.
07:51:05 <esolangs> [[MetaInterpreter]] M https://esolangs.org/w/index.php?diff=155062&oldid=154947 * JIT * (+68)
07:54:10 <esolangs> [[Talk:(,!)]] https://esolangs.org/w/index.php?diff=155063&oldid=133377 * JIT * (+1)
09:12:19 <esolangs> [[Blindfolded Arithmetic]] https://esolangs.org/w/index.php?diff=155064&oldid=153971 * B jonas * (+1) /* Compiling individual steps */
09:59:15 -!- craigo has quit (Quit: Leaving).
10:13:06 <esolangs> [[Special:Log/newusers]] create * KMorgan * New user account
11:14:53 <esolangs> [[Talk:ight]] https://esolangs.org/w/index.php?diff=155065&oldid=154761 * JIT * (+267)
11:17:59 -!- amadaluzia has joined.
11:22:00 <esolangs> [[Talk:ight]] M https://esolangs.org/w/index.php?diff=155066&oldid=155065 * JIT * (+6)
11:24:50 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155067&oldid=154433 * Hotcrystal0 * (-21)
11:27:00 -!- amby has joined.
11:30:00 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=155068&oldid=154925 * Hotcrystal0 * (+343)
11:30:19 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=155069&oldid=155068 * Hotcrystal0 * (+1)
11:30:27 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=155070&oldid=155069 * Hotcrystal0 * (-1)
11:30:37 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=155071&oldid=155070 * Hotcrystal0 * (-2)
11:31:07 <esolangs> [[User:Hotcrystal0/Sandbox]] https://esolangs.org/w/index.php?diff=155072&oldid=155071 * Hotcrystal0 * (+0)
11:34:56 <esolangs> [[Works in progress]] M https://esolangs.org/w/index.php?diff=155073&oldid=155026 * JHSHernandez-ZBH * (-35)
11:35:28 <esolangs> [[Leocode]] https://esolangs.org/w/index.php?diff=155074&oldid=119567 * JIT * (+130)
11:35:48 <esolangs> [[Esolang talk:Community portal]] M https://esolangs.org/w/index.php?diff=155075&oldid=154870 * JHSHernandez-ZBH * (+0) /* I made a template for april fools */
11:37:02 <esolangs> [[User:JHSHernandez-ZBH/templates/April]] M https://esolangs.org/w/index.php?diff=155076&oldid=154871 * JHSHernandez-ZBH * (-59)
11:37:20 <esolangs> [[User:JHSHernandez-ZBH/templates/April]] M https://esolangs.org/w/index.php?diff=155077&oldid=155076 * JHSHernandez-ZBH * (+3)
11:39:10 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155078&oldid=155030 * PrySigneToFry * (+852)
11:47:18 <esolangs> [[BitChanger Busy beaver/Proof]] https://esolangs.org/w/index.php?diff=155079&oldid=155060 * C++DSUCKER * (-1495) I messes up and the ode returns all as looping
11:56:31 <esolangs> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=155080&oldid=155046 * JHSHernandez-ZBH * (+121)
11:56:59 <esolangs> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=155081&oldid=155080 * JHSHernandez-ZBH * (-2)
12:10:23 <esolangs> [[Tskastic/Command Table]] https://esolangs.org/w/index.php?diff=155082&oldid=155051 * PrySigneToFry * (+13)
12:13:16 <esolangs> [[User:AnotherUser05]] https://esolangs.org/w/index.php?diff=155083&oldid=123863 * AnotherUser05 * (+24)
12:52:00 <esolangs> [[Piet]] https://esolangs.org/w/index.php?diff=155084&oldid=154806 * JHSHernandez-ZBH * (+52) /* Notes */
13:08:45 <esolangs> [[MSFE++]] https://esolangs.org/w/index.php?diff=155085&oldid=151858 * Cycwin * (+981) /* Interpreter */
13:13:36 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155086&oldid=155078 * I am islptng * (+910)
13:15:42 <esolangs> [[MSFE++]] https://esolangs.org/w/index.php?diff=155087&oldid=155085 * Cycwin * (+181) /* Introduce&Syntax */
13:19:39 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155088&oldid=155038 * I am islptng * (+685) /* New category */
13:53:30 <esolangs> [[User talk:I am islptng]] https://esolangs.org/w/index.php?diff=155089&oldid=154960 * Hotcrystal0 * (+174) /* New signature for me */ new section
14:07:13 <esolangs> [[Rhombitrihexagonal]] N https://esolangs.org/w/index.php?oldid=155090 * 5anz * (+4721) Created page with "Hi, I'm 5anz, and this is my 5th esolang (counting [[brainXXXXXXXXXXx]] as one), and this one is about the Rhombitrihexagonal (or 3.4.6.4) Tiling, my personal favourite tiling, due to all the shapes it uses in a way that makes a dodecagon. It *IS* recommended yo
14:16:20 <esolangs> [[Rhombitrihexagonal]] https://esolangs.org/w/index.php?diff=155091&oldid=155090 * 5anz * (+41)
14:25:08 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155092&oldid=155086 * PrySigneToFry * (+1159)
14:26:05 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155093&oldid=155092 * PrySigneToFry * (+2)
14:26:48 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155094&oldid=155093 * PrySigneToFry * (+54)
14:28:03 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155095&oldid=155094 * PrySigneToFry * (-22)
14:28:38 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155096&oldid=155095 * PrySigneToFry * (+17)
14:32:38 <esolangs> [[User:5anz]] https://esolangs.org/w/index.php?diff=155097&oldid=148216 * 5anz * (+109) /* brainXXXXXXXXXXx */
14:32:58 <esolangs> [[User:5anz]] https://esolangs.org/w/index.php?diff=155098&oldid=155097 * 5anz * (-1) /* print("Hello, World!") */
14:35:05 <esolangs> [[Tskastic/Command Table]] https://esolangs.org/w/index.php?diff=155099&oldid=155082 * PrySigneToFry * (+110)
14:39:06 <esolangs> [[User:5anz/Sandbox]] N https://esolangs.org/w/index.php?oldid=155100 * 5anz * (+1685) Created page with "== Question 1 == === Question 1a === ==== Question 1ai ==== ===== Question 1aiA ===== ====== Question 1aiAI ====== ====== Question 1aiAII ====== ===== Question 1aiB ===== ====== Question 1aiBI ====== ====== Question 1aiBII ====== ==== Question 1aii ==== ===== Que
14:41:50 -!- Sgeo has joined.
14:44:51 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155101&oldid=154896 * I am islptng * (+731)
14:49:47 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155102&oldid=155101 * Hotcrystal0 * (+148)
14:54:38 <esolangs> [[Talk:ight]] https://esolangs.org/w/index.php?diff=155103&oldid=155066 * JIT * (+328) /* Interpreters? */ new section
14:57:07 -!- Arty has changed nick to Artea.
15:00:36 <esolangs> [[User:I am islptng/Sandbox]] https://esolangs.org/w/index.php?diff=155104&oldid=151907 * I am islptng * (+98) Redirected page to [[User:I am islptng/Silicon dioxide in a polypropylene box]]
15:02:24 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155105&oldid=155102 * Hotcrystal0 * (+246)
15:03:39 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155106&oldid=155105 * Hotcrystal0 * (+0)
15:06:18 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155107&oldid=155096 * I am islptng * (+77) /* The of , by T. , */
15:08:57 <esolangs> [[User:I am islptng/Silicon dioxide in a polypropylene box]] https://esolangs.org/w/index.php?diff=155108&oldid=155107 * I am islptng * (+147)
15:10:14 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155109&oldid=155106 * Hotcrystal0 * (-1)
15:10:30 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155110&oldid=155109 * Hotcrystal0 * (+1)
15:14:56 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155111&oldid=155067 * Hotcrystal0 * (+459)
15:15:04 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155112&oldid=155111 * Hotcrystal0 * (-459)
15:28:06 <esolangs> [[Print("Hello, World!")]] https://esolangs.org/w/index.php?diff=155113&oldid=150655 * MihaiEso * (+118) /* Implementations */
15:51:38 -!- amadaluzia has quit (Ping timeout: 245 seconds).
15:51:56 -!- amadaluzia has joined.
16:10:33 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155114&oldid=155112 * Hotcrystal0 * (+261)
16:10:51 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155115&oldid=155114 * Hotcrystal0 * (-261)
16:11:46 -!- amadaluzia has quit (Ping timeout: 252 seconds).
16:17:43 <esolangs> [[Moed]] https://esolangs.org/w/index.php?diff=155116&oldid=155015 * Dhzb * (+168) /* Dexterimperae */
16:18:53 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155117&oldid=155088 * Hotcrystal0 * (+212) /* Signature */ new section
16:19:32 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155118&oldid=155117 * Hotcrystal0 * (+0)
16:20:21 <esolangs> [[Moed]] https://esolangs.org/w/index.php?diff=155119&oldid=155116 * Dhzb * (+87) /* Special operations */
16:20:25 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155120&oldid=155118 * Hotcrystal0 * (+126)
16:20:58 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155121&oldid=155120 * Hotcrystal0 * (-27)
16:21:00 <esolangs> [[Moed]] M https://esolangs.org/w/index.php?diff=155122&oldid=155119 * Dhzb * (+44) /* Sinisterimperae */
16:22:06 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155123&oldid=155121 * Hotcrystal0 * (+35)
16:22:39 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155124&oldid=155123 * Hotcrystal0 * (-1)
16:23:11 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155125&oldid=155124 * Hotcrystal0 * (-2)
16:24:29 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155126&oldid=155125 * Hotcrystal0 * (-13)
16:26:07 <esolangs> [[Moed]] M https://esolangs.org/w/index.php?diff=155127&oldid=155122 * Dhzb * (+52) /* Future additions */
16:29:01 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155128&oldid=155126 * Hotcrystal0 * (+278)
16:32:43 <esolangs> [[User talk:Hotcrystal0]] https://esolangs.org/w/index.php?diff=155129&oldid=155110 * Hotcrystal0 * (+35)
16:34:25 <esolangs> [[Moed/Examples]] M https://esolangs.org/w/index.php?diff=155130&oldid=155014 * Dhzb * (+101)
16:35:46 <esolangs> [[Moed]] M https://esolangs.org/w/index.php?diff=155131&oldid=155127 * Dhzb * (+245)
16:37:52 <esolangs> [[User talk:PrySigneToFry]] https://esolangs.org/w/index.php?diff=155132&oldid=154794 * Hotcrystal0 * (+296)
16:38:35 <esolangs> [[User talk:ColorfulGalaxy's CA discoveries]] M https://esolangs.org/w/index.php?diff=155133&oldid=153523 * Corbin * (-32) Remove non-main-namespace article from main-namespace category.
16:40:01 -!- tromp has joined.
16:40:31 -!- FreeFull has joined.
16:44:15 <esolangs> [[User:Unname4798]] https://esolangs.org/w/index.php?diff=155134&oldid=151221 * Hotcrystal0 * (+717) Adding more to the mirror
16:44:28 <esolangs> [[User:Unname4798]] https://esolangs.org/w/index.php?diff=155135&oldid=155134 * Hotcrystal0 * (+2)
16:50:35 <esolangs> [[W110]] https://esolangs.org/w/index.php?diff=155136&oldid=142529 * Corbin * (+624) Fix credits and explain what was done. This is a notorious case of plagiarism where we should thoughtfully avoid crediting the plagiarist.
16:50:46 <korvo> esolangs: Who proved that Rule 110 is Turing-complete?
16:51:14 <esolangs> korvo: Matthew Cook proved that Rule 110 is Turing-complete. He did this around 1998, after a legal battle with his employer. His proof involved demonstrating that Rule 110 could simulate a glider system, making it undecidable whether a given glider would appear.
16:51:35 <korvo> Ooh, that's satisfying.
16:52:05 <int-e> "He did this around 1998, after a legal battle with his employer."
16:52:28 <korvo> Yeah, I'm looking to see if I can find a reputable source with a tighter date.
16:53:37 <korvo> Also yeah, the bot got the causality slightly wrong. I'm told that Transformers don't really understand the ordering of words; it's yet another parameter which they only respect to a degree. If true, then very frustrating, since it means that implications are always coded incorrectly as bi-implications.
16:54:45 <int-e> https://www.courtlistener.com/docket/4155086/wolfram-research-inc-v-cook/
16:56:17 <korvo> Haha, yeah, okay. I'm on-board with that.
16:58:59 <korvo> Nope, no good details there. But I can still cite it since it happened.
16:59:17 <int-e> TBH I can't even tell if that's the right Cook :P
16:59:32 -!- nitrix has quit (Quit: ZNC 1.9.1 - https://znc.in).
17:01:20 <int-e> Ah, this helps: https://en.wikipedia.org/wiki/Matthew_Cook#Work_with_Stephen_Wolfram
17:04:37 <esolangs> [[W110]] https://esolangs.org/w/index.php?diff=155137&oldid=155136 * Corbin * (+250) Add another reference and rephrase for precision.
17:05:03 <korvo> Yeah. WP is being gentle to avoid getting sued, but here on the West Coast it's well-known that Wolfram is a plagiarist.
17:05:27 <korvo> The general understanding is that Wolfram wanted credit for everything his grad students did. Adjunctification but without a teaching load.
17:06:26 <korvo> As such, if there's anything in a Wolfram book like NKoS which isn't cited or credited, it's reasonable to assume that he plagiarized it from one of his employee-students, didn't pay them fairly, isn't going to credit them, and might well sue them for trying to publish honestly.
17:08:39 <int-e> I wasn't sure how the timeline fit together. Now I have a 1998 date for announcing the result, a 2000/2001 lawsuit, a 2002 book, and a 2004 paper, in a sequence that makes sense.
17:10:54 <korvo> Ah, yeah. And this is all over a decade after the mid-80s work that Wolfram *should* be credited for, like the Wolfram coding for the family that Rule 110 belongs.
17:14:10 <korvo> esolangs: Who proved that Rule 110 is Turing-complete?
17:14:39 <esolangs> korvo: Matthew Cook proved that Rule 110 is Turing-complete. He did so around 1998, after initially conjecturing its Turing-completeness in 1985. Cook's proof involved demonstrating that Rule 110 could simulate a glider system, where the outcome of a glider's movement is undecidable.
17:15:01 <korvo> Amazing! Even more wrong.
17:15:22 <korvo> Feel free to poke at this. I'm done editing for now, I think.
17:15:38 <int-e> I mean it's technically possible I guess? Cook turned 15 in 1985
17:16:02 <int-e> I don't interact with LLMs if I can help it.
17:19:05 <korvo> I gave consulting advice to a few RAG startups a few years ago. The biggest lesson I learned was that a RAG pipeline needs a good language model (which is expensive) and good input data (which requires work); this is also why most of those startups cratered.
17:19:41 <int-e> . o O ( I only use rags for cleaning. )
17:19:59 <int-e> (I did look up the acronym the other day.)
17:24:07 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
17:25:53 <fizzie> I should probably stick the [LLM] prefix in the output per https://libera.chat/news/llm-etiquette -- and add some botloop avoidance to the general output format.
17:26:04 <fizzie> FTR, if the bot produces an answer in less than a minute, chances are there was no or very little esowiki sources involved in the response.
17:26:22 <fizzie> Though looks like for that query it has in fact generated "Rule 110 Turing complete" as the wiki search query, found the pages "Shorter code Burn", "W110", "CA-1" as a result, and fed all three articles in as-is since they were all short enough.
17:52:27 -!- tromp has joined.
18:01:32 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:11:38 <esolangs> [[User:Ractangle]] https://esolangs.org/w/index.php?diff=155138&oldid=154740 * Ractangle * (-50)
18:12:26 <esolangs> [[User talk:Gilbert189]] https://esolangs.org/w/index.php?diff=155139&oldid=154897 * Hotcrystal0 * (+450)
18:13:20 <esolangs> [[User talk:Gilbert189]] https://esolangs.org/w/index.php?diff=155140&oldid=155139 * Hotcrystal0 * (+79)
18:15:18 <esolangs> [[User:PrySigneToFry/Sandbox/Users that is also on other place]] https://esolangs.org/w/index.php?diff=155141&oldid=152947 * Hotcrystal0 * (+31)
18:17:00 <esolangs> [[User:Ractangle/Debating]] https://esolangs.org/w/index.php?diff=155142&oldid=152540 * Ractangle * (-298) /* CONSUMOR BUILD */
18:18:58 -!- tromp has joined.
18:19:09 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155143&oldid=155128 * Ractangle * (+55) /* Page in need of deletion */
18:37:55 <esolangs> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=155144&oldid=155143 * Ractangle * (+176) /* Page in need of deletion */
19:04:46 <korvo> https://gist.github.com/MostAwesomeDude/f31eff9e483a9e0223f14fb629c55755 I have made three conjectures, apparently.
19:05:00 <korvo> First one is "if it weren't for call/return — if it weren't for general recursion — we could compile to classic CPUs via superoptimization"
19:05:15 <korvo> Third one is "when we want to refine a function by choosing an algorithm which isn't going to overflow the stack at runtime, we can't do it merely by inspecting the function's structure and deterministically assigning a pile of loops to it"
19:11:29 <korvo> I don't know if I have a further point. I feel like I've sketched why Brand P, Brand A, and Brand F are different ways of building systems, and also why everything tends towards Brand A. I don't know if I have any interesting insights though. For all I know, it's all bunk.
20:26:09 <esolangs> [[User talk:I am islptng]] https://esolangs.org/w/index.php?diff=155145&oldid=155089 * Hotcrystal0 * (+398) /* Is there one? */ new section
21:35:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:48:37 -!- tromp has joined.
21:52:05 <esolangs> [[Special:Log/move]] move * Ais523 * moved [[Bake]] to [[User:Ractangle/Debating]]: fixing copy-and-paste move to userspace
21:52:05 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:Ractangle/Debating]]": Deleted to make way for move from "[[Bake]]"
21:52:37 <esolangs> [[User:Ractangle/Debating]] https://esolangs.org/w/index.php?diff=155147&oldid=155146 * Ais523 * (+717) set top revision after history merge
21:53:02 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[User:Ractangle/Debating]]": Author request: abandoned draft of an esolang
21:54:03 -!- ais523 has joined.
21:54:38 <ais523> <korvo> First one is "if it weren't for call/return — if it weren't for general recursion — we could compile to classic CPUs via superoptimization" ← I have noticed something similar with parsers; interior-recursion is the only grammar feature that can't be fully analyzed through brute-force analysing all possible situations
21:54:54 <ais523> (where interior-recursion refers to a use of recursion that is neither head-recursion nor tail-recursion)
21:58:25 <ais523> I wonder whether head-recursion optimisation works in general-purpose languages, or just parsers – the idea is that if a subprogram starts with a conditional recursive call to itself, you can first unconditionally run the case in which the recursive call didn't happen, and then check the condition
21:58:27 <shachaf> Hmm, I've never seen the phrase "head-recursion" before.
21:58:55 <ais523> just like tail-recursion optimisation, it changes recursion to iteration
21:59:16 <shachaf> If it's conditional I'm not sure I'd call it head position exactly. But maybe it's close enough.
21:59:24 <ais523> shachaf: I think I may have coined the phrase, although it's an obvious parallel to tail-recursion
21:59:36 <ais523> well, it has to be conditional because otherwise you get an infinite loop
22:00:20 <shachaf> Right, but unlike tail recursion, that really does move it out of head position.
22:00:28 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:00:39 <korvo> ais523: Interesting. IIUC interior-recursion is *not* covered by the symmetry of recursion, but that could be because I didn't try very hard.
22:01:14 <korvo> Like, suppose a loop takes n+m iterations; we should be able to split it into an n-iteration loop followed by an m-iteration loop. And that corresponds to breaking apart a composite endomorphism.
22:01:17 <ais523> let's see – we're replacing f() { if(x) f() else g; h; } with f() { g; while (was x) h; }
22:01:38 <ais523> ah, I see, the difference is in the timing of when the condition is evaluated
22:01:52 <ais523> and in particular it needs to evaluate to something different at each recursive level, to prevent an infinite loop
22:02:26 <ais523> the reason this works so well in parsers is that in parsers, x is a statement about what will happen in the future, and so actually evaluating it in the future is easier than evaluating it immediately
22:02:44 <shachaf> Hmm, what's a good concrete example for a parser?
22:03:09 <ais523> shachaf: so for parsing additions, you have a rule like expr ::= int | expr + int
22:03:32 <shachaf> Right, I was imagining it's for a left-recursive grammar sort of thing.
22:03:48 <ais523> and this conceptually expands to a function "try a recursive call, if it fails, parse an integer, if it succeeds, parse that plus an integer"
22:03:57 <ais523> but that definition requires backtracking which you want to optimize out
22:04:20 <shachaf> Well, the completely naive thing here just recurses infinitely, right?
22:04:24 <ais523> and the way you optimize it is by parsing the integer first, then looping parsing the additional integers that are added
22:04:31 <ais523> shachaf: if completely naive, yes
22:04:46 <ais523> in the underlying mathematical model it doesn't, but that makes it hard to translate the model into a program directly
22:04:50 <shachaf> What's the backtracking version you're thinking of?
22:05:21 <ais523> hmm, I guess you have some limit on "the input must have this many tokens for the parse to succeed" – then the backtracking works
22:05:42 <ais523> like, once you have 20 recursive calls the input has to have at least 41 tokens for the parse to be possible, you can use that to interrupt the recursion
22:06:39 <shachaf> I think parse_expr() { left = parse_int(); while (consume("+")) { left = left + parse_int(); } } is very natural, but I would normally think of it as a translation of a left-factored grammar, or something.
22:06:57 -!- tromp has joined.
22:07:01 <ais523> shachaf: right, that's the transformation I'm talking about
22:07:17 <ais523> but it's interesting because it's basically optimising a program that would be an infinite loop if compiled naively, into a program that runs correctly
22:07:31 <shachaf> Rather than as an optimization of a head-recursive function.
22:07:37 <shachaf> I'm not sure I'd call that an optimization!
22:07:57 <ais523> I think it's an optimization, but I think it's an optimization in a different semantics from the one used for normal programming languages
22:08:09 <ais523> imagine a Prolog in which an infinite loop is a failure – I think it works in that
22:08:58 <ais523> in a sense, the parser is trying to find all possible parses, the ones that go into an infinite loop aren't possible parses so we aren't trying to find them and can optimize them out
22:09:00 <shachaf> Wait, so what's the head-recursive code you would write for this? Is that in normal programming language semantics or in this other semantics?
22:09:23 <ais523> shachaf: it's in the abnormal semantics – I noticed it when working on parser theory
22:09:36 <ais523> where the optimisation is a correct one, because of the semantics being different
22:10:04 <ais523> and I was wondering whether it would work in normal languages too; and the answer seems to be "no, because in those languages you can't treat an infinite loop as equivalent to an exception"
22:10:23 <shachaf> It's interesting that the left-recursive grammar can be parsed n constant space but the right-recursive grammar needs linear space.
22:11:05 <ais523> LL(k) and LR(k) are well known classes of grammar, but I like to think of a third, LLL(k), which is LL(k) except that left-recursion is changed into iteration in order to get around this specific problem
22:11:38 <ais523> in a way, the reason that LL(k) doesn't handle left-recursion is that the semantics of the LL(k) virtual machine don't match the semantics of context-free grammars in that specific way
22:12:08 <shachaf> How is an LLL(k) grammar defined?
22:13:22 <ais523> it's basically "whenever you have to make a decision other than the number of times to make a left-recursive call before continuing, you must be able to make it by looking at the next k symbols; whenever you have a decision about the nubmer of times to make a left-recursive call before continuing, you must be able to choose 0 or >0 within k symbols, but do not need to choose the exact value"
22:14:03 <ais523> it is a little hard to express precisely, I don't think I got it quite precise there
22:17:49 <b_jonas> nice, I haven't heard of LLL before I think
22:18:27 <zzo38> About https://gist.github.com/MostAwesomeDude/f31eff9e483a9e0223f14fb629c55755 it says "A Brand P system generally maps syntax to machine operations. As such, there is no way to reorder or shuffle around syntax without also reordering the encoded operations." However, some assembly langauges might have commands to specify start at different addresses and then go back.
22:29:16 <b_jonas> I thought of a very stupid pun because of the Tetris the Grand Master 4 release. So you know I've been thinking for a while of the hypothetical tetris game that you control by pressing one of ten horizontal position keys (home row) and one of eight rotation keys (above home row)? There are three input modes for it. In mode 2, the piece is locked when you release all keys – usually this is two keys,
22:29:22 <b_jonas> but in simpler cases you can press just one key if you know it will do the right thing, or it can be three keys if you have to tuck a piece under another one. In mode 1, the piece is locked when you have released all keys and you have typed both a position key and a rotation key – you can press the keys one after another or simultaneously. In mode 0, the piece is locked only when you release the
22:29:28 <b_jonas> confirm key (space), which helps when you're not yet comfortable with the controls because it lets you preview where the piece will go before you commit. For a while I didn't know what to name these modes, but today I figured it out. Mode 2 is "chord mode" because pressing multiple keys simultaneously is called a "chord" by analogy with the piano; mode 1 is "coord mode" because you must give both
22:29:34 <b_jonas> coordinates, mode 0 is "cord mode" because the piece drops when you allow it by removing the velvet rope at the entrance of the fancy building.
22:30:21 <b_jonas> (I guess I should spell mode 1 as "coörd mode" on this channel.)
22:32:06 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
22:36:00 <zzo38> Even though it is confusing, I think that will do.
22:51:44 -!- nitrix has joined.
23:16:44 <korvo> zzo38: Sure, I'm talking more about the ISA than about the assembler's meta-syntax and directives. I have seen e.g. script-driven assemblers and table-driven assemblers, and I agree with you that some of them are definitely Brand A systems in terms of complexity.
23:26:46 <ais523> korvo: it is crossing my mind that the program/algorithm distinction probably depends on what the compilation is targeting
23:27:17 <ais523> the distinction between a program and an algorithm is that a program does not have symmetries that are not also present in the compilation target
23:27:49 <ais523> …also this implies that an interpreter can't be a program in your sense, unless there is only one possible way to write the interpreter
23:29:00 <ais523> on a different but related topic, I have been considering a language which allows directives that specify what implementation of something to use, in cases where the language specification allows multiple implementations
23:29:16 <ais523> i.e. the symmetries can be explicitly broken by the programmer, but the compiler chooses one if they aren't
23:30:58 <ais523> as a simple example, to convert SSA to machine code you have to pick an explicit order for the operations – but the processor converts it back to SSA again internally and runs the operations in parallel (as long as none of them write to memory and you don't have so many that the reorder buffer overflows)
23:31:18 <ais523> (assuming a modern high-end processor, that is)
23:31:40 <zzo38> The CROSS JOIN command in SQLite forces the order to be what is specified, but JOIN by itself allows the query optimizer to change the order.
23:34:36 <zzo38> (There is also INDEXED BY command, to force it to use a specified index, instead of deciding automatically what index to use.)
23:48:02 <korvo> ais523: Oh, yeah, if we're getting to like high-level moral suggestions then I'm thinking that there's still more work to do.
23:48:56 <korvo> I would love to say something simple like "use Brand X" but I'm not sure that that's a coherent approach. I suspect it's more like "Brand P is inevitable, Brand F is ideal, Brand A is what we keep making"
23:49:08 <korvo> Which leads to questions like "so why do we keep ending up with Brand A"
23:50:05 <ais523> because there are lots of things that are easy to express using algorithms but hard to express using functions
23:50:22 <korvo> ais523: Oh, another example is GHC's strictification analysis. Idiomatic Haskell starts out with one ordering, but then it's lost when lowering to Core, and GHC recovers an equivalent ordering later on.
23:50:28 <ais523> and a compilation from functions to programs is likely to go via algorithms, and those features are so easy to add at that stage
23:51:38 <ais523> just look at something ilke Haskell unsafePerformIO, the semantics are hard to specify, and may cause symmetry-resolutions to be observable and thus cause the functions to not be actual functions, but it's easy to implement and so it exists
23:52:11 <korvo> And the only folks who stick with functions are the type theorists whose theories might not have nice computational analogues of beta-reduction, e.g. in homotopy and cubical type theories.
23:52:11 <ais523> for almost everyone, practicality will triumph over theoretical purity, despite the theoretical benefits from being pure
23:52:20 <ais523> if you don't care about practicality then you are either a type theorist or an exolanger
23:52:50 <korvo> Ha, yeah. By zero coincidence, when I read through Coq's extraction to Haskell, I noted that it leans on GHC-specific unsafe IO.
23:54:08 <ais523> now, I think there is a big actual practical benefit from moving towards languages where the input is a true function – it makes it much easier to define whether or not an optimisation is sound
23:54:23 <ais523> and also makes notions of program correctness easier to specify
23:54:37 <ais523> but, I think for most people the benefit isn't worth the cost
23:55:09 <korvo> ais523: Oh, my second conjecture got eaten by my IRC client, and it's good too: "We can still superoptimize each basic block without worry, though." Like, I think that if we remove call/return instructions, we *can* meaningfully find optimal programs. I might go beyond that and suggest that some basic control flow can be superoptimized too.
23:55:59 <ais523> korvo: I believe that's trivially provable (for some types of language) via expressing the basic block as a finite state machine
23:56:36 <ais523> in fact, this implies that the problematic constructions are precisely those that allow for unbounded storage
23:56:37 <korvo> Yeah. I don't think they're hard conjectures. I'm not a magic visionary; I'm just going through Yanofsky's papers and finding so many gems.
23:56:48 <ais523> thinking about it, recursion on its own can't be the only problem because you can simulate it using iteration and a manual stack
23:57:11 <ais523> so if recursion blocks some nice property, iteration + a manual stack must also block it
23:57:23 <ais523> and I think the offender here is actually the manual stack, due to being unbounded
23:58:05 <korvo> Recursion is only making it difficult to determine whether two programs/algorithms are equivalent. There's still obvious homomorphisms.
23:58:31 <korvo> They're just not very good. Like, they can't even promise that the stack won't overflow.
23:59:22 <ais523> (on a side note, I *hate* the way that programming languages try to limit stack use, in preference to using the heap for big recursions – this seems to me to be arbitrarily inefficient, if a program is best expressed using the stack then doing that is both clearer and theoretically more efficient, and it should be the language implementation's responsibility to simulate as much stack as you need)