< 1696291903 390150 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I have installed Xfig 3.2.8 and already found two things wrong that I corrected; one is that one file doesn't check if it should use Xaw3d or not (and therefore won't compile without Xaw3d), and other is that clicking the rulers to scroll will always scroll the same amount instead of depending on where you clicked on. < 1696291979 424899 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Fix amounts scrolling is still possible by pushing the arrows, though) < 1696292586 769726 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Although, the scrolling working is not really a bug; it is documented. But, it is inconsistent with xterm.) < 1696293166 293690 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :In future, hopefully function to be added can include: additional keyboard commands (e.g. quick access to object attributes), text with TRON code, and possibly some others too. < 1696293996 886680 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 248 seconds < 1696294051 659340 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1696297958 598698 :Noisytoot!~noisytoot@sourcehut/user/noisytoot QUIT :Remote host closed the connection < 1696298383 953626 :Noisytoot!~noisytoot@sourcehut/user/noisytoot JOIN #esolangs Noisytoot :Ron > 1696300647 936003 PRIVMSG #esolangs :14[[07User:GUAqwq14]]4 10 02https://esolangs.org/w/index.php?diff=117365&oldid=117230 5* 03GUAqwq 5* (-1959) 10Replaced content with "==My esolangs== * [[Tetrastack]] (TC) * [[Transet]] (TC)" > 1696300774 301542 PRIVMSG #esolangs :14[[07Transet14]]4 10 02https://esolangs.org/w/index.php?diff=117366&oldid=117356 5* 03GUAqwq 5* (-3) 10 < 1696302044 830016 :ais523!~ais523@user/ais523 QUIT :Quit: sorry about my connection > 1696302425 396246 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117367&oldid=117354 5* 03Lilchiky 5* (+4) 10/* +4 bytes */ < 1696302972 977531 :moony3!moony@hellomouse/dev/moony QUIT :Ping timeout: 255 seconds < 1696303006 406160 :moony!moony@hellomouse/dev/moony JOIN #esolangs moony :Kaylie! (she/her) > 1696306543 638940 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117368&oldid=117367 5* 03Lilchiky 5* (+240) 10two new commands! > 1696306645 412505 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117369&oldid=117368 5* 03Lilchiky 5* (+32) 10/* Truth machine */ gets an upgrade! < 1696309282 903706 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Why doesn't Xfig set the focus of windows when they are displayed? All other Xaw-based programs (including ones that I write myself) do so automatically, without needing to adding anything special into the program. < 1696317830 500917 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I fixed it by adding a window manager setting specific for this program, although that doesn't seems best way to do it. < 1696318342 863697 :Koen!~Koen@2a01:e34:ec7c:30:20cb:c65b:a88:274a JOIN #esolangs * :Koen < 1696320742 105065 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1696322241 829233 :sprout_!~quassel@2a02-a448-3a80-1-945d-e8f0-805c-53d5.fixed6.kpn.net JOIN #esolangs * :sprout < 1696322271 986593 :sprout!~quassel@2a02-a448-3a80-1-9caa-2abf-5a47-be39.fixed6.kpn.net QUIT :Ping timeout: 260 seconds > 1696325449 751784 PRIVMSG #esolangs :14[[07NASAL14]]4 M10 02https://esolangs.org/w/index.php?diff=117370&oldid=117318 5* 03Kaveh Yousefi 5* (-4) 10Rectified an orthographic mistake. < 1696325701 614605 :cpressey!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696326144 997380 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I haven't read the paper in detail, but to shachaf's original question, I can't see what having more than one group-based memory cell could give you over having just one, because I can't think of any case where you can't encode the information that resides in two elements of a group into a single element of a combined group.  Then again, IANAGT. < 1696326253 163302 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I think there probably groups that you can augment a FSM with, that make it Turing-complete, or make it into a PDA, etc.  I think the idea is more about investigating what groups relate to what computability classes. < 1696326277 353342 :arseniiv!~arseniiv@188.64.15.98 JOIN #esolangs arseniiv :the chaotic arseniiv < 1696326306 958921 :__monty__!~toonn@user/toonn JOIN #esolangs toonn :Unknown < 1696328752 247315 :int-e!~noone@int-e.eu PRIVMSG #esolangs :PDA seems easier with a monoid < 1696328798 859428 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(The point is, you can have pure right inverses with a a^-1 = 1 but not a^-1 a = 1. Can't do that in groups.) < 1696329470 831024 :int-e!~noone@int-e.eu PRIVMSG #esolangs :cpressey: Especially in the case of groups, the term "memory" is a bit misleading since the automaton can't inspect it. With inspection capabilities having more than one group could become useful. Without I agree that you get the same effect with direct products. < 1696329692 511158 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(There are /probably/ tricks to get a PDA with a group. I just can't work it out.) > 1696329718 520463 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Moltony112 5* 10New user account > 1696329881 648479 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=117371&oldid=117326 5* 03Moltony112 5* (+152) 10/* Introductions */ > 1696331203 320926 PRIVMSG #esolangs :14[[07Talk:Nice14]]4 10 02https://esolangs.org/w/index.php?diff=117372&oldid=117359 5* 03None1 5* (+151) 10 > 1696331247 131236 PRIVMSG #esolangs :14[[07User:None1/ToDo14]]4 10 02https://esolangs.org/w/index.php?diff=117373&oldid=117178 5* 03None1 5* (+67) 10/* Content */ < 1696331410 522629 :sprout_!~quassel@2a02-a448-3a80-1-945d-e8f0-805c-53d5.fixed6.kpn.net NICK :sprout < 1696332382 740807 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Yeah, groups might have too much symmetry to make a PDA, I dunno. < 1696332456 561004 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :For a more bizarre take, we might observe that 1 counter isn't enough to make a PDA and 2 counters is too many, so how many counters do you need to make a PDA, anyway?  1.414, perhaps? < 1696338058 203270 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :int-e: true, the automaton can't inspect the "memory", but a thought just occurred to me.  If the automaton is non-deterministic then we can think of its choice points as guesses of the value of the memory cell, and the accepting paths will be those where all of those guesses were correct.  Not sure if this is a good substitute for actually being < 1696338058 702703 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :able to inspect the cell, but it... sounds somewhat plausible. < 1696338139 382547 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I should probably read the paper, it's just that that's, like, a lot of concentration-commitment that I don't want to make atm < 1696338155 11910 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Would rather run my mouth off on IRC apparently < 1696339224 37705 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Yeah, I assumed that we were going to use non-determinism. < 1696339262 199697 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I have not read the full paper either. I skimmed for keywords, saw some hints of product constructions... < 1696339275 277807 :int-e!~noone@int-e.eu PRIVMSG #esolangs :And I checked some definitions. < 1696339545 318309 :int-e!~noone@int-e.eu PRIVMSG #esolangs :cpressey: The point I was making about monoids was basically that yes, you can actually get inspection through speculative execution, so to speak. If you have a a^-1 = 1 but no reduction for b a^-1 (b != a) or a^-1 b (b = a allowed), then thats exactly the same as popping a from a stack. And you still have product monoids, so you can have many stacks. So that'll be TC. < 1696339577 59567 :int-e!~noone@int-e.eu PRIVMSG #esolangs :"that" being "appending a^-1 to the monoid component" > 1696339828 793730 PRIVMSG #esolangs :14[[07Starfish14]]4 M10 02https://esolangs.org/w/index.php?diff=117374&oldid=107982 5* 03ApisNecros 5* (+1) 10Change link to https > 1696340413 782390 PRIVMSG #esolangs :14[[07Alpha14]]4 N10 02https://esolangs.org/w/index.php?oldid=117375 5* 03Infinitehexagon 5* (+589) 10Created page with "'''Alpha''' is an esoteric programming language that is part of a series by [[User:Infinitehexagon]] on Greek esolangs that will be a derivative of the previous esolang with more commands, less commands, or modified commands. So far it has 6 commands. {| class="wik > 1696340487 134011 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117376&oldid=117375 5* 03Infinitehexagon 5* (+69) 10 > 1696340668 247059 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117377&oldid=117376 5* 03Infinitehexagon 5* (+106) 10 > 1696340972 79630 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117378&oldid=117377 5* 03Infinitehexagon 5* (+115) 10 > 1696341217 711449 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117379&oldid=117378 5* 03Infinitehexagon 5* (+22) 10 > 1696341888 654822 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117380&oldid=117379 5* 03Infinitehexagon 5* (+180) 10 > 1696342223 462588 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117381&oldid=117380 5* 03Infinitehexagon 5* (+245) 10 > 1696342241 657364 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117382&oldid=117381 5* 03Infinitehexagon 5* (+7) 10/* Hello World */ > 1696342385 944105 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117383&oldid=117382 5* 03Infinitehexagon 5* (+43) 10 > 1696342576 723478 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117384&oldid=117383 5* 03Infinitehexagon 5* (+59) 10 > 1696342591 813733 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117385&oldid=117384 5* 03Infinitehexagon 5* (+1) 10 > 1696342677 902782 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117386&oldid=117385 5* 03Infinitehexagon 5* (+2) 10 > 1696342697 282998 PRIVMSG #esolangs :14[[07User:Infinitehexagon14]]4 10 02https://esolangs.org/w/index.php?diff=117387&oldid=116600 5* 03Infinitehexagon 5* (+14) 10/* My Esolangs (chronological order) */ > 1696343164 502319 PRIVMSG #esolangs :14[[07DStack14]]4 M10 02https://esolangs.org/w/index.php?diff=117388&oldid=51744 5* 03Europe2048 5* (+0) 10Fixed a typo. > 1696344859 84324 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117389&oldid=117369 5* 03Lilchiky 5* (+437) 10life becomes easier > 1696344959 838678 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117390&oldid=117389 5* 03Lilchiky 5* (+0) 10/* Commands */ wut happened? > 1696344989 440348 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117391&oldid=117390 5* 03Lilchiky 5* (-9) 10/* Commands */ wut happnd agen? > 1696345012 264788 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117392&oldid=117391 5* 03Lilchiky 5* (-1) 10/* Commands */ HUH? < 1696345034 14166 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696345043 487646 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi everyone! > 1696345052 293483 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117393&oldid=117392 5* 03Lilchiky 5* (+12) 10/* Commands */ this must work < 1696345096 74982 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Oh, hi +esolangs! I'm User:Europe2048 on Esolangs. > 1696345237 324716 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117394&oldid=117393 5* 03Lilchiky 5* (+7) 10/* Text to Bawkbawk */ fixin' the script < 1696345349 733841 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :I think he's a bot. < 1696345380 569017 :Europe2048!~Europe204@fableness-hydrant.volia.net PART :#esolangs < 1696345383 658962 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696345404 633548 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Hi Europe2048! < 1696345405 387 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi, anyone here? < 1696345422 106193 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi cpressey, I'm User:Europe2048! < 1696345491 110721 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :The IRC channel is quiet a lot of the time these days, but there is occasional activity.  The logs tell the story > 1696345509 731198 PRIVMSG #esolangs :14[[07Bawkbawk14]]4 M10 02https://esolangs.org/w/index.php?diff=117395&oldid=117394 5* 03Lilchiky 5* (-443) 10script doesn't work :c < 1696345558 608075 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Also, I joined Libera just now. < 1696345665 72953 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I joined Libera recently too.  The last time I was here was back in the freenode era. < 1696345872 478633 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What's your Esolangs username and how long ago did you join Esolangs? < 1696345912 154109 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu JOIN #esolangs b_jonas :[https://web.libera.chat] wib_jonas < 1696345921 653774 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :cpressey: you were here in spirit though. and in the quotes file. < 1696345967 829502 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi wib_jonas! < 1696346032 286433 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1696346063 373716 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Welcome to this server, ais523! < 1696346076 246385 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hi Europe2048 < 1696346091 239242 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey and I have both been involved with esolangs for ages (cpressey longer than me) < 1696346104 562837 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :My Esolangs username is Europe2048, what's yours? < 1696346124 529174 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ais523 < 1696346131 470102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :both somewhat predictable < 1696346133 173995 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Also, I joined at September 18. < 1696346157 105298 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Also, wow, you created a lot of esolangs. < 1696346187 757280 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I got better at it over time < 1696346204 266884 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am mostly interested in Turing tarpits and golfing languages, but the tarpits are much easier to create < 1696346236 382409 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Which of your languages needs to be improved? < 1696346285 297743 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the newer ones generally don't have a whole lot of decisions to be made when designing them – and when I do find an improvement, often it's a language of its own < 1696346312 207402 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Which languages in particular? < 1696346315 142092 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :yep, you can't really modify them, keep it or condemn it, those are the choices < 1696346323 406763 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. https://esolangs.org/wiki/Brainpocalypse_II is usually easier to implement than https://esolangs.org/wiki/Brainpocalypse, and also runs faster, but some languages find the original Brainpocalypse to be a better fit < 1696346346 609955 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the sorts of languages that can be modified easily are the sort that have lots of commands < 1696346370 921951 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. I modified https://esolangs.org/wiki/Esimpl earlier this year because the program wasn't conveying all the information that an interpreter needed < 1696346403 121843 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(and to answer your earlier question, yes, esolangs is a bot) < 1696346514 170838 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for Turing tarpits, the computational class proof is often part of the language in spirit; it is often possible to improve those < 1696346529 243200 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :typically by allowing the language to be implemented using fewer resources > 1696346535 293593 PRIVMSG #esolangs :14[[07Pokecontest14]]4 M10 02https://esolangs.org/w/index.php?diff=117396&oldid=88351 5* 03PythonshellDebugwindow 5* (+9) 10Stub < 1696346583 618213 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :that's often true for toy languages with lots of choices too, funnily. it's easier to make entirely new languages than trying to save my old interpreted languages (psz, geo and scan) < 1696346604 416443 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :wib_jonas and ais523, check out my language: https://esolangs.org/wiki/Deadfish++ < 1696346678 181251 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Note: it's high-level because you can store strings in variables. < 1696346685 580712 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: I think that sort of language is designed pretty commonly < 1696346693 539951 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are a lot of esolangs like it, and it gets hard to choose between them at some point < 1696346697 914505 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I used to design esolangs, but not as much anymore.  I still, uh, do things with, uh, languages an' stuff, but yeah < 1696346710 996915 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :not that it's a bad design, just that it's a commonly repeated one < 1696346732 552165 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :But I think my extension is the most powerful by now. < 1696346833 669259 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :you get one point from me for pretending that you are extending Deadfish instead of Brainfuck, even if in these sorts of extensions the base language is totally irrelevant because all the power comes from the extensions < 1696346906 825914 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :power in esolangs can be hard to define, when you get up to higher levels < 1696346930 836297 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(at the lowest level, you can consider X to be more powerful than Y if X can implement Y more efficiently than Y can implement X – with very low-level esolangs this is normally obvious) < 1696346968 112519 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: you said recently that Blindfolded Arithmetic is Turing-complete with just two variables. have you ever written a draft proof down for that? or did I misunderstand that and you only said three variables? < 1696346973 799620 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: no, two < 1696346976 803866 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's linked at the bottom of the article < 1696346990 521723 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oh right, there's a link < 1696346996 925357 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :http://nethack4.org/esolangs/blindfolded-arithmetic-2var.txt < 1696347065 882729 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1696347075 627890 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :ais523, this definition proves that Deadfish++ is indeed more powerful than Deadfish. < 1696347110 283563 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I'll have to look at that because two variables needs more complicated tricks than three. This is a good way to get more value out of existing interesting languages, by considering obvious restrictions. < 1696347112 818099 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Because you can't implement Deadfish++ with Deadfish - there is no input in Deadfish. < 1696347131 889519 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: most languages are more powerful than Deadfish < 1696347134 62190 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I should perhaps get back to trying to figure out how the restricted versions of Amycus work < 1696347159 949449 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :today I have been trying to find the minimum Turing-complete value of d in Spiral Rise < 1696347208 179521 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm think it's likely that 3 is possible – instead of implementing a tag system, you would implement a Couplet 2C variant < 1696347227 298345 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(which is more powerful than tag in terms of efficiency with which it can implement things, so it'd be a good change anyway) < 1696347258 458740 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :2 does not seem obviously impossible, but is a very obnoxious language to program in < 1696347288 945961 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :obviously you can't do 1, because "divmod by 1" does not have any computational power < 1696347306 625903 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, minimum Turing-complete *integer* value < 1696347310 827802 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Spiral Rise technically works on non-integers < 1696347355 771362 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :So you can do Spiral Rise on 3π? < 1696347411 459338 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the language would be defined – it might be hard to implement though < 1696347443 751296 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :as for blindfolded arithmetic, https://esolangs.org/wiki/Analytical_Engine_Programming_Cards , which claims to be kind of a reconstruction based on Babbage's plans, somehow uses 50 digit wide numbers, with full multiplication of two 50 digit numbers to 100 digits, and full division of 100 digits by 50 digits to 50 digits divisor and reminder. the < 1696347444 251348 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :50 digits sounds way too many to me, and I don't understand why anyone would plan for that wide numbers. I understand why we want SIMD on wide registers today, but nothing that would allow that is present in the language that they describe, so it's not about that. < 1696347447 556274 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it turns out that, once you go beyond the rationals, there isn't a reliable way to tell whether an expression evaluates to 0 or not < 1696347486 232146 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: the Analytical Engine's predecessor was intended to produce tables of various expressions < 1696347499 868935 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: I still say that there is a decently easy way for quadratic irrationals (expressions with numbers, field operations, and square roots), despite that when I once tried to implement the algorithm I failed < 1696347504 437880 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :presumably some level of accuracy was required in the output, and more accuracy would be required in the intermediate calculations for the output to be right < 1696347533 279429 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: ok, but I don't think even that would require 50 digits < 1696347554 619444 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I get the feeling that Babbage was pretty ambitious < 1696347566 42929 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and computer programming was pretty undeveloped at the time < 1696347576 670319 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so maybe Babbage thought it'd require 50 digits, even if he was wrong? < 1696347621 33933 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I get the feeling that Babbage is irrelevant here, and people are just projecting whatever retrofuturistic thing they want to imagine to Babbage because it sounds better that way, sort of like with Leonardo da Vinci < 1696347638 20774 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :(but you could say that I do the same with Gauss so who am I to say that) < 1696347652 421564 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What are you guys talking about? < 1696347666 645046 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :Europe2048: https://esolangs.org/wiki/Analytical_Engine_Programming_Cards < 1696347698 423714 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: https://en.wikipedia.org/wiki/Nested_radical implies it can be done for square roots specifically < 1696347726 684125 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :unless, there is some sum of square roots that can't be proven to equal or not equal 0 < 1696347793 147070 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: yes it can be done for square roots, the question is just whether you can consider that algorithm easy, and I am arguing that you can < 1696347824 781715 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there is complexity due to the distinction between the positive square root and the negative square root < 1696347836 663903 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :How do you output in Babbage? < 1696347853 113775 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :you can also do computations with roots of arbitrary algebraic numbers described by a polynomial of which it is a root and some bounds, but nobody claims that the algorithms for that one is easy, and there are very few implementations for that < 1696347904 458035 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: no, I don't believe there is complexity from the sign of the square root. you only allow real numbers and positive square roots, and that doesn't cause any complexity. < 1696347933 61645 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the algorithm is so simple that it's taught to high school mathematics competition preppers at least < 1696347971 333954 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: the syntax b_jonas linked appears to have a P command that prints numbers < 1696348041 401830 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :as for Babbage, are there any esoteric programming languages that claim to be based on *Leibniz's* plans instead of Babbage's? Leibniz lived much earlier so I think you could get away with much more freedom there, yet everyone refers to Babbage instead. < 1696348073 880315 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :ais523: No, I meant to output characters. < 1696348112 274431 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think the Analytical Engine could output characters < 1696348129 281401 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :after all, it was intended for calculating tables of numbers < 1696348133 321297 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and ASCII hadn't been invented yet < 1696348170 210138 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or even Hollerith < 1696348210 201301 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Anyways, what should I do with AE? < 1696348283 277453 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you don't necessarily have to do anything with it < 1696348286 819456 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :oddly enough, https://esolangs.org/wiki/Analytical_Engine_Programming_Cards seems to describe that it can output characters, near the bottom of "Attendant Cards", which would be statements executed by the human operators of the machine, so presumably the machine just instructs them to copy the table header from the card to the printout with a pen < 1696348366 176182 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :wib_jonas: Did Leibniz have any ideas for machines other than https://en.wikipedia.org/wiki/Stepped_reckoner and the https://en.wikipedia.org/wiki/Calculus_ratiocinator ?  The former might be a tad too basic, and the latter a tad too ambitious... < 1696348458 404090 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Let's talk about something else. < 1696348463 896783 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :cpressey: I'm thinking of the latter. it's too ambitious, which is exactly why you can write good fan fiction about it, since it's not a specific planned machine but a goal for what the machine should do < 1696348537 829661 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Europe2048: what languages do you like?  Not just esolangs, but other languages also < 1696348543 188701 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the reason people like the Analytical Engine is that it's very well-documented and we know pretty much exactly what Babbage was planning < 1696348616 991223 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: if that's so then why is https://esolangs.org/wiki/Analytical_Engine_Programming_Cards so different from https://www.ioccc.org/years-spoiler.html#1992_buzzard.1 when both claim to be based on the Analytical Engine? < 1696348677 432678 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :Buzzard's IOCCC entry claims that the Engine would be doing blindfolded arithmetic, only with more than just six variables; while the Programming Cards has usable conditional branches < 1696348740 381223 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I can understand if the IOCCC entry uses built-in C integer arithmetic just to work as an IOCCC entry, but the blindfolded part is central to that entry and is not required for it to work as an IOCCC entry < 1696348765 913470 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it may be that not all the people have actually read the documentation < 1696348775 826210 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the entry specifically wants to show how to program blindfolded, because Babbage supposedly designed his machine blindfolded < 1696348778 379915 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I haven't, just read reports written by other people who read it < 1696348836 498142 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh right, re: conditionals, I think they might still have been in development when Babbage died? < 1696349106 409699 :FreeFull!~freefull@46.205.214.226.nat.ftth.dynamic.t-mobile.pl JOIN #esolangs FreeFull :FreeFull < 1696349138 360212 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :cpressey: Python & JavaScript. < 1696349164 300940 :Europe2048!~Europe204@fableness-hydrant.volia.net TOPIC #esolangs :Welcome to the 20th international hub of esoteric programming languages of the noncriminal sort, and unicorns! | https://esolangs.org | logs: https://logs.esolangs.org/ < 1696349583 465652 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: I'm actually reading Ada Lovelace's notes, she definitely mentions conditionals existing < 1696349607 445711 :Europe2048!~Europe204@fableness-hydrant.volia.net PART :#esolangs < 1696349611 124686 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696349612 827778 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :hmm, that's a bit disconcerting, that means the IOCCC entry was based on a lie < 1696349652 448730 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :or at least a mistake < 1696349659 505265 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually, that was even in a bit she translated from Babbage's notes, rather than one she came up with herself < 1696349671 338881 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although Babbage didn't give details, just said conditionals would be required < 1696349730 865955 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh wow, Ada Lovelace invented single static assignment < 1696349748 945880 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…and then it took decades for compiler writers to rediscover it :-D < 1696349802 236319 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Let's talk about something else. < 1696349959 474713 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Europe2048: What do you want to talk about? < 1696349998 783883 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :for variables or functions? < 1696350022 35517 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: for variables < 1696350024 369832 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Maybe implementing my esolang? < 1696350036 757545 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :(to cpressey) < 1696350234 116193 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Europe2048: Deadfish++ looks not very hard to implement (I say this as someone who's been writing language implementations for many years though). < 1696350259 794697 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :(And also, in contrast to some languages on the wiki that are literally impossible to implement) < 1696350313 693704 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :But the real hardest part about implementing is the Unicode variables and strings in variables. < 1696350341 246292 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you're using Python, aren't you? Python 3 supports Unicode very well, and can store strings in variables that are normally used to store numbers < 1696350357 624754 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :But I don't know much about OOP... < 1696350358 337746 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I was just about to say that.  It was a pain in 2.x, but much better now < 1696350389 796068 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :"It" being Unicode < 1696350413 510897 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you don't need OOP for this, old-fashioned imperative code will work fine < 1696350415 492475 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Also, it is very hard to implement the if-else syntax. < 1696350425 368885 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Because of these problems, my language is high-level. < 1696350445 338184 :Thelie!~Thelie@2a03:2260:300c:400:61bd:fe2e:1f3c:b90a JOIN #esolangs Thelie :Thelie < 1696350456 383598 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :If you don't have much experience writing parsing code, then the "if" syntax might seem difficult, because of the nesting < 1696350517 797802 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :There's also some infix expressions and, well, not much indication of what the precedence rules are < 1696350524 915492 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am upset that efficient parser generators aren't generally easier to use (to the extent that parser combinator libraries have caught on despite having terrible worst-case performance) < 1696350570 92919 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I think I will need to be afk for a little bit now though.  Nice meeting you Europe2048 < 1696350588 812919 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Why will you afk? < 1696350624 306079 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :afk = away from keyboard < 1696350628 448167 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: dunno, the impression that I get is that people just keep making ambiguous hard to parse languages for some reason. I no longer believe the traditional narrative that old languages like Fortran had an odd grammar and ambiguities because the theory of formal languages wasn't developed yet. < 1696350650 581470 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :Modern languages are the same, so the problem can't be the lack of theory of formal languages. < 1696350681 407822 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: a good parser generator would be able to detect most reasonable ambiguities in a language < 1696350696 715253 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, to put it a better way, prove reasonable languages unambiguous, or complain if they aren't < 1696350702 729713 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :people can already detect the ambiguities, and they insist on keeping the language that way < 1696350712 156672 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I don't think the problem is the lack of tools there < 1696350719 85050 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are languages for which ambiguity checks are uncomputable, but they don't resemble anything you'd design intentionally < 1696350807 26832 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :but on the plus side, rustc now manages to parse three different syntaxes, such that not only you can link crates compiled from different syntaxes to the same runtime, but you can actually invoke macros that are written in one syntax inside a source file with another syntax. that means they can fix some of the more annoying ambiguities. < 1696350818 495551 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think lack of *good* tools is a problem – people don't currently use the tools because they aren't good enough, and thus don't get the ambiguity warnings < 1696350869 885656 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: the Rust ambiguity that bothers me most is probably that in «x.f(a)», «f» could either be an inherent impl or a trait impl < 1696350876 555588 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I am very much hoping that at some point they'll allow Foo() instead of Foo when Foo is an argumentless constructor for a struct or enum variant, and then in yet another version they *require* the parenthesis after argumentless constructors in patterns (not in expressions), to solve that ambiguity < 1696350901 898404 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :OK, let's finish talking with implementation. What do you think should be added to my language? < 1696350902 337780 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the rules for resolving the ambiguity have some really weird consequences < 1696350928 385472 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: I personally believe that Rust should have enforced case-of-first-letter for identifiers < 1696350960 170470 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: why is that one a problem? in `x.f(a)`, f can also be a trait impl from multiple different traits, so that's like ordinary clash between imported identifiers. do inherent impls make this any more complicated? < 1696350961 725277 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that would also solve that ambiguity (in addition to other annoying situations like the turbofish) < 1696351031 421515 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: basically the problem is that there is no way to disambiguate to use *only* an inherent impl and not a trait impl – the default is to use the inherent, and the only disambiguator picks the trait impl < 1696351036 279749 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: I'm not sure. I don't like case-of-first-letter rule, but I'm not sure if that's because it's inherently a bad idea, or only because it reminds me of Haskell and prolog < 1696351055 351898 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this means that, if both the inherent and trait impl exist, and then the inherent impl gets deleted, there is no way to stop the trait impl being used, so your code breaks silently in cases where you really want to use the inherent impl only < 1696351069 461572 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(unless you don't import the trait, but you might need to use it elsewhere in the code) < 1696351095 294794 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :OK, let's finish talking with implementation. What do you think should be added to my language? < 1696351125 197482 :int-e!~noone@int-e.eu PRIVMSG #esolangs :deja vu < 1696351137 460114 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: if that's the problem, can't you just define a new trait, move the method changing it from inherent to trait, because of the ambiguous syntax existing code that tries to call the old inherent method will still work, but you can disambiguate by naming the trait < 1696351175 267253 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi int-e! < 1696351186 487163 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :at one point some ruster tried to explain to me why inherent methods are different from a train method from an anonymous trait, but I forgot what the reasoning was and whether it made sense < 1696351189 935253 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: assuming you control both files in question, that probably works < 1696351276 271085 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :one ambiguity that isn't a problem in practice, but I find amusing, is the lexer ambiguity on input like «0.0» < 1696351292 814485 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which could lex as either a single float, or as "the first tuple field of the integer 0" < 1696351324 34153 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :yes, that comes up in python and languages like that. not quite 0.0, but for eg. 2.sin which you have to write as 2 .sin instead < 1696351347 387111 :int-e!~noone@int-e.eu PRIVMSG #esolangs ::t 0 . 0 < 1696351348 159603 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :(Num (b -> c), Num (a -> b)) => a -> c < 1696351368 734096 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: that actually isn't an ambiguity, it's just a consequence of using a lexer that isn't sufficiently context-aware < 1696351401 977568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :«(2.)» sin doesn't parse, after all, so the other meaning is invalid and thus it isn't ambiguous < 1696351434 595304 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am increasingly convinced that using a separate lexer is wrong, and the better solution is to improve the quality of scannerless parsers < 1696351434 757953 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :ais523: it can be an ambiguity if you have numeric literals like 0.5f or 0x4p-3 < 1696351478 113055 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: you mean on "0.f" specifically? I can't see a way to do it with the hex float < 1696351517 864237 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :0x0.A is a hex float, with A being a hex digit, but 0x0 is a number and you can try to call the .A method on it > 1696351531 794799 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117397&oldid=117386 5* 03Infinitehexagon 5* (+328) 10 < 1696351551 191875 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :or 0x0.Ap0 if you insist on the p being present < 1696351552 76654 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: I thought hex floats had a mandatory "p" specifically because of that < 1696351566 574540 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :0x0.Ap0 is a hex float, 0x0 .Ap0 is a method call on 0x0 < 1696351567 639165 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but right, I forgot they could have decimal points earlier < 1696351584 386926 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :0x0 .Ap0 isn't a method call, it's a property query < 1696351599 144843 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :it's a method call in python or ruby where this problem comes up < 1696351601 865840 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…ooh, unless you can call a hex float as a function? < 1696351607 674731 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think parsers allow that even if lexers don't < 1696351615 286062 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* even if the compiler as a whole doesn't < 1696351639 884527 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :"SyntaxWarning: 'int' object is not callable; perhaps you missed a comma?" "TypeError: 'int' object is not callable" < 1696351650 274542 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, ipython3, I was actually trying to call an int to see what the error message would be < 1696351659 787552 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :in C++ traditionally it's no problem because numeric literals are of built-in types and they don't have members so you can't subscript them. this is no longer true because of user-defined literals, but those come with their ambiguities already < 1696351667 712258 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the SyntaxWarning suggestst that the parser does understand that calling an int isn't a sensible thing to do < 1696351690 434112 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…curious that it's only a warning, though > 1696351694 311248 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117398&oldid=117397 5* 03Infinitehexagon 5* (+40) 10 < 1696351732 378446 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, because it might be dead code, and type errors happen at runtime not compile time in Python! < 1696351746 758546 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Let's stop talking about implementing my language. < 1696351747 822643 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so erroring at compile time would violate the spec < 1696351835 151203 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yep, «if False: 0()» gives a SyntaxWarning but runs without issue > 1696351838 53483 PRIVMSG #esolangs :14[[07Alpha14]]4 10 02https://esolangs.org/w/index.php?diff=117399&oldid=117398 5* 03Infinitehexagon 5* (+38) 10 < 1696351889 851060 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I really don't know Python that well, partly because a) I don't like it very much and b) I know Perl very well, meaning that I rarely have an incentive to use Python for anything < 1696351896 982761 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(other than dealing with existing code that's already written in Python) < 1696351924 10984 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :wait, do you *still* know Perl very well, even the changes from the last ten years or so? < 1696351973 371980 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: not as well as I used to, although I've been catching up to some extent recently < 1696351991 269448 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :part of the problem is that the static analysis tool I have hooked up to my editor isn't so great at modern Perl < 1696352057 960028 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…also it mislead me recently, I had a function that actually did need to "return undef;" (which is normally a classic Perl mistake), I managed to silence the warning with "return (undef);" instead > 1696352126 527276 PRIVMSG #esolangs :14[[07User:Europe204814]]4 M10 02https://esolangs.org/w/index.php?diff=117400&oldid=117237 5* 03Europe2048 5* (+20) 10 < 1696352178 6869 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :I don't understand, why is that misleading? < 1696352208 348323 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: because linters shout at you when you do it and thus you assume your code is wrong, when actually you got it right first time < 1696352235 260691 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think all this stems from the usual ambiguity about what null, undef and friends actually mean < 1696352299 140911 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :when undef represents the lack of valid data, it should become () in list context; but when it represents one valid datum (that itself represents the lack of valid data), it should become (undef) in list context < 1696352353 723562 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the former is more common, but in this case I waned the latter < 1696352355 808660 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* wanted < 1696352366 142927 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :.oO( see NONE vs None1 recently on the esowiki) < 1696352453 332704 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :and you could be explicit about it and write `return scalar();` but then that might confuse readers who don't know all the rules of perl because they'll that that means `return scalar($_);` < 1696352487 901597 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or «return scalar(())» which is 0 I think? < 1696352496 434926 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :what? < 1696352500 682995 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, no < 1696352502 780028 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm confused < 1696352536 900451 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :is there an easier way to pass a 0-element list to «scalar» than «scalar(@{[]})»? < 1696352608 380211 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah right, (0,1,2) parses as a comma expression in scalar context, not a list literal, so you really do need @{[…]} to force list context < 1696352628 214634 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :that question doesn't literally make sense, but for what you want, perhaps `scalar(my@k)` or, if you're golfing, `scalar(my@~)` < 1696352649 91146 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wib_jonas: I most commonly use «scalar» to get at the length of an array < 1696352674 184238 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :you can, but that's what the 0+ grenade is for < 1696352721 680207 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you're golfing, «scalar(@_)» (outside a function) :-) < 1696352739 195445 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :pick a variable that doesn't need to be declared < 1696352820 743805 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(or, well, if you're golfing normally you don't turn strict mode on, so that you don't need to declare anything) < 1696352824 959537 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`perl -weuse strict; print "A=", scalar(@~); < 1696352827 228022 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :A=0 < 1696352830 964659 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :`perl -weuse strict; print "A=", scalar(@k); < 1696352832 28840 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Global symbol "@k" requires explicit package name (did you forget to declare "my @k"?) at -e line 1. \ Execution of -e aborted due to compilation errors. < 1696352852 833178 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :punctuation variables are implicitly in main:: regardless your current package, and don't need to be declared < 1696352905 594139 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :the drawback is that most punctuation variables with @ sigil don't get recognized as an interpolation in a string-like literal, only with a $ sigil < 1696352917 69995 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :but in your case with scalar that's not a problem < 1696352967 10941 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't commonly interpret arrays into strings anyway, unless I badly need to use $" as the separator rather than $, < 1696352977 883231 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* interpolate < 1696353062 591874 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually, more recently I've generally been doing the commas "by hand" – probably influence from all the Rust programming I've been doing < 1696353164 189267 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu PRIVMSG #esolangs :perl's syntax rules are arcane and I may have misrepresented them above by the way < 1696353377 867652 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :I'm here! < 1696353397 336408 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :BEGIN{} is possibly one of the hardest-to-implement constructs in any practically used language, which is impressive given how innocent it initially looks (and given that there's an END{} which is apparently symmetrical but actually not) < 1696353461 964732 :wib_jonas!~wib_jonas@business-37-191-60-209.business.broadband.hu QUIT :Quit: Client closed < 1696353635 971511 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: really we should have a guide on how to implement esolangs, but I'm not sure whether there's anyone who'd be in an appropriate place to write it < 1696353646 210293 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is normally easier than implementing non-esoteric programming languages < 1696353682 427741 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Yeah, non-esolangs are much more complex than esolangs. < 1696353698 775983 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Take, for example, Python and LOLCODE. < 1696353716 291279 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :LOLCODE is basically a simple practical language with swapped-out keywords < 1696354660 584468 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Anyone? < 1696355668 960227 :chiselfuse!~chiselfus@user/chiselfuse QUIT :Remote host closed the connection < 1696355683 740126 :chiselfuse!~chiselfus@user/chiselfuse JOIN #esolangs chiselfuse :chiselfuse < 1696357102 783580 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi chiselfuse! < 1696359763 619958 :cpressey88!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696359983 630888 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Ping timeout: 245 seconds < 1696360020 315109 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :yeah, I don't think there's much to say about how to implement esolangs in general that doesn't apply to implementing any programming language. if the esolang is hard to implement with traditional techniques, that's because it has some unique twist that is specific to that one esolang and so you the writer of that esolang-implementation book won't predict it. < 1696360186 606900 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi b_jonas! < 1696360253 603475 :cpressey88!~cpressey@host-89-240-119-146.as13285.net NICK :cpressey < 1696360271 848637 :Thelie!~Thelie@2a03:2260:300c:400:61bd:fe2e:1f3c:b90a QUIT :Quit: Leaving. < 1696360539 871920 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :ais523: I differ from your position on seperate lexing.  A seperate lexer is exactly what makes "0.0" unambiguously a float.  The idea of "oh how can I can disambiguate this from someone trying to access the field "0" of the integer "0" doesn't even come up.  I consider this a good thing. < 1696360803 58996 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: yeah, but in modern C++, the lexer has a bunch of exceptions, and at least one exception to an exception, in how to lex certain digraphs. they aren't about that particular case, but still < 1696360851 191499 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :(and ruby's lexer and parser handily beats that in its odd rules and exceptions and exceptions to exceptions and whitespace-dependence) < 1696360861 923679 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I also think that since there is no field "0" of integer "0", that it makes sense. However, in C the /* for beginning of comments is like two tokens that would be able to go together, so that is not as sense. < 1696360881 374789 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :(though I think for ruby it's only at parsing stage, not the lexing stage) < 1696361064 546784 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What are you talking about? < 1696361074 667820 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Also, hello! < 1696361333 626808 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :C comments remind me. many languages that have a nontrivial lexer or parser have their parsing rules defined such that they're easy to parse when you read the input string forward, but may be hard if you read it backwards. C comments are like this: if you have a long file with lots of instances of `/*/` and a `/**/` at the end but no other instances of `*/` then, if you read backwards, you won't know < 1696361339 632974 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :which parts of the file are comments and which aren't, each `/*/` flips them back and forth, you only find out which ones were comments when you reach the beginning of the file and find out the parity of the `/*/` markers. < 1696361412 3205 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :(this gets worse with modern C++ R-strings) < 1696361429 704700 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :so my question is, what languages do you know of that are easier to parse when you read the string backwards? < 1696361707 725465 :Europe2048!~Europe204@fableness-hydrant.volia.net QUIT :Quit: Client closed < 1696361883 617504 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Ping timeout: 245 seconds < 1696362102 613723 :cpressey!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696362273 612873 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696362289 620673 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi everyone! < 1696362518 623937 :arseniiv!~arseniiv@188.64.15.98 QUIT :Quit: gone too far < 1696362721 134738 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I don't know of any that are easier backward, at least, that I can think of right now. Do you know? < 1696362978 825937 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :I have one candidate that may be easier < 1696362990 695968 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Although, I think there are some where you might have to search backward to find an ending delimiter of something) < 1696363092 202970 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :the lexer of lojban the constructed language (not programming) is easier backwards, on two counts < 1696363101 465704 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: I don't think that argument changes my mind – the separate lexer is in effect making an arbitrary decision, and even though that decision is correct this time, it could easily be incorrect in other cases < 1696363116 471331 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :having a combined parser and lexer means that you become aware that the case exists, and can choose how to resolve it < 1696363154 702140 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I think yacc's grammar is LR(1) backwards but LR(2) forwards < 1696363185 297262 :Europe2048!~Europe204@fableness-hydrant.volia.net QUIT :Quit: Client closed < 1696363240 448795 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(assuming a separate lexer, and that the lexer doesn't have a special case for "identifier followed by colon" – that special case is a hack used to get yacc to be able to parse itself) < 1696363296 3224 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :the lexer rules are defined such that you can find the boundaries of words in spoken lojban, where the speaker doesn't usually pause between every pair of words, from the sequence of phonemes, assuming you can also distinguish stressed vowels and hear the rare mandatory pauses < 1696363483 627270 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Quit: Client closed < 1696363511 923612 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :there are three common kinds of tokens (words) in lojban: grammar words which are short, substance words, and names. names end with a consonant followed by a mandatory pause, so it's easy to find their end, and you search backwards for some substrings to find the start. in substance words the syllable before the last is stressed but other syllables aren't stressed, so it's easy to find the end of the < 1696363517 929725 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :word. each substance word has two adjacent consonants as either its first or second consonant cluster, and grammar words are always single syllables with no adjacent consonants. so once you cut at pauses and after syllables following a stressed syllable, you have chunks that are made of a number of grammar words followed by a substance word, and from the first consonant cluster you can *almost* tell < 1696363523 939122 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :where the substance word starts, but that can leave two possibilities for the boundary. < 1696363595 171605 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :there is a nice but kind of hard to understand set of lexer rules that always disambiguate between those two possibilities, and it's a regular language too so in theory it's easy either forwards or backwards, but I find that in practice it's easier to understand backwards. < 1696363759 645621 :Franciman!~Franciman@mx1.fracta.dev JOIN #esolangs Franciman :Franciman < 1696363775 47838 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :you need in theory unbounded lookahead forwards for the lexing, though of course in practice very long words will be hard to understand anyway so they won't occur often regardless of this disambiguation problem < 1696363801 943861 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :ais523: that's a nice example < 1696363815 732324 :Franciman!~Franciman@mx1.fracta.dev PART :#esolangs < 1696363902 655543 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :fizzie: in the HTML render of the channel logs, for a TOPIC message, the render puts a sentence ending period right after the topic, which is confusing because the topic often ends in an URL. I wonder if we should do something about that. < 1696363923 837961 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :like put a space before the period for example < 1696363941 446692 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :uh, full stop. that's what people call a sentence-ending period. < 1696364109 896627 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :ais523: I guess if you're used to LL and LR parsers then you could even say that your basic RPN calculator language is easier to parse backwards, which is ironic because RPN syntax was designed because it's easy to interpret when read forwards < 1696364480 614443 :cpressey!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696364728 613161 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696364735 231031 :Europe2048!~Europe204@fableness-hydrant.volia.net PART :#esolangs < 1696364738 479425 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1696364744 432875 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi! < 1696364758 978009 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :fungot: when you return, will you logread and answer all our questions from when you were away? < 1696364788 450097 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What are you talking about> < 1696364862 374092 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :Europe2048: this channel is logged, so fungot will in theory be able to read what people had said earlier < 1696364912 246734 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :OK! < 1696365013 114721 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :ais523: Well, I'm not trying to change anyone's mind.  When I have a hand-coded parser I almost always use a seperate lexer. (I once had an esolang where the lexer's rules could be changed dynamically, btw.)  But, when I write in Haskell I use parsec, and having it use a seperate lexer is more hassle than it's worth.  But I usually miss it, to < 1696365013 617799 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :some degree, as it forces me to think about whitespace and such in all the places where I normally wouldn't. < 1696365278 650246 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :I have recently (in the last three years) written two different simple parsers for my dayjob, both in python, and they both have a separate lexer. One is just a tab-separated csv parser, where fields can be quoted with double-quotes in which case crs and lfs and tabs in the quoted part aren't special, and doubled double quotes represent a single double quote. so the lexer finds double-quoted fields, < 1696365284 649993 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :unquoted fields, unquoted tabs, unquoted newlines. then the parser acts turns this to a table (with possibly header lines), or a sequence of such tables separated by blank lines. < 1696365402 125042 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :One of the 'orrible things about parsing in the stone age of FORTRAN and BASIC was that space was at such a premium that Every Byte was Sacred, so puttingtokenstogetherwithnointerveningwhitespaceorsymbols was a thing.  That is something that we can luckily afford to avoid now. < 1696365447 768168 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :The other parses a custom line-oriented format, one for which I made the other end that writes it too. I designed quoted strings sensibly for this so I don't have to deal with the mess of quoted or unquoted newlines or separators. So the source file is line-oriented, newlines always separate lines, \x1F always ends a string, and you quote a control character as \x10 followed by the control character < 1696365453 890991 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :xored with \x20, plus there's a special abbreviation to quote crlfs as \x11 because they're common in the strings that I want to quote. < 1696365614 567983 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :The lexer still has to tokenize the line to various tokens, which it just does left to right with a simple regex. And then the parser takes the first word of the line, which tells what kind of line it is, and handles it accordingly to put most of the data in some custom objects (and ignore the rest), and calls some callback functions so in theory I can parse files without keeping the whole structure in < 1696365620 532164 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :memory (this is currently unnecessary, I could easily have the whole structure in memory without problems, but it doesn't cost much to plan ahead). < 1696365822 613683 :cpressey96!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696366008 627952 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Ping timeout: 245 seconds < 1696366025 884191 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey96: some early BASIC interpreters stored the parse tree rather than the text, I think < 1696366031 922033 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and pretty-printed it when you asked for a program listing < 1696366055 367363 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :presumably the parse tree either a) was smaller or b) needed to be stored anyway < 1696366108 627296 :cpressey96!~cpressey@host-89-240-119-146.as13285.net QUIT :Ping timeout: 245 seconds < 1696366162 613510 :cpressey!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696366451 256 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Client Quit < 1696366573 817742 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :ais523: really? I believe they stored a *lexed* string, encoding keywords in a consistent easy to parse way, and so printed the listing with canonical form of tokens and whitespace. the tokens are encoded as one or two bytes for compactness. still other interpreters already *input* keywords differently from ordinary identifiers, so you can't type PRINT or COS as its sequence of letters, you have to use < 1696366579 825533 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :a possibly shifted key combination for them. I think this was also used for algol besides basic. > 1696366672 281139 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Thatgaypigeon 5* 10New user account < 1696366858 612677 :cpressey!~cpressey@host-89-240-119-146.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1696366912 226618 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :my Sharp EL-5120 calculator is of the latter kind. all keywords are stored as just one byte, even though they can take up up to six character cells on screen. ABS looks like the letters A B S followed by a space, but if you enter them that way they won't mean the ABS function. < 1696366950 9796 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :representing keywords as one byte makes sense of course because the hardware is limited: slow CPU and just 20 kilobytes of RAM < 1696367218 286010 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :ACTION is more than passingly familiar with the [de]tokenization of Commodore BASIC 2.0 programs > 1696367232 202281 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=117401&oldid=117371 5* 03Thatgaypigeon 5* (+314) 10 < 1696367281 501454 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: what machine is that basic used on? > 1696367281 953339 PRIVMSG #esolangs :14[[07User:Thatgaypigeon14]]4 N10 02https://esolangs.org/w/index.php?oldid=117402 5* 03Thatgaypigeon 5* (+29) 10Created page with "''Nothing to see here... :p''" < 1696367288 709252 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :ACTION wonders if that dynamically-change-the-lexing-rules gimmick would be worth resurrecting into a new esolang < 1696367358 560650 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: oh, storing it lexed rather than parsed is possible – it's hard to tell as a user < 1696367364 779616 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :b_jonas: At least the VIC-20 and the Commodore 64, possibly other Commodore computers. < 1696367392 8393 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: I assume you don't count C where the parser needs to know if an identifier is a type for making the parse tree; or prolog where you can declare any ordinary identifier to be parsed as an infix operator from now < 1696367467 162461 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, I thought the most vexing parse was C++-specific; is there a C version of it? < 1696367503 819821 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :b_jonas: I may be confused - surely the *lexer* doesn't need to know the type of anything in C? < 1696367584 959334 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: I think it's sort-of backwards, the parser needs to know what's been declared as a type which means that the lexer has to work it out so that it can tell the parser < 1696367598 457999 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :Being able to define infix operators is of course a handy thing, but that too is mostly in the parser; to the lexer the identifier is still an identifier < 1696367626 879490 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :C-INTERCAL has lexing rules for pretty much any possible infix operator, including ones that don't exist, in case it ends up getting defined at runtime < 1696367646 72715 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have no idea if this is the usual way to handle runtime-defined syntax, but it seemed esoteric enough < 1696367693 139923 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: the lexer doesn't need to know to separate words, but there has to be a layer above the lexer but below the LR-parser or similar that changes identifier tokens to one of two different tokens, as in type name or normal identifier (more than two for C++). < 1696367746 305504 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :and prolog is similar, you can tokenize the input without such tricks, but then between the tokenizer and the parser you have to tell which identifiers are infix operators (and their precedence and fixity) < 1696367792 311918 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :You can regard this logic as "between the lexer and the parser" if you like; I see it as part of the parser; at any rate there is nothing requiring you to see it as part of the lexer < 1696367817 50064 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in OCaml, the precedence and fixity of a user-defined operator is based on its first character < 1696367839 359195 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which is a clever fix to this sort of problem < 1696367866 726586 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :I think FORTH has a different trick: it has identifiers that are executed right after they're lexed, so you can define a token so that the part of the source code after that has a custom lexical syntax instead of using the normal lexer, and this is how the " comment marker is implemented, it just reads characters and ignores them until it finds a terminating " < 1696367876 189826 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :nut I don't use FORTH much so I may be wrong here < 1696367879 152725 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(and also makes programs easier to read, you can see an operator you don't recognise whose name starts with «>» and still be able to mentally parse it because you know how the «>» operator parses) < 1696367962 411259 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :For dynamically changing the lexing rules in an esolang, I was thinking that (unlike in Bear Food, my old esolang) this facility should be used in some non-gratuitous way.  i.e. you have to change the lexing rules, in order to... perform conditionals or something. < 1696367970 710335 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :b_jonas: I don't know if it could just omit the full stop. I mean, it's maybe a little inconsistent with the other lines, but the colon kind of serves the purpose of delimiting the fixed part, and it's not that unreasonable to expect everything after the colon is just literal. < 1696367974 798356 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Alternatively, I could format it the same way quit messages are formatted. "X has quit (foo)." "X has set the topic (bar)." < 1696368029 998191 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :also J has the colon conjunction which, if its right argument is the number 0 (for example like 0 :0), will read lines from the same input as the source code so they aren't parsed like normal source code lines, and while usually you use this in a static way like bash here documents, you can invoke it at runtime conditionally or in a loop if you want < 1696368053 92302 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: did you see Advance The Wheel! < 1696368058 18488 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :fizzie: I'm fine with omitting the full stop < 1696368059 751561 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's not quite the same, but you reminded me of it < 1696368080 312151 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(it's a turning tarpit, but conditionals affect the wheel rather than the instruction pointer, meaning that the same commands run but are interpreted differently) < 1696368086 977232 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: also I think perl6 was planned to have a crazy dynamic lexer and parser where you can define syntax at runtime in ways that make me (and probably ais) shudder < 1696368095 57067 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :but I don't know how much of that ever got implemented < 1696368117 222435 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :I'll be back tomorrow, bye! < 1696368120 89717 :Europe2048!~Europe204@fableness-hydrant.volia.net PART :#esolangs < 1696368120 862691 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :I am not sure how I'm going to remember to make that happen the next time I do some changes. I was also supposed to update the HTTP server library to see if it would let me re-enable stalker mode without it hanging up. < 1696368132 399710 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: Perl 6 regex is basically a full-on context-free language parser, but I think it's implemented by backtracking < 1696368152 798777 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it wouldn't surprise me if the interpreter was supposed to parse itself with regex that could be changed at runtime < 1696368226 658620 :cpressey!~cpressey@host-89-240-119-146.as13285.net PRIVMSG #esolangs :I'll have to look at Advance The Wheel but for now I've got to call it a night < 1696368240 822438 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :fizzie: parenthesis around the topic don't help, it joins the URL just as much as the period does < 1696368954 386217 :__monty__!~toonn@user/toonn QUIT :Quit: leaving < 1696368965 937532 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :cpressey: oh, and TeX has runtime definable lexer, but only in as much as it has a table of the 256 bytes and you can assign each one to one of, I think, 17 possible built-in categories < 1696368985 745235 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :you can't define new lexing rules or anything, just say which character is which kind < 1696369069 148959 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :and the categories are actually changed during runtime in a few cases < 1696369175 686309 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :I presume you're not interested in cases where the lexer just has a small fixed number of modes with similar but slightly different lexing modes, and you can switch between those modes dynamically, like bash in which (shopt -s extglob) changes how round parenthesis are lexed in some cases, but only starting from the next line < 1696369258 961371 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :(and this is dynamic because you can run shopt programmatically so the lexer can't tell from just lexing when it will be called) < 1696369534 416434 :Noisytoot!~noisytoot@sourcehut/user/noisytoot PRIVMSG #esolangs :fizzie: How quit messages are formatted varies by client. In the protocol, they're formatted as ":X!user@host QUIT :foo" < 1696369589 941505 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :Yes, but I meant on the logs website. < 1696369709 946204 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :Noisytoot: what fizzie says, I specifically asked about the html renders on his log wibsite < 1696370193 807051 :Melvar!~melvar@dslb-092-074-060-232.092.074.pools.vodafone-ip.de QUIT :Quit: WeeChat 4.0.4 < 1696370678 390807 :Melvar!~melvar@dslb-092-074-060-232.092.074.pools.vodafone-ip.de JOIN #esolangs Melvar :melvar < 1696371140 765175 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :In PostScript you can't change the lexer but you can read from currentfile (which is the file containing the program), so that can make syntax highlighting difficult sometimes. < 1696371199 893762 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Is there regular expression library that you can use units other than bytes and Unicode? < 1696371247 276526 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :oh right, TeX can also read lines from its source file, can't it? < 1696371310 246836 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I don't think so (other than by opening it as a separate file), although you can change the catcodes in TeX < 1696371406 329281 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :zzo38: I think the C++ standard's regex library can use user-defined character types. there are serious restrictions on what such a type can be like, but I believe it can at least be bigger than what holds a unicode character. < 1696371451 646946 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :How much bigger? < 1696371539 569939 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :zzo38: any fixed size, it's a C++ template. I think it has to be trivially copiable and stuff like that so it can't own memory on heap, but I'm not sure about the details, you'll have to ask #C++ to be sure < 1696371614 820339 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :zzo38: https://en.cppreference.com/w/cpp/regex/regex_traits describes the details, but I never looked at what that does because I don't think I'll ever define custom character types < 1696371661 381500 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :OK < 1696371854 717792 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :also I think perl regexen supports UTF8-E or something similar, I don't know if you'd count that as unicode < 1696372008 178151 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :hmm, I wonder if that's true < 1696372050 169097 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Well, even if it is true, it means it is limited to the size and requires converting to UTF-8 if it is not already, anyways < 1696372062 774359 :Melvar!~melvar@dslb-092-074-060-232.092.074.pools.vodafone-ip.de PRIVMSG #esolangs :regex-applicative (a Haskell library) has the symbol type as a type parameter. You can use an arbitrary predicate to build a one-symbol matcher so there’s no real constraint on what can be used for the symbol type. < 1696372083 612971 :cpressey!~cpressey@host-89-240-119-146.as13285.net QUIT :Ping timeout: 245 seconds < 1696372242 405637 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Due to the document about a finite automaton before, I had considered you could also use an arbitrary monoid, although actually implementing such a thing may be difficult in the general case other than a free monoid. < 1696372320 287619 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :zzo38: UTF-8 and UTF8-E are self-synchronizing so the regex implementation can mostly just use a byte string matcher, except when unicode character properties or unicode case sensitivity is used. < 1696372434 956709 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Yes, I know UTF-8 has that property that you can easily use that, although you might want to define your own properties and macros, and like I said you might not want UTF-8 anyways since the data might be in a different format < 1696372571 600328 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :sure, but I can't really imagine how supporting arbitrary formats could work, so byte-based and utf16-based is what you have, plus C++'s crazy library < 1696372654 428170 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :oh, and ucs32-based, I think python can match ucs32 though probably only limited to the 21 bits of modern unicode < 1696372751 432732 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Most likely the units would be some integer, e.g. 8-bits, 16-bits, 32-bits, or 64-bits; you probably won't need more than that, although external procedures for matching might sometimes be needed (which is possible with PCRE, anyways), and some kind of syntax to be able to work such a thing (perhaps including macros, e.g. if it is UTF-8) might be of use < 1696372886 128615 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :right. existing libraries can already do 8-bit and 16-bit, with basically character sets except that the few dozen characters special for regex syntax will be interpreted as ascii. the C++ regex library can do 32-bit or 64-bit. < 1696372920 6237 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :and any byte-based matcher can do 31 bits or 63 bits if you encode the string as UTF8-G or UTF8-E respectively < 1696373009 812644 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :if you want something fancier then you'll probably have to study the research paper and implementation of TRE https://laurikari.net/tre/ and then write your own regex matcher < 1696373094 707948 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :OK, then < 1696373172 412529 :b_jonas!~x@89.134.28.172 PRIVMSG #esolangs :although there might be something for the legacy japanese encodings, you'll have to ask the ruby folks if they have a regex matcher for that < 1696374226 194509 :Koen!~Koen@2a01:e34:ec7c:30:20cb:c65b:a88:274a QUIT :Quit: Leaving... < 1696375239 274471 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1696375453 517605 :FreeFull!~freefull@46.205.214.226.nat.ftth.dynamic.t-mobile.pl QUIT : < 1696375536 628285 :user3456!user3456@user/user3456 QUIT :Ping timeout: 260 seconds