> 1730592407 744934 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=144818&oldid=144774 5* 03Yuroyumachi 5* (+161) 10 < 1730592812 182162 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( lacol knil prefix = 0:80fe::/32 ) < 1730592887 562121 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(based on a report in german that sees a provider reply to DHCPv6 requests from that subnet, in german: https://hilfe.o2online.de/dsl-kabel-glasfaser-router-software-internet-telefonie-34/dsl-ipv6-pd-dhcpv6-eventueller-fehler-seitens-o2-640621 ) < 1730592978 896376 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you can reply to a DHCP request in German? < 1730592998 777804 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I don't see why not < 1730593006 325759 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess it would be possible to reply to an HTTP request in German (at the expense of the browser not being able to understand the headers), maybe DHCP works the same way < 1730593064 23159 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I wrote "in german" twice because the second one was an afterthought while editing on an 80 character wide text prompt in irssi < 1730593111 571097 :int-e!~noone@int-e.eu PRIVMSG #esolangs :it's but one of many dangers on the internet ;) < 1730593492 805259 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(The best part of that exchange is the person who says that 0:80fe::/6 should be 0:80fe::/16 instead. Counting is hard.) < 1730593859 235264 :int-e!~noone@int-e.eu PRIVMSG #esolangs :`learn The password of the month is release incident pilot. < 1730593862 845132 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Relearned 'password': The password of the month is release incident pilot. > 1730594757 893767 PRIVMSG #esolangs :14[[07User:Yuroyumachi14]]4 N10 02https://esolangs.org/w/index.php?oldid=144819 5* 03Yuroyumachi 5* (+116) 10I love you;) > 1730594817 121250 PRIVMSG #esolangs :14[[07User talk:Yuroyumachi14]]4 N10 02https://esolangs.org/w/index.php?oldid=144820 5* 03Yuroyumachi 5* (+96) 10Created page with "--~~~~" < 1730598179 154679 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net 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 < 1730600487 843949 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :Guest67: also https://esolangs.org/w/api.php with docs at https://www.mediawiki.org/wiki/API:Main_page ; or https://esolangs.org/wiki/Special:Export < 1730603101 639991 :op_4!~tslil@user/op-4/x-9116473 QUIT :Remote host closed the connection < 1730603132 660137 :op_4!~tslil@user/op-4/x-9116473 JOIN #esolangs op_4 :op_4 < 1730607701 392193 :craigo!~craigo@user/craigo QUIT :Quit: Leaving < 1730608420 350892 :Guest60!~Guest60@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] Guest60 < 1730608835 427242 :Guest60!~Guest60@94.147.203.75 QUIT :Quit: Client closed < 1730609058 506028 :X-Scale!~X-Scale@89.214.120.20 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale > 1730609539 639280 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=144821&oldid=143524 5* 03PrySigneToFry 5* (+50) 10 > 1730609714 568169 PRIVMSG #esolangs :14[[07Basilisk14]]4 10 02https://esolangs.org/w/index.php?diff=144822&oldid=92844 5* 03PrySigneToFry 5* (+313) 10 < 1730611131 351127 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW < 1730612727 447172 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :im done with my prototype compiler! korvo < 1730612739 911576 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :wWwwW: Cool. < 1730612750 92382 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol < 1730612759 300970 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :shall i show ye? < 1730612926 153359 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Go for it. < 1730612974 541807 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :k < 1730613117 730706 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :https://collab.pi7.org/GamePlayCodeLife < 1730613159 582761 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :here it is < 1730613181 481264 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :and it doesnt work. wtf it should < 1730613707 861041 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :hey do you know why < 1730613709 218809 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i dont < 1730613711 741784 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol < 1730613961 915278 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :wWwwW: Fun. Looks like a 2D system. < 1730613972 800666 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol yea < 1730614623 946599 :ais523!~ais523@user/ais523 QUIT :Ping timeout: 245 seconds < 1730614843 320288 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :also ais523 made any progress on the L0 idea? < 1730615667 368225 :X-Scale!~X-Scale@89.214.120.20 QUIT :Ping timeout: 256 seconds < 1730615858 997881 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730616134 483874 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i can get my interpreter to work so i give up < 1730616486 445374 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730619988 505960 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1730620068 483732 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 276 seconds < 1730620069 351347 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life < 1730621265 774965 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Quit: Client closed < 1730622154 573503 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730622266 169759 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :god i have the best and worst idea for an esolang > 1730622496 415554 PRIVMSG #esolangs :14[[07Sucks14]]4 10 02https://esolangs.org/w/index.php?diff=144823&oldid=144713 5* 03ChuckEsoteric08 5* (+21) 10/* Short form */ > 1730623600 753805 PRIVMSG #esolangs :14[[07Talk:Macro14]]4 10 02https://esolangs.org/w/index.php?diff=144824&oldid=140802 5* 03Yayimhere 5* (+89) 10 > 1730624250 113246 PRIVMSG #esolangs :14[[07User talk:/w/wiki/index.php/Talk:index.php/Main page14]]4 10 02https://esolangs.org/w/index.php?diff=144825&oldid=144821 5* 03Ractangle 5* (-9) 10 > 1730624369 464756 PRIVMSG #esolangs :14[[07Pycone14]]4 10 02https://esolangs.org/w/index.php?diff=144826&oldid=144817 5* 03Ractangle 5* (+0) 10/* Truth-machine */ > 1730624384 550586 PRIVMSG #esolangs :14[[07Pycone14]]4 10 02https://esolangs.org/w/index.php?diff=144827&oldid=144826 5* 03Ractangle 5* (+0) 10/* Truth-machine */ < 1730627178 452580 :Noisytoot!~noisytoot@user/meow/Noisytoot QUIT :Ping timeout: 246 seconds > 1730627912 812541 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=144828&oldid=144177 5* 03Ractangle 5* (+29) 10/* CATEGORIES */ > 1730628712 79464 PRIVMSG #esolangs :14[[07Pycone14]]4 10 02https://esolangs.org/w/index.php?diff=144829&oldid=144827 5* 03Ractangle 5* (+0) 10/* Truth-machine */ > 1730631935 613458 PRIVMSG #esolangs :14[[07Talk:'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=144830&oldid=143384 5* 03Ractangle 5* (+180) 10 > 1730633336 797398 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 N10 02https://esolangs.org/w/index.php?oldid=144831 5* 03Ractangle 5* (+437) 10Created page with "''''Python' is not recognized''' is a variant of [['Python' is not recognized as an internal or external command, operable program or batch file.]] by [[User:Ractangle]] ==Syntax== {{cd|;}} stops the program since the code is a one-liner {{cd|:}} ta < 1730634067 793800 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer > 1730634905 9658 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144832&oldid=144831 5* 03Ractangle 5* (-23) 10/* Syntax */ > 1730635048 521232 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144833&oldid=144832 5* 03Ractangle 5* (+142) 10/* Syntax */ > 1730635062 179774 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144834&oldid=144833 5* 03Ractangle 5* (-5) 10/* Syntax */ > 1730635142 750722 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144835&oldid=144834 5* 03Ractangle 5* (+109) 10/* Syntax */ > 1730635277 571052 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144836&oldid=144376 5* 03Ractangle 5* (-327) 10/* Programm forms */ < 1730635316 172684 :leah2!~leah@vuxu.org QUIT :Ping timeout: 255 seconds > 1730635333 24916 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144837&oldid=144836 5* 03Ractangle 5* (-166) 10/* Esolangs */ < 1730635373 429792 :leah2!~leah@vuxu.org JOIN #esolangs leah2 :Leah Neukirchen > 1730635437 338768 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144838&oldid=144837 5* 03Ractangle 5* (+3) 10 > 1730635455 344673 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144839&oldid=144838 5* 03Ractangle 5* (-1) 10/* Esolangs */ > 1730635573 431816 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144840&oldid=144839 5* 03Ractangle 5* (-3) 10 > 1730635605 113747 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144841&oldid=144840 5* 03Ractangle 5* (-28) 10/* Esolangs */ > 1730635624 786663 PRIVMSG #esolangs :14[[07None,14]]4 10 02https://esolangs.org/w/index.php?diff=144842&oldid=135864 5* 03Ractangle 5* (-118) 10 < 1730635792 225049 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730635810 512718 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Read error: Connection reset by peer < 1730636169 49225 :wWwwW!~wWwwW@94.147.203.75 QUIT :Quit: Client closed > 1730636876 640155 PRIVMSG #esolangs :14[[07User:ATProtogen/Sandbox14]]4 M10 02https://esolangs.org/w/index.php?diff=144843&oldid=143966 5* 03ATProtogen 5* (-3540) 10Blanked the page > 1730639610 898550 PRIVMSG #esolangs :14[[07Joke Page14]]4 M10 02https://esolangs.org/w/index.php?diff=144844&oldid=116188 5* 03None1 5* (+42) 10/* Examples */ < 1730641394 481558 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730641622 7378 :Everything!~Everythin@178-133-29-33.mobile.vf-ua.net JOIN #esolangs Everything :Everything < 1730641954 444402 :leah2!~leah@vuxu.org QUIT :Ping timeout: 260 seconds < 1730643332 797015 :Noisytoot!~noisytoot@user/meow/Noisytoot JOIN #esolangs Noisytoot :Ron < 1730643982 482403 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de JOIN #esolangs Thelie :Thelie < 1730644550 17321 :leah2!~leah@vuxu.org JOIN #esolangs leah2 :Leah Neukirchen < 1730647069 18868 :FreeFull!~freefull@46.205.206.114.nat.ftth.dynamic.t-mobile.pl QUIT : < 1730647689 433135 :FreeFull!~freefull@46.205.206.114.nat.ftth.dynamic.t-mobile.pl JOIN #esolangs FreeFull :FreeFull < 1730648103 425428 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Ping timeout: 256 seconds < 1730648797 911076 :lynndotpy!~rootcanal@134.122.123.70 QUIT :Quit: bye bye < 1730648833 483312 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730648851 149185 :lynndotpy!~rootcanal@134.122.123.70 JOIN #esolangs lynndotpy :lynn < 1730649313 429324 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730649871 365784 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Ping timeout: 256 seconds > 1730649893 745067 PRIVMSG #esolangs :14[[07FlipFlop14]]4 10 02https://esolangs.org/w/index.php?diff=144845&oldid=144241 5* 03Ractangle 5* (-257) 10better implementation < 1730649911 535336 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1730649981 690519 PRIVMSG #esolangs :14[[07FlipFlop14]]4 10 02https://esolangs.org/w/index.php?diff=144846&oldid=144845 5* 03Ractangle 5* (+6) 10/* Implementation */ > 1730650221 182209 PRIVMSG #esolangs :14[[07FlipFlop14]]4 10 02https://esolangs.org/w/index.php?diff=144847&oldid=144846 5* 03Ractangle 5* (+55) 10/* Examples? */ > 1730650424 287264 PRIVMSG #esolangs :14[[07+++14]]4 10 02https://esolangs.org/w/index.php?diff=144848&oldid=144352 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+3) 10/* Calculator */ > 1730650512 879069 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144849&oldid=144835 5* 03Ractangle 5* (+23) 10 > 1730650634 166863 PRIVMSG #esolangs :14[[07Deadfish with gotos and input14]]4 10 02https://esolangs.org/w/index.php?diff=144850&oldid=142071 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+297) 10/* Programs */ > 1730650833 361827 PRIVMSG #esolangs :14[[07Deadfish with gotos and input14]]4 10 02https://esolangs.org/w/index.php?diff=144851&oldid=144850 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (-45) 10/* Hello, World! */ > 1730650892 694416 PRIVMSG #esolangs :14[[07Deadfish with gotos and input14]]4 10 02https://esolangs.org/w/index.php?diff=144852&oldid=144851 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (+0) 10/* Hello, World! */ > 1730650902 81124 PRIVMSG #esolangs :14[[07Deadfish with gotos and input14]]4 10 02https://esolangs.org/w/index.php?diff=144853&oldid=144852 5* 03Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 5* (-1) 10/* Hello, World! */ < 1730650906 374142 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW < 1730650922 533993 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730651421 769440 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730652818 128927 :Everything!~Everythin@178-133-29-33.mobile.vf-ua.net QUIT :Ping timeout: 248 seconds < 1730652930 505422 :Everything!~Everythin@46.211.221.97 JOIN #esolangs Everything :Everything < 1730653145 43305 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de QUIT :Quit: Leaving. < 1730653199 512544 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de JOIN #esolangs Thelie :Thelie < 1730653849 396591 :wWwwW!~wWwwW@94.147.203.75 QUIT :Ping timeout: 256 seconds < 1730653890 351562 :wWwwW!~wWwwW@94.147.203.75 JOIN #esolangs * :[https://web.libera.chat] wWwwW < 1730654019 889895 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :somebody throw a concept at me im so bored i want to make it into an esolang < 1730654116 799121 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Lojban. < 1730654132 772320 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :Lojban? < 1730654147 934865 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Give Lojban some semantics. Or pick another loglang. Or another englang. Or another auxlang. < 1730654158 938993 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol < 1730654161 980678 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Warning: it could take more than a day. < 1730654170 656646 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :oh thats ok < 1730654190 506397 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I've been working on it for like 5yrs and I'm only about 15% done. < 1730654207 52814 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :oh that long < 1730654221 256044 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Meh. I should be done before I die. < 1730654231 876610 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :then no thx im like idk lol' < 1730654263 535177 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Suit yourself. Some folks are even more ambitious; I don't think Knuth will finish his books before he dies. < 1730654277 79136 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :anything else? < 1730654314 425626 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1730654360 788254 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :hello ais523!! < 1730654432 883594 :Noisytoot!~noisytoot@user/meow/Noisytoot QUIT :Ping timeout: 272 seconds < 1730654466 870824 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :any progress on L0? < 1730654528 524768 :int-e!~noone@int-e.eu PRIVMSG #esolangs :wWwwW: most of the links on https://esolangs.org/wiki/User:Yayimhere#esolangs represents an opportunity to improve the page, adding an interpreter and working examples. And probably modifications to the languages to make them actually do something. For example, https://esolangs.org/wiki/Leadfish has no way to grow the stack. < 1730654540 908192 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wWwwW: you mean 0L? no, I was focusing on something else < 1730654548 166696 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :k < 1730654564 567864 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :sometimes I have hobbies other than esolangs < 1730654574 85933 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :makes sense < 1730654602 918630 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :int-e for interpterers im stupid, and mostly rn ik want to make smth < 1730654989 68586 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :like an esolang < 1730655699 623002 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :gimme a concept plz < 1730655754 528226 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wWwwW: so over the last couple of weeks I have been trying to implement a terminal < 1730655763 647216 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :and? < 1730655763 726863 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think terminal control codes are TC but there are some interesting things they can do < 1730655778 7400 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :yes and? thats it? < 1730655803 575050 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's the sort of thing where I think "so what is the computational power of this?", but it's hard to tell because the standards are hard to read < 1730655813 188028 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and nobody seems to implement them properly anyway < 1730655817 833762 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :lol < 1730655916 492122 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, that's the sort of thing that sometimes inspires an esolang, although it didn't with me > 1730655925 792028 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144854&oldid=136902 5* 03Ractangle 5* (-5) 10Removed redirect to [[Waretel BASIC]] < 1730655933 789618 :int-e!~noone@int-e.eu PRIVMSG #esolangs :wWwwW: but why are you designing programming languages if you can't program :-/ < 1730655942 387652 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i can < 1730655943 304988 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it did with someone else, there was a serious attempt to use terminal control codes as a portable format for representing word-processed documents, but it didn't catch on < 1730655944 78581 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i just > 1730655945 125540 PRIVMSG #esolangs :14[[07User:Ractangle/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=144855&oldid=144228 5* 03Ractangle 5* (+70) 10 < 1730655952 817404 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :never get my interpteters to work < 1730656119 639641 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Start with something simpler? I dunno, do a naive Game of Life implementation. You basically don't need parsing, just loops and arrays. < 1730656133 476167 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :no like < 1730656145 161625 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :its to the level were it makes no sense for it to not work < 1730656154 419808 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Brainfuck is a nice target for very basic parsing (you need to match brackets) < 1730656168 98675 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :yea > 1730656168 650228 PRIVMSG #esolangs :14[[07User:Ractangle/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=144856&oldid=144855 5* 03Ractangle 5* (+10) 10/* Stuff to continue */ < 1730656175 144626 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :idk how to do parsing and i never like < 1730656177 793575 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :it just never works < 1730656194 22940 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Sorry but if it never works, then you don't know how to do it. < 1730656203 207911 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: "idk" means "i don't know" I think < 1730656204 124967 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :but like < 1730656214 146384 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :everything < 1730656221 807591 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :doesntr work < 1730656227 223127 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :the other code i do does < 1730656231 170634 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :but ionterprters never < 1730656232 613074 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :idk how < 1730656252 334752 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: Ah I did misread. (But I do know what "idk" means, the mistake was elsewhere, probably skipped a word or two.) < 1730656255 185072 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I actually hate the way that it's so hard to generate basic parsers in most languages, and the ones where it's easy normally steer you into inefficient and broken ways of doing it < 1730656287 573967 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this should be a solved problem by now (it was almost a solved problem decades ago, but we seem to have been going backwards since?) < 1730656310 39714 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :i only know python for now < 1730656313 14350 :wWwwW!~wWwwW@94.147.203.75 PRIVMSG #esolangs :and its just hell < 1730656319 487976 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have great ideas for improving on it, but not the mental energy to act on them > 1730656343 580422 PRIVMSG #esolangs :14[[07User:Ractangle/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=144857&oldid=144856 5* 03Ractangle 5* (+100) 10/* Stuff to continue */ < 1730656347 722276 :wWwwW!~wWwwW@94.147.203.75 QUIT :Quit: Client closed < 1730656374 795781 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, I think a good easy-to-use parser-generator that integrates directly into the languages people use (without needing a separate build tool), and produces efficient and high-quality parsers with good error messages, would be really valuable < 1730656389 662808 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right now the common wisdom is to write parsers by hand, which is ridiculous given how good computers should be at doing that < 1730656496 907020 :int-e!~noone@int-e.eu PRIVMSG #esolangs :It seems that people love parser combinators (despite their efficiency problems)... https://github.com/csams/parsr/blob/master/parsr/examples/arith.py < 1730656519 714838 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(One of several of those for Python; I haven't used it.) < 1730656526 82940 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :parser combinators are bad in two ways: a) inefficiency, b) if you write an ambiguous grammar they don't notice and will just pick a parse arbitrarily < 1730656541 577932 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :meaning that nothing is automatically catching bugs in your parser < 1730656549 137908 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, indeed, in the grammar < 1730656571 295156 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is very easy to write an ambiguous grammar by mistake < 1730656603 968271 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and this is important for programming language creators, when designing their language < 1730656631 515083 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a parser-generator that verifies there are no ambiguities can be used to help debug your language specification, by ensuring you haven't accidentally created a situation where the same byte sequence means two different things < 1730656650 535129 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(although ideally to make this work, there shouldn't be a separate lexer, in case there are lexing ambiguities like the whole 0.0 thing in Rust) < 1730656667 177829 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or the a+++b thing in C > 1730656671 233333 PRIVMSG #esolangs :14[[07User:Ractangle/Sandbox14]]4 10 02https://esolangs.org/w/index.php?diff=144858&oldid=144857 5* 03Ractangle 5* (+179) 10/* Stuff to continue */ < 1730656743 992403 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or the Type> thing in C++, which actually came up quite a lot < 1730656766 74882 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I think Rust deals with that one by treating >> as a single token but allowing it to close two nesting levels of generics) < 1730656817 901013 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Wait, what formalism are people thinking when they say "parser combinators"? I've seen a few. I'm guessing that this is recursive-descent combinators? < 1730656835 898155 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: normally it's backtracking combinators > 1730656851 212888 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Malbolge is NOT enough hard!! 5* 10New user account < 1730656854 906869 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Sure, those are definitely not efficient. < 1730656887 826760 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which end up equivalent to recursive-descent if you apply them to an LL grammar, but typically people who use combinators don't care about the various types of grammar < 1730656945 256879 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Meh. I care plenty about the grammar! But I care even more about getting the parser implemented. And usually there's at least one grammar, the grammar of grammars, which requires a bootstrapping parser. < 1730656952 584543 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem, of course, is that this means that backtracking parser combinators have wildly varying performance characteristics based on something that isn't obvious from the source code, and in many simple cases they do end up fast < 1730656982 891221 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, by the time people start caring about combinators, they've usually seen the bigger problem: writing an informal grammar is easy, but writing a formal grammar that can be mechanically turned into a parser is a PITA. < 1730656987 684601 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: well, the thing about the bootstrapping parser is that it's always the same, so it can easily be shipped as a library, maybe part of a language's standard library < 1730657003 105294 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yes, but that doesn't solve *my* problems as a language implementor. < 1730657032 516469 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, yes, for everybody else, here is a library I've provided. But what library does Pagliacci use? < 1730657041 4972 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've actually started writing such a bootstrapping parser over the past couple of weeks, so that when I have the mental bandwidth to work on my parser-generator I will have a way to bootstrap it < 1730657088 683315 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I'm using POSIX yacc for the bootstrapping) < 1730657094 199871 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I remember seeing ANTLR for the first time and realizing that there are dozens, if not hundreds of us, throwing our heads against this problem and coming back with nothing except RSI. < 1730657137 464977 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :only one person has to do this once – maybe it'll be me when I'm in a better mental state, and then all the language implementors can just use that solution < 1730657170 535020 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yacc got close, its main issue is that the way it does precedence is overly tied to its own internals < 1730657198 545128 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also it has no convenient way to do lists, and needs a separate lexer < 1730657206 355054 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Well, the one person was Ian Piumerta and the one system was OMeta. < 1730657269 244714 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I still prefer it over things like ANTLR because of the computational complexity (yacc, and Bison on LR grammars, are linear-time; Bison on arbitrary grammars is O(n²) for unambiguous inputs and O(n³) for ambiguous inputs, which I think are the best known computational classes) < 1730657311 744181 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Sure. So is e.g. Marpa, which claims to merely be a fixed version of Earley's work. < 1730657324 865311 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, does ANTLR detect ambiguous grammars? (obviously it's uncomputable to determine whether a grammar is ambiguous, but an ambiguity detector with false positives is fine in practice) < 1730657349 875040 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've been collecting weird grammars, mostly written myself, as parser generator tests < 1730657374 64845 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the grammars which are hard to check for ambiguity are very unnatural and don't look like the sort of thing anyone would write in a language spec < 1730657460 348241 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :When Allen Short wrote Parsley (for Python), we realized that Parsley could be extended to tree transformations and wrote about half of SML in it before we realized what had happened. The library Parsimonious, built on Parsley's internals, doesn't have any of that at all. < 1730657473 215018 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it may always be the case that a grammar with uncomputable ambiguity checking always has some substring of input tokens that can be interpreted as opening/closing a different number of nesting levels (or in a different direction) depending on the context < 1730657476 376550 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Which makes me wonder whether something like Prolog-style grammars were actually a decent option. < 1730657540 752473 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, there are good reasons to generate parsers in an inherently linear-time language (like a linear-bounded automaton, but for time rather than memory) < 1730657556 628422 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think it's possible to implement ML or Prolog in something like that < 1730657565 72242 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730657627 365017 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :like, to me the problem is not "how do I get a working parser" but "how do I compile this parser description into something that runs in linear time" < 1730657677 15359 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that requires trying to find a powerful linear-time language to compile into; something like LR(1) is too restrictive in practice < 1730657693 9009 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it's possible to do, say, LR(*) (i.e. LR with regex lookahead) in linear time, which was fun to work out < 1730657711 541083 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ah. I put combinators over LPEG for that. LPEG started life as a Lua PEG runtime but morphed into a bytecode VM, and there's a nice homomorphism from parser combinators to LPEG bytecode. < 1730657748 169205 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It's easy to show that LPEG bytecode can't jump too far backwards, and from there to show that the machine only eats each input character at most once. < 1730657759 381499 :X-Scale!~X-Scale@32.64.114.89.rev.vodafone.pt QUIT :Ping timeout: 256 seconds < 1730657767 475180 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(you compile the regex into a state machine that takes the input in reverse order, run over the input backwards to annotate each input token/byte with the appropriate regex state, then use the token/state pairs as LR(1) tokens) < 1730657798 685167 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't like PEG because it is too easy to write a grammar that doesn't mean what you thought it would mean or what it looks like it would mean < 1730657855 101017 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :BTW when using compiler frameworks this usually isn't an open question. To write parsers in RPython, I'm basically obligated to use RPLY, an RPython version of Baezley's PLY library. And if my grammar is nasty, like recently with Nix, then I get to write my own Earley setup. < 1730657882 798865 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PEG's just CFG but all choices are ordered. If it's not clear how to order each choice, then the original CFG might not be unambiguous. < 1730657911 114868 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, "A / B" in a PEG means "either an A, or a B that does not start with an A" < 1730657993 655413 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so a grammar like «S: X | Y; X: 'd' | 'd' 'e' 'f'; Y: 'd' 'e' | 'd' 'e' 'f' 'g'» can't be translated to a PEG because there is a valid X that starts with a Y and a valid Y that starts with an X < 1730658031 447826 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also, most popular PEG parsing algorithms are linear-time but with horrible constant factors < 1730658041 524743 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And you're not a fan of `S1: X / Y; S2: Y / X; S: S1 / S2` I guess? < 1730658059 304958 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Which is usually expressed via PEG's "unlimited" lookahead, but same idea. < 1730658075 334690 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I didn't realise you could do that, and am now trying to figure out the implications < 1730658114 308902 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :PEG just insists that you not be allowed to provisionally accept an input. Either it's acceptable now, and we know which production it matches, or it's not acceptable now and we know that no production matches. < 1730658140 348362 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It's just Earley without the bookkeeping and non-determinism. < 1730658168 164784 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually I don't think that even works: a Y that starts with an X is not an S1, and although it is an S2, it starts with an S1 and thus it is not acceptable for S < 1730658194 348355 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so this just collapses down to be equivalent to S: X / Y < 1730658398 183146 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Assuming X and Y have no lookaheads, yeah. < 1730658536 577767 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so yes, I'm not a fan of it because it doesn't do what it looks like it's meant to do, or indeed anything useful at all :-D < 1730658538 393014 :Noisytoot!~noisytoot@user/meow/Noisytoot JOIN #esolangs Noisytoot :Ron < 1730658580 653177 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Anyway, I think that Marpa's author isn't great at writing docs, but he does seem to have correctly cracked the issue of Earley parsers not always performing well on unambiguous grammars, and maybe the correct answer is to implement Marpa for popular languages. < 1730658631 977041 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Also CYK is asymptotically what's desired, although its runtime constants are terrible since it can't predict in advance how much space will be needed. < 1730658664 517885 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Bison uses GLR, which is asymptotically as good as Earley < 1730658678 618186 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(and runs in O(n) time when the grammar happens to be LR(1)) < 1730658825 125114 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, that reminds me: I found a really nice formalism of parser-generator output, as repeated regex replacement (the operation that Perl calls s/regex/string/, where the string is a fixed string, although it runs on terminal/nonterminal mixes rather than character strings) – you express the parser as a set of mutually-exclusive regexes < 1730658879 658861 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, not quite s/regex/string/, the regex can match before and after the replaced portion < 1730658885 565010 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so it's more like /regex/; $1 = string < 1730658901 285009 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I'm not sure if you can do that in Perl but you probably can, it's that sort of language) < 1730658926 417729 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`perl-e $_ = "abcdef"; /b(cd)e/; $1 = "g"; print < 1730658929 113801 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Modification of a read-only value attempted at -e line 1. < 1730658933 64956 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh bleh, you can't? < 1730658992 665352 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :with most styles of parser it is possible to define a value for each terminal and non-terminal – if you state that replacements must reduce the total value of the string, that proves the parser runs in linear time < 1730659041 705040 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and it is normally possible to do that except with nonterminals that match the empty string, those have to be given zero value, but if you make a rule that two copies of the same zero-value nonterminal can't appear without something with positive value in between, that also proves the parser runs in linear time < 1730659054 552744 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, negative value, not zero > 1730659098 527266 PRIVMSG #esolangs :14[[07Special:Log/newusers14]]4 create10 02 5* 03Impossible Esolang Creator 5* 10New user account > 1730659664 107340 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 M10 02https://esolangs.org/w/index.php?diff=144859&oldid=144828 5* 03PythonshellDebugwindow 5* (+77) 10See also, categories > 1730659770 436669 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 M10 02https://esolangs.org/w/index.php?diff=144860&oldid=144849 5* 03PythonshellDebugwindow 5* (+106) 10Categories < 1730660515 842196 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl JOIN #esolangs * :Textual User < 1730661133 741523 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh neat, I found a terminal control code that's implemented consistently by every terminal I tested, but in a way that contradicts the relevant standard < 1730661146 84432 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(the standard looked wrong when I read it – seems all the terminals agree) < 1730661204 190947 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is ESC [ number @, which moves the remainder of the line number positions to the right/forwards – the terminals and standard agree on that, but the standard also moves the cursor to the start of the line for some reason (even though that isn't useful), whereas the terminals leave it alone < 1730661495 411578 :craigo!~craigo@user/craigo JOIN #esolangs craigo :realname > 1730661819 752661 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144861&oldid=144860 5* 03Ractangle 5* (+50) 10/* Syntax */ > 1730661838 298835 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144862&oldid=144861 5* 03Ractangle 5* (+26) 10/* Syntax */ > 1730662063 794765 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=144863&oldid=144859 5* 03Ractangle 5* (+121) 10/* narcissist */ > 1730662094 332344 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=144864&oldid=144863 5* 03Ractangle 5* (+47) 10/* Computational class */ > 1730662147 840433 PRIVMSG #esolangs :14[[07'Python' is not recognized as an internal or external command, operable program or batch file.14]]4 10 02https://esolangs.org/w/index.php?diff=144865&oldid=144864 5* 03Ractangle 5* (+16) 10/* Computational class */ > 1730662501 578678 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144866&oldid=144862 5* 03Ractangle 5* (-35) 10/* Syntax */ > 1730663123 325108 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144867&oldid=144866 5* 03Ractangle 5* (+54) 10/* Syntax */ > 1730663265 533314 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144868&oldid=144867 5* 03Ractangle 5* (+47) 10/* Examples */ > 1730663326 528886 PRIVMSG #esolangs :14[[07'Python' is not recognized14]]4 10 02https://esolangs.org/w/index.php?diff=144869&oldid=144868 5* 03Ractangle 5* (+109) 10/* Unfinished Truth-machine */ > 1730663571 849539 PRIVMSG #esolangs :14[[07Special:Log/upload14]]4 upload10 02 5* 03Ractangle 5* 10uploaded "[[02File:The only screenshot of the JS-CODE thing.jpg10]]" > 1730663647 531063 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144871&oldid=144854 5* 03Ractangle 5* (+191) 10 > 1730663666 536821 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144872&oldid=144871 5* 03Ractangle 5* (+14) 10/* Syntax */ < 1730665343 857110 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de QUIT :Quit: Leaving. > 1730665534 700973 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144873&oldid=144872 5* 03Ractangle 5* (+72) 10/* Syntax */ > 1730665547 637421 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144874&oldid=144873 5* 03Ractangle 5* (+11) 10/* Syntax */ < 1730665715 919114 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1730666061 77238 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and sometimes you know the grammar has some ambiguities, and you want to specify how those few are resolved, and prove that there are no other ambiguities, and prove that a specific way of writing the parse that you decided isn't allowed in an ambiguous case can be rewritten with some simple workaround which parses correctly. it gets complicated. > 1730666153 918166 PRIVMSG #esolangs :14[[07JS-CODE14]]4 10 02https://esolangs.org/w/index.php?diff=144875&oldid=144874 5* 03Ractangle 5* (+182) 10 < 1730666251 256616 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: in perl, s/before\Kbetween(?=after)/replacement/ replaces just the middle part < 1730666323 936527 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :alternately you can use captures like s/(before)between(after)/${1}replacement$2/ > 1730666420 846625 PRIVMSG #esolangs :14[[07User:Ractangle14]]4 10 02https://esolangs.org/w/index.php?diff=144876&oldid=144841 5* 03Ractangle 5* (+38) 10 > 1730666532 185753 PRIVMSG #esolangs :14[[07Xuki14]]4 10 02https://esolangs.org/w/index.php?diff=144877&oldid=144586 5* 03Ractangle 5* (+24) 10/* Syntax */ > 1730666546 621594 PRIVMSG #esolangs :14[[07Xuki14]]4 10 02https://esolangs.org/w/index.php?diff=144878&oldid=144877 5* 03Ractangle 5* (+17) 10/* Syntax */ < 1730666550 694201 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :though IME writing anything using repeated replacements like this correctly can be tricky > 1730666560 967993 PRIVMSG #esolangs :14[[07Xuki14]]4 10 02https://esolangs.org/w/index.php?diff=144879&oldid=144878 5* 03Ractangle 5* (+0) 10/* A+B Problem */ > 1730666613 614952 PRIVMSG #esolangs :14[[07Xuki14]]4 10 02https://esolangs.org/w/index.php?diff=144880&oldid=144879 5* 03Ractangle 5* (+5) 10/* A+B Problem */ > 1730666649 83725 PRIVMSG #esolangs :14[[07Xuki14]]4 10 02https://esolangs.org/w/index.php?diff=144881&oldid=144880 5* 03Ractangle 5* (+34) 10/* Syntax */ < 1730666709 901061 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it's the same problem as with parsers, the match will be ambiguous and will not replace what you wanted to replace < 1730666732 441418 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I'm not intending it as something to write by hand, but as a computational model > 1730666758 978469 PRIVMSG #esolangs :14[[07Fortuludmium14]]4 10 02https://esolangs.org/w/index.php?diff=144882&oldid=142620 5* 03Ractangle 5* (-173) 10 < 1730666805 111486 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in particular, it models both LR(1) and LL(*) correctly (because they in effect use a finite state automaton to determine the point where the replacement ends or starts respectively, and you can compile that into a regex) < 1730666840 501147 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and there's a linear-time implementation which basically gives you a generic linear-time parser backend that isn't tied to particular linear-time algorithms < 1730666872 969511 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :right. the one piece of good news is that IIRC 64-bit perl supports characters with codes up to 2**63 in character strings, so you can encode your terminals and perl regexes will treat them as single characters. < 1730666879 613130 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :s/terminals/nonterminals/ < 1730666935 69754 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :of course you might have to make sure that they don't occur in your input < 1730666938 540492 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :why do you need 64 bits for that? a) there's plenty of room between 0x10FFFF and 0xFFFFFFFF, b) there are private-use planes that you could use for nonterminals if you don't need them for something else > 1730666980 563774 PRIVMSG #esolangs :14[[07*python14]]4 10 02https://esolangs.org/w/index.php?diff=144883&oldid=144395 5* 03Ractangle 5* (+6) 10/* Errors */ < 1730667034 560375 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also it doesn't really help with regexps that they're single characters, so you only really need a few characters that don't occur in your input < 1730667102 52203 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :your parser generator may care about exactly how many symbols it looks ahead; perl regexps don't < 1730667120 933999 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well my backend model doesn't care either > 1730667181 638410 PRIVMSG #esolangs :14[[07*python14]]4 10 02https://esolangs.org/w/index.php?diff=144884&oldid=144883 5* 03Ractangle 5* (+34) 10/* Truth-machine */ < 1730667426 349796 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :the brand of the light bulbs above me is "Trixline", so I almost have trilimes above me < 1730667916 880822 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Depending on the input format, you might be able to use all codes greater than 0xFF (or maybe 0x7E) too, if the input handling supports that > 1730668003 956338 PRIVMSG #esolangs :14[[07C-like language14]]4 10 02https://esolangs.org/w/index.php?diff=144885&oldid=144396 5* 03Ractangle 5* (+2) 10/* Hello, world! */ < 1730668012 182268 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(That is, if it deals with individual bytes. It is probably usually more useful for a regular expression to deal with individual bytes instead of UTF-8 if you do not need to handle non-ASCII characters in matching; that will also then work with other character sets than Unicode too, without needing to do any conversion.) < 1730668041 592815 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(If your input is UTF-16 or UTF-32, or another multibyte code, then the higher character codes are more useful for directly representing character codes.) < 1730668088 271377 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Furthermore, what if you do not have a 64-bit computer?) > 1730668206 990355 PRIVMSG #esolangs :14[[07: 14]]4 10 02https://esolangs.org/w/index.php?diff=144886&oldid=142919 5* 03Ractangle 5* (+84) 10/* Syntax */ > 1730668226 745047 PRIVMSG #esolangs :14[[07: 14]]4 10 02https://esolangs.org/w/index.php?diff=144887&oldid=144886 5* 03Ractangle 5* (+6) 10/* A+B Problem */ > 1730668293 48520 PRIVMSG #esolangs :14[[07MarkupL14]]4 10 02https://esolangs.org/w/index.php?diff=144888&oldid=144160 5* 03Ractangle 5* (-6) 10/* MarkupL add-ons */ < 1730668312 483382 :Everything!~Everythin@46.211.221.97 QUIT :Ping timeout: 252 seconds < 1730668345 117022 :Everything!~Everythin@178-133-29-33.mobile.vf-ua.net JOIN #esolangs Everything :Everything < 1730668392 803207 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I thought the character codes were limited to 32-bits, but now you say it can use 63-bits. I think that would waste more memory but also can be useful for reasons you describe and for other reasons (e.g. in case anyone actually uses 63-bit character codes, but that seems unlikely to me) < 1730668859 180758 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a Perl string acts like an array of integers that represent character codes, but is internally stored using one of two compression schemes, one which works only when all the integers are small, and the other of which has a strong resemblance to UTF-8 < 1730668892 141198 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, the details of the compression are supposed to be entirely invisible to the programmer (there are a few historical-reasons bugs that can expose them and a couple of APIs to expose them intentionally_ < 1730668912 524764 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :O, then it won't waste memory, but it will make the execution more complicated so might be less efficient for time even if the space is efficient. < 1730669310 9728 :Thelie!~Thelie@2a0a-a543-6c1d-0-5217-e5e2-16c8-3101.ipv6dyn.netcologne.de JOIN #esolangs Thelie :Thelie < 1730670085 97094 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: also I still find the idea of no separate lexer stage strange, because separate lexing rules is how I find natural to think of languages. the lexer is there because I don't want a keyboard as huge as the number of possible tokens, so I type all by the most frequent tokens as multiple characters. yes, C++'s special lexer exceptions where >> and <: are sometimes not matched leftmost-longest as a < 1730670091 88182 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :token is an argument, but it's not strong enough to discard the whole idea of a lexer. < 1730670156 147286 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also you usually want to attach a pointer to many of those nonterminals to store a parse tree or some other intermediate compiled representation, so just a bunch of s/// substitution rules could be hard to use. < 1730670456 303281 :sprocket!~sprock@user/sprock JOIN #esolangs sprock :maeve (she/her) < 1730670473 993783 :sprock!~sprock@user/sprock QUIT :Ping timeout: 245 seconds < 1730671090 270924 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I've been having a lot of fun figuring out how to optimise out the intermediate representation, or at least change it to something more efficient < 1730671153 252281 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my current plan is to parse into reverse-Polish, then parse the resulting reverse-Polish string again backwards (which is LL(1)), which should be much faster than building a parse tree in applications that don't need one < 1730671209 583729 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the reason I don't like the idea of a separate lexer is that often lexing is context-dependent (to the extent that POSIX yacc has to precisely define the parser's evaluation order to let it interact with the lexer correctly, which in turn makes a lot of interesting optimisations impossible) < 1730671260 141207 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :given that a lexer can easily be expressed in the format typically used for parsers, it makes so much more sense for the parser and lexer to be in the same source file and same automaton – that way you get lexer context-dependence for free, and can check for ambiguities across lexer and parser together < 1730671336 770970 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I think it makes sense for both lexers *and parsers* to have a way to explicitly allow/ban particular things in the right context < 1730671344 760667 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. to say "an identifier cannot be followed by a letter" < 1730671359 950845 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :as a way to precisely describe disambiguation rules < 1730671495 483585 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Maybe *this* is what tagless-final encoding is for. The parse tree only exists as an intermediate type which is reliably optimized out of the resulting call graph. < 1730671544 342483 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I know catern has used this. They're also fairly opinionated, so it's worth being skeptical. Ditto with Oleg, who I think is the origin of the name "tagless-final". < 1730671622 538417 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :On lexers: they can increase the effective power of a parser, right? e.g. Python lexers emit INDENT and DEDENT tokens, letting a PEG parse an otherwise-context-sensitive grammar. < 1730671713 954154 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: only by increasing the effective power of a lexer < 1730671739 161344 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :finite-state machines can't do indent/dedent either, so if you are extending a lexer to be able to do that, you could alternatively extend a parser to be able to do that < 1730671767 820880 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which might be important if the indent/dedent behaviour was different in two different places in the same input (imagine a parser for mixed Python and Haskell) < 1730672117 473881 :X-Scale!~X-Scale@89.214.116.231 JOIN #esolangs X-Scale :[https://web.libera.chat] X-Scale < 1730672171 889710 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Oh, good point. I guess "power" is an overloaded word. Like, Python can be lexed in linear time (because every token piece is recognized by a regex), so it doesn't raise the practical time complexity of an amortized-linear PEG parser. < 1730672193 70705 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Maybe the Chomsky hierarchy is not that useful? < 1730672209 680809 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :2 and 3 seem to be the only practically useful parts < 1730672254 964110 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because they put restrictions on things that are often possible to comply with and give you nice properties that can be exploited to, say, write linear-time parsers < 1730672258 142981 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :CFGs do feel like some sort of natural ceiling. And I guess we should be glad that recognition is in P, cubic even! < 1730672399 641484 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in practice recognition is quadratic, it only becomes cubic if you the input exposes an ambiguity in the grammar, at which point you could reasonably reject it (thus, the cubic case is only useful when using dynamic precedence resolution rules) < 1730672436 913675 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...Maybe it's because of applicative trees. Concrete parses for CFGs always yield a well-behaved rooted tree. For CSGs I don't know what we get; like trees with a per-forest context? And eventually when we get to TMs we have traces of machine actions. < 1730672649 367970 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :"if the indent/dedent behaviour was different in two different places in the same input" => it kind of is, newlines are ignores in string literals, blank lines after a backslash continuation marker, and most interestingly inside parenthesis of any kind, so you have to recognize balanced parenthesis < 1730672700 464115 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: ooh, so Python's lexer has to do paren matching, which is the standard example of something that belongs in a parser and not a lexer < 1730672759 965767 :int-e!~noone@int-e.eu PRIVMSG #esolangs :the CFG can ignore indent/dedent inside of expressions < 1730672764 582707 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yep, Python descendants are required to not just measure indent depth but also keep a bracket/paren stack. And modern Python also includes E-style quasiliterals, which require the lexer to keep a QL piece stack. < 1730672778 93252 :int-e!~noone@int-e.eu PRIVMSG #esolangs :But I don't know what Python *does*. < 1730672795 558481 :int-e!~noone@int-e.eu PRIVMSG #esolangs :oh < 1730672797 191009 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I haven't looked at ECMAScript's specification in a while. I wonder how they added "template literals", their E-style QLs. < 1730672803 567897 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Some programs will do some of the things together for various reasons, and for some programs, the result of the parser could control the working of lexer as well as other way around < 1730672815 682889 :int-e!~noone@int-e.eu PRIVMSG #esolangs :sorry, that doesn't work, it indeed has to be done by the lexer < 1730672833 485035 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :What is "E-style quasiliterals"? < 1730672863 386104 :int-e!~noone@int-e.eu PRIVMSG #esolangs :hiding context-sensitive stuff in lexer + postprocessing after parsing is standard anyway < 1730672886 405753 :int-e!~noone@int-e.eu PRIVMSG #esolangs :The most egregious example is dealing with identifiers and scope. < 1730672888 402599 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: you can imagine it as four or fivr stages instead of just a lexer and parser: first you lex most tokens including find the end of single-line or multi-line literals and single-line comments, then you match parenthesis (of all kind), then you find the newlines that matter and mark ident and dedent tokens, then you do the rest < 1730672891 423979 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Rust lets you do things like let a = 4; let b = 5; println!("a = {a} and b = {b}"); < 1730672918 181470 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I know how it does that, identifier ! ( … ) runs arbitrary code on what's inside the parentheses, which has a rule that the parentheses have to match and not many other rules < 1730672934 169040 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :E-style is an extension of what Perl had; you can do `this kind of $variable interpolation`, but also `pattern-match @piece by @piece with backtracking` and e`def embed { any.legal($ast) }` as a splice. < 1730672935 840607 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that code returns a parse tree that gets inserted at that point in the source < 1730672986 381400 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: I agree that identifiers/scope is effectively a major part of parsing that parser formalisms gloss over < 1730672994 10494 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and have been wondering about how to fit it directly into a parsing automaton < 1730673086 950687 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :In PostScript, a {} block is a single token that can contain other tokens. The // prefix makes that the value of the token is whatever the following name refers to at the time of being tokenized, rather than the value of the token being the name itself (which it is if the // prefix is omitted). < 1730673108 724963 :int-e!~noone@int-e.eu PRIVMSG #esolangs :attribute grammars try to do that kind of things, right? < 1730673160 368644 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(AIUI they *embrace* the CFG approximation but try to incorporate post-processing inside the grammar in a formal way.) < 1730673187 215709 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: In LPEG I found myself wanting a GENSYM bytecode. I also needed to gensym when doing miniKanren and couldn't find a way to do it. < 1730673341 819631 :tromp!~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1730673425 174625 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: also python parsing runs into the problem where a variable or tuple constructor call can appear syntactically either in an expression/rvalue or a pattern/lvalue, they mean different things in the two syntactical contexts, and you pretty much have to do the whole parsing blindly before you can determine which occurrances are in pattern/lvalue context. < 1730673519 322088 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also there's a third context, patterns for case statements, which you *can* recognize in advance, but they're somewhat similar to ordinary patterns/lvalues, so you have to figure out how not to duplicate the shared part of syntax and semantics < 1730673561 434043 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: what does the right-context look like, to make the same left-context into either an expression or pattern? < 1730673568 470286 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, "=" probably < 1730673580 830736 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…I have suddenly realised why Rust says "if let" and not just "if" < 1730673601 513652 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's to let whatever comes after "let" unambiguously parse as a pattern < 1730673713 220079 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yep, same with E "def", ECMAScript "let" and "const", Monte "object". Not Python "class" though; they just required INDENT first! < 1730673741 529070 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: there's like ten different productions for lvalue context. assignment statement `lvalue = rvalue`, for loop head `for lvalue in rvalue`, with statement head, expect clause head, after `for` in an array/iterator/dictionary display eg. `[rvalue for lvalue in rvalue]`, and probably more that I forget < 1730673758 155767 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :and of course inside a tuple or array in lvalue context too < 1730673831 765817 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :I've seen this same problem when making one of geo or scan by the way < 1730673870 671055 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this reminded me of something else: I realised recently that assignment operations are "backwards" and should place the variable being assigned to on the right, so that the statement reads in order < 1730673893 893970 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :«e = a.b().c().d()» makes you jump back to the start of the statement after reaching the end < 1730673933 140652 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I realised a bit less recently that pointer dereference should be postfix, for the same reason – it is in Pascal, but prefix in C for some reason, which is why it needs a separate -> syntax) < 1730673936 170771 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: Rust also does the C thing where `a = b` is an expression. < 1730673956 44165 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: sure, but that isn't mutually exclusive with pattern matches < 1730673979 794549 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there's no reason why (x, y) = (1, 2) couldn't assign to two different variables and return the same tuple that was matched against < 1730673987 715416 :int-e!~noone@int-e.eu PRIVMSG #esolangs :well the semantics of if a = false and if let a = false are quite different < 1730674011 341261 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, I see < 1730674035 781062 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the former cares about the boolean value assigned to a, the latter about whether the assignment was possible < 1730675164 314884 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: in rust that doesn't really work because it would have to copy x and y which isn't always possible < 1730675191 293719 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no, it'd have to copy the tuple < 1730675194 913778 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which can be done if it's Copy < 1730675212 504332 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :yes, and copying the tuple has to copy its members < 1730675234 780717 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but x and y aren't the members, 1 and 2 are < 1730675253 440973 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :most languages with chained assignments return the value being assigned, not the variable being assigned to (Perl is weird in that respect) < 1730675263 15393 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :right, 1 and 2 are of copiable types < 1730675285 926876 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I feel like we're agreeing with each other? < 1730675294 2532 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :also is it true that BASIC dialects differ in what `LET X = Y = 0` means? < 1730675325 104144 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it wouldn't surprise me, but OTOH I'd expect it to be a parse error in many of them < 1730675590 355025 :Everything!~Everythin@178-133-29-33.mobile.vf-ua.net QUIT :Quit: leaving < 1730676349 174759 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :has anyone done something like this? https://discuss.kotlinlang.org/t/an-alternative-to-checked-exceptions-that-actually-works-for-catching-bugs/23079 < 1730676394 708249 :int-e!~noone@int-e.eu PRIVMSG #esolangs :I'd /expect/ it to compare Y and 0 and assign X a value based on that. < 1730676832 583055 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: Have you seen Elm or its offspring, like Derw or Roc? They propose to take one of Standard ML's memes seriously: well-typed programs *cannot* go wrong. < 1730676908 566183 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :lol < 1730676914 734169 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I wouldn't recommend *using* Elm, due to serious implementation issues, but it's good food for thought. < 1730676942 357573 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :maybe if it had global typestate < 1730676962 971042 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Like, what kinds of faults can be caught anyway? What does it mean to have an unexpected fault coming through your call frame? < 1730677040 342218 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :do you know about global typestate? < 1730677059 517920 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :My language Cammy is pursuing the same meme from a different angle, via OCaml's tradition. But I gave up on exceptions entirely; a Cammy expression *cannot* go wrong, and type failures can only happen at the very beginning and end of the program, when the caller makes a mistake. < 1730677232 827947 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I don't know that exact phrase. Searching gives me this paper: https://arxiv.org/abs/2107.13101 I know the typestate pattern; I'm more interested in structural approaches, but it seems alright for a nominal approach. < 1730677322 999535 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :At that point, though, I'd argue that the language should add algebraic laws instead of putting more work into the typechecker. It'd be a better investment that covers the same theorem-proving territory. < 1730677392 573161 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :global typestate is an approach to solving signal safety < 1730677418 250760 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :we would like to see global typestate in rust, and deprecation/removal of existing rust globals < 1730677429 468950 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :but anyway < 1730677486 320963 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :that paper appears to be about global analysis of typestate, so... slightly different issue < 1730677561 973399 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs * :realname < 1730677734 488842 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :(is "deprecating globals" esoteric enough for #esolangs ?) < 1730678196 705716 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I would think that in BASIC, "LET X = Y = 0" would set X to -1 if the value of Y is zero or 0 if nonzero, although different implementations might do differently < 1730678244 661586 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :A program that I had partially written and am continuing to do, is converting a custom ASCII-text-based format that I had made up into DER format, and the parsing in that program has its own way of working; e.g. the tokenizer only reads the beginning of a string and the rest of the string literal is parsed by the function that encodes it. < 1730678259 537379 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Which escape codes are allowed in a string literal depends on its type, and there are other stuff as well < 1730678347 101029 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Soni: Signal safety is definitely esoteric. Have you considered not doing signals instead? < 1730678388 52458 :Soni!~quassel@sodapop.autistic.space PRIVMSG #esolangs :korvo: but where's the fun in that :D