> 1697329221 654226 PRIVMSG #esolangs :14[[07Make me blush14]]4 10 02https://esolangs.org/w/index.php?diff=117913&oldid=116815 5* 03Kaveh Yousefi 5* (+207) 10Added a hyperlink to my implementation of the Make me blush programming language on GitHub and introduced the category tag Implemented. > 1697329276 32543 PRIVMSG #esolangs :14[[07Make me blush14]]4 10 02https://esolangs.org/w/index.php?diff=117914&oldid=117913 5* 03Kaveh Yousefi 5* (+4) 10Rectified the ASCII Loop examples, the same was inflicted with two mistakes: (1) The token becuase in lieu of because, (2) a missing and. > 1697329546 353184 PRIVMSG #esolangs :14[[07Make me blush14]]4 10 02https://esolangs.org/w/index.php?diff=117915&oldid=117914 5* 03Kaveh Yousefi 5* (+499) 10Supplemented a character-based cat program and introduced a truth-machine example. > 1697329848 634188 PRIVMSG #esolangs :14[[07Make me blush14]]4 M10 02https://esolangs.org/w/index.php?diff=117916&oldid=117915 5* 03Kaveh Yousefi 5* (+202) 10Reformatted the command listing as a table. < 1697331357 1694 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 260 seconds < 1697331359 552930 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1697331439 538828 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life > 1697332806 358589 PRIVMSG #esolangs :14[[07Three Star Programmer14]]4 10 02https://esolangs.org/w/index.php?diff=117917&oldid=117912 5* 03Ais523 5* (-60) 10merge "implementations" and "external resources" sections, these are normally combined and there isn't an obvious reason for them to be separate < 1697334762 284621 :craigo_!~craigo@180-150-36-21.b49624.bne.nbn.aussiebb.net QUIT :Read error: Connection reset by peer < 1697334780 896631 :craigo_!~craigo@2403:5815:da48:0:a1aa:83b:a8a5:bab4 JOIN #esolangs * :realname > 1697337196 537813 PRIVMSG #esolangs :14[[07Trampolines14]]4 10 02https://esolangs.org/w/index.php?diff=117918&oldid=117889 5* 03Aadenboy 5* (+479) 10new commands < 1697344381 456944 :b_jonas!~x@89.134.28.168 QUIT :Ping timeout: 255 seconds > 1697346130 500465 PRIVMSG #esolangs :14[[07B sharp14]]4 M10 02https://esolangs.org/w/index.php?diff=117919&oldid=75182 5* 03Lilchiky 5* (+38) 10wrongtitle < 1697346167 52249 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1697348392 421067 PRIVMSG #esolangs :14[[07A?b.14]]4 M10 02https://esolangs.org/w/index.php?diff=117920&oldid=105539 5* 03Lilchiky 5* (+13) 10'not capitalised' < 1697354195 566569 :Koen!~Koen@2a01:e34:ec7c:30:81f2:cbc9:bac5:9e87 JOIN #esolangs * :Koen < 1697356555 613935 :cpressey!~cpressey@host-2-102-87-108.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1697357690 669993 :awewsomegamer!~awewsomeg@S0106484bd46b6d3d.vn.shawcable.net JOIN #esolangs * :awewsomegamer < 1697357792 29677 :awewsomegamer!~awewsomeg@S0106484bd46b6d3d.vn.shawcable.net QUIT :Client Quit < 1697358083 613889 :cpressey!~cpressey@host-2-102-87-108.as13285.net QUIT :Ping timeout: 245 seconds < 1697359869 613056 :cpressey!~cpressey@host-92-21-195-194.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey < 1697363959 74045 :Sgeo_!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1697363989 395655 :arseniiv!~arseniiv@188.64.15.98 JOIN #esolangs arseniiv :the chaotic arseniiv < 1697364909 238533 :cpressey!~cpressey@host-92-21-195-194.as13285.net QUIT :Quit: Client closed < 1697366563 429461 :FireFly!~firefly@glowbum/gluehwuermchen/firefly NICK :Luci-ghoule < 1697368117 559950 :b_jonas!~x@89.134.28.176 JOIN #esolangs b_jonas :b_jonas < 1697370985 508330 :Thelie!~Thelie@2a03:2260:300c:400:61bd:fe2e:1f3c:b90a JOIN #esolangs Thelie :Thelie < 1697375566 297233 :Koen!~Koen@2a01:e34:ec7c:30:81f2:cbc9:bac5:9e87 QUIT :Remote host closed the connection < 1697375732 286759 :Koen!~Koen@2a01:e34:ec7c:30:2d4e:d84c:f488:aff8 JOIN #esolangs * :Koen < 1697376007 292103 :Koen!~Koen@2a01:e34:ec7c:30:2d4e:d84c:f488:aff8 QUIT :Ping timeout: 264 seconds < 1697376660 150398 :op_4!~op_4@user/op-4/x-9116473 QUIT :Quit: ZNC - https://znc.in < 1697376681 628313 :Thelie!~Thelie@2a03:2260:300c:400:61bd:fe2e:1f3c:b90a QUIT :Quit: Leaving. < 1697376701 100915 :op_4!~op_4@user/op-4/x-9116473 JOIN #esolangs op_4 :op_4 > 1697377269 544930 PRIVMSG #esolangs :14[[07F!--14]]4 10 02https://esolangs.org/w/index.php?diff=117921&oldid=112716 5* 03Kaveh Yousefi 5* (+159) 10Added a hyperlink to my implementation of the F!-- programming language on GitHub and changed the category tag Unimplemented to Implemented. > 1697377463 453672 PRIVMSG #esolangs :14[[07F!--14]]4 10 02https://esolangs.org/w/index.php?diff=117922&oldid=117921 5* 03Kaveh Yousefi 5* (+281) 10Supplemented a juxtaposition of the commands defined for F!--, F!, and Deadfish. > 1697377854 826427 PRIVMSG #esolangs :14[[07B2C14]]4 10 02https://esolangs.org/w/index.php?diff=117923&oldid=115061 5* 03None1 5* (+21) 10/* Hello World (last because it's the hardest one) */ Fixed Hello World program that previously prints "Hdkkn Mehbz/" > 1697377962 312517 PRIVMSG #esolangs :14[[07B2C14]]4 10 02https://esolangs.org/w/index.php?diff=117924&oldid=117923 5* 03None1 5* (+2576) 10Added JavaScript interpreter and implemented category tag > 1697378145 166703 PRIVMSG #esolangs :14[[07B2C14]]4 M10 02https://esolangs.org/w/index.php?diff=117925&oldid=117924 5* 03None1 5* (-10) 10/* Interpreter */ > 1697378857 230028 PRIVMSG #esolangs :14[[07Interpret Esolangs Online14]]4 10 02https://esolangs.org/w/index.php?diff=117926&oldid=115598 5* 03None1 5* (+10) 10/* Introduction */ Interpret Esolangs Online now supports B2C < 1697380813 619908 :cpressey!~cpressey@host-92-21-195-194.as13285.net JOIN #esolangs cpressey :[https://web.libera.chat] cpressey > 1697384910 588023 PRIVMSG #esolangs :14[[07Brainfuck14]]4 10 02https://esolangs.org/w/index.php?diff=117927&oldid=117750 5* 03Hakerh400 5* (+163) 10Add an implementation in Haskell < 1697385401 67047 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :OK, new plan.  Scrapping the Scheme compiler.  Just gonna write the state transformation functions in Lua. < 1697386940 254096 :craigo_!~craigo@2403:5815:da48:0:a1aa:83b:a8a5:bab4 QUIT :Quit: Leaving < 1697387427 493229 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :ah yes, that's a good way to get an esoteric language. plan a domain-specific language that you want to use for some particular purpose, then find that you don't want to use it after all, ends up unused and esoteric < 1697387597 613023 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1697388745 254140 :Europe2048!~Europe204@fableness-hydrant.volia.net QUIT :Quit: Client closed < 1697388875 614159 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net JOIN #esolangs * :[https://web.libera.chat] FortyTwoBB < 1697389155 890793 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :@ais523 does flooding waterfall get tripped up by having clocks with minimum values? Because Xathrid Necromancer must share a type with the creature that triggers it, effectively every waterclock starts at a minimum of [the sum of their row]. We can add more indestructible creatures to flatten the disruption for each clock. < 1697389155 938750 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esolangs :Unknown command, try @list > 1697389253 674955 PRIVMSG #esolangs :14[[07NONE14]]4 10 02https://esolangs.org/w/index.php?diff=117928&oldid=117616 5* 03Jaip 5* (-20) 10 < 1697389320 930434 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :So if every clock has 413612 or whatever dummy creatures pumping it up, the first one to fall to 413611 will be the first to zero. The dummy creatures don't affect the multiplier because they don't die. < 1697389780 401491 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :I think this shift works a similar way it did for normal FWC? < 1697390158 966233 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1697390230 540393 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hi FortyTwoBB < 1697390237 198840 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :reading now < 1697390240 932902 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(I just got online) < 1697390311 306374 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the problem is that the tokens come in with a fairly large toughness, based on the number of zeroing triggers that mention them, rather than 1 like they're supposed to < 1697390362 354732 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that adjusts the length of time between first token creation and token death, but without adjusting the multiplier on the zeroing trigger < 1697390431 980230 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so this can be compensated for by making all the tokens have the same toughness boost, yes – this will spread the cycles out in time more, but the computation will still proceed the same way with the same numbers, just with a small delay as it changes from one cycle to the next < 1697390451 479947 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(this fix doesn't work for arbitrary Flooding Waterfall Model programs but does work for the programs generated by the compiler) < 1697390468 447234 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also I suspect you don't need multiple copies of Coat of Arms in order to handle steady damage values greater than 1 < 1697390484 506893 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah having 3 CoA is easy < 1697390500 255172 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I would expect you could just make the zeroing triggers larger to compensate < 1697390524 196610 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the baseline counters used by the compiler can compensate for almost anything, it is a pretty flexible construction < 1697390525 680613 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :But that requires more material than just making 2 artifacts < 1697390534 574982 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :oh, I see < 1697390556 496976 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you want to save on tokens, so a token Coat of Arms is cheaper than a token Xathrid Necromancer < 1697390569 548539 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :no they are the same cost < 1697390574 66568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or, at least, not massively more expensive, so one Coat of Arms is cheaper than millions of Necromancers < 1697390581 985577 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah that < 1697390627 737794 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :incidentally, as long as your Bishop of Wings / Xathrid Necromancer / etc. has two creature types < 1697390634 992707 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it does not need to be indestructible in order to make the construction work < 1697390645 372448 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah we know < 1697390655 580503 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah good < 1697390664 477083 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is a bit hard to remember what has and hasn't been discovered in the thread < 1697390670 208364 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :seeing as it's over 200 pages long now < 1697390722 918504 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :but we need exactly either !martyr of spores or !Resolute Watchdog and might as well go with the indestructible option. < 1697390733 459414 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I tried to reread it yesterday to figure out how the iterated (and hyperiterated) busy beavers work, but got a little confused < 1697390737 637074 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`card-by-name martyr of spores < 1697390739 717905 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Martyr of Spores \ G \ Creature -- Human Shaman \ 1/1 \ {1}, Reveal X green cards from your hand, Sacrifice Martyr of Spores: Target creature gets +X/+X until end of turn. \ CSP-C < 1697390747 351385 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`card-by-name resolute watchdog < 1697390748 491271 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :No output. < 1697390760 561744 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the bot is somewhat outdated in terms of its M:tG knowledge < 1697390782 503833 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :1 sac self: target creature gaind indestructable until eot < 1697390788 595431 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :gains* < 1697390797 348975 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, the hardest part of the construction seems to me to be to make sure that there are no infinite loops in it < 1697390810 977758 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :no, really? Lol < 1697390817 529375 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah of course < 1697390890 545817 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :btw, do you know of any good substitutes for Arcbond? I have been a bit frustrated with my "competitive Turing-complete deck" project because I am so close to getting it down to 6 cards (beyond those that already exist in the deck I'm basing this on) < 1697390931 771578 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but need a seventh to prevent the turn player from having the option to die from their own Arcbond triggers while their lifegain triggers from Bishop of Wings are still on the stack < 1697390933 479625 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :that's why I'm not sure visuvian duplimancy is ok, because now there can be waiting triggers to make a token of something that would have fizzled if the copy effect was a spell like fated infatuation < 1697390954 966826 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :no theres nothing better than arcbond < 1697390968 157244 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are four obviously required cards (Arcbond, Bishop of Wings or an equivalent, Coat of Arms, Artificial Evolution) < 1697390996 872512 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and two cards is not *quite* enough to cover token creation, token donation, and keeping the turn player alive < 1697391020 79807 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah < 1697391048 188279 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(also stock Ruby Storm doesn't have any infinite loops in it, unless I missed one, so I had the opposite problem from your thread – I needed to add a way to create an infinite loop so that I could set up arbitrarily large programs) < 1697391072 823054 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :my current attempt is to add Fractured Identity, Riftsweeper, and any random lifelinker < 1697391120 856487 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(the deck naturally contains Inspired Tinkering , Past In Flames and Bonus Round, which collectively give you an infinite but somewhat stupid combo with Fractured Identity and Riftsweeper) < 1697391163 537102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(in addition to Fractured Identity + Riftsweeper being able to give the opponent tokens without losing the original card) < 1697391263 571937 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah that looks optimal to me < 1697391290 826158 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :just need some lifelink source < 1697391297 101280 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :or equivalent < 1697391304 142568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`card-by-name Soulfire Grand Master < 1697391305 158495 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Soulfire Grand Master \ 1W \ Creature -- Human Monk \ 2/2 \ Lifelink \ Instant and sorcery spells you control have lifelink. \ {2}{(u/r)}{(u/r)}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves. \ FRF-M < 1697391315 173890 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that has the most relevant ability I could find on a lifelinker < 1697391333 746056 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :having both lifelink and an infinite < 1697391349 116695 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah, i was trying to remember that exact card lol < 1697391351 459585 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I couldn't find a single other card to pair it with < 1697391459 676978 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, I was wondering if that lingering effect could be used as a counter for some sort of stage construction, but it can't, it has the Netrunner-style wording where it doesn't stack with itself properly < 1697391541 212110 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah it just goes infinite or doesnt do much < 1697391597 491180 :APic!apic@apic.name PRIVMSG #esolangs :♥ < 1697391650 100903 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've been kind-of wondering whether I should just try to find a maindeck slot for The One Ring < 1697391738 988948 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, Last Laugh is probably usable, but seems to have no advantages over Arcbond < 1697391742 188739 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :`card-by-name Last Laugh < 1697391743 179506 :HackEso!~h@techne.zem.fi PRIVMSG #esolangs :Last Laugh \ 2BB \ Enchantment \ Whenever a permanent other than Last Laugh is put into a graveyard from the battlefield, Last Laugh deals 1 damage to each creature and each player. \ When no creatures are on the battlefield, sacrifice Last Laugh. \ TOR-R < 1697391766 90429 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :same with like massacre girl < 1697391821 366995 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Massacre Girl might actually work for my constructoin < 1697391829 838659 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because it doesn't hurt players < 1697391830 570848 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :arcbond is unique in that it always triggers itself the same amount no matter how many creatures die < 1697391842 481618 :FreeFull!~freefull@46.205.213.254.nat.ftth.dynamic.t-mobile.pl JOIN #esolangs FreeFull :FreeFull < 1697391845 318058 :APic!apic@apic.name PRIVMSG #esolangs :♥ < 1697391862 170234 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for me, the actual number of triggers doesn't matter as long as there are enough of them, because they just pile up on the bottom of tge stack < 1697391864 7012 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah you just need to do a bit more setup to have a clock that always dies < 1697391913 125466 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I agree that making the clock die would be a problem – you probably have to kill all the token creators < 1697392077 834242 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :well with bishop of wings, you get to keep them alive < 1697392102 852582 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah you dont need a lifelinker < 1697392112 286109 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :they control bishop of wings < 1697392117 440411 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :you control arcbond < 1697392124 80358 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but arcbond damages yourself < 1697392147 154338 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah but you can keep a bishop to keep yourself alive < 1697392160 227118 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the problem is that you get to stack the bishop triggers and arcbond triggers < 1697392169 696102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and if you always stack the bishop triggers on the bottom, you lose < 1697392180 766411 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so it isn't a perfect choiceless loop < 1697392189 786104 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :of course, this doesn't matter for your construction, because you can choose to stack them correctly < 1697392198 63819 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah < 1697392206 934776 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :so it is still tc? < 1697392240 232785 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there's more than one definition of Turing-complete < 1697392259 973978 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :because a nondeterministic turing machine that has the option to catch fire at any step would still be turing complete no? < 1697392261 225206 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for the Netrunner Turing-complete proof, I had to resort to "it's Turing-complete unless a player makes a decision that causes them to immediately lose the game" < 1697392308 392310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for Magic, it's possible to get a zero-choices Turing-completeness construction, which is more interesting than a "Turing complete unless you choose to lose" construction, although both would normally be considered to be Turing-complete < 1697392320 164129 :APic!apic@apic.name PRIVMSG #esolangs :♥ < 1697392333 867879 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but zero-choices is nice because you can F6 (or the in-person equivalent) and just have the program run itself < 1697392336 881084 :APic!apic@apic.name PRIVMSG #esolangs :o/ < 1697392350 3017 :APic!apic@apic.name PRIVMSG #esolangs :Good old self-running Programs alias Multiverses 😉 < 1697392352 509416 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(Flooding Waterfall Model doesn't run on MTGO, incidentally, because the numbers get too large too quickly) < 1697392367 824727 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah you can set triggers to auto stack in a certain order < 1697392376 741127 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :and then f6 < 1697392416 252905 :APic!apic@apic.name PRIVMSG #esolangs :ais523: Can You explain the Niagara-Falls to me, please? 😉 < 1697392438 719446 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :APic: what, the real life geographical landmark? or the various waterfall-based esolangs? < 1697392449 120464 :APic!apic@apic.name PRIVMSG #esolangs :ais523: Both < 1697392450 944098 :APic!apic@apic.name PRIVMSG #esolangs :Pleae < 1697392451 722564 :APic!apic@apic.name PRIVMSG #esolangs :+s < 1697392457 923339 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the esolangs are defined at https://esolangs.org/wiki/The_Waterfall_Model and https://esolangs.org/wiki/Flooding_Waterfall_Model < 1697392458 818853 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :lol < 1697392465 192938 :APic!apic@apic.name PRIVMSG #esolangs :Some People seem to like going down with wooden Barrels < 1697392468 123756 :APic!apic@apic.name PRIVMSG #esolangs :ktnx < 1697392482 385741 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and there is a tutorial for the former at http://nethack4.org/esolangs/waterfall/ < 1697392496 529062 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :unfortunately I can't explain the real-life waterfall < 1697392524 292874 :APic!apic@apic.name PRIVMSG #esolangs :Aaah, good old Magick < 1697392527 81546 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(Flooding Waterfall Model is rather harder to understand than the original because each of the waterclocks is associated with two counters rather than one) < 1697392540 280243 :APic!apic@apic.name PRIVMSG #esolangs :Okay, at least You tried, ktnx 😌 < 1697392574 983483 :APic!apic@apic.name PRIVMSG #esolangs :Good old JSON ♥ < 1697392596 657426 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah mtgo/mtga etc really don't like large numbers < 1697392662 85929 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :I did the polyraptor forerunner of the empire combo in limited to get several million 5/5 < 1697392703 29453 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I don't think I've ever done a large combo in limited – the best I ever managed was winning both games of the same match with Coalition Victory < 1697392726 399861 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, my opponent had mostly only played multiplayer, meaning that they were playing much more defensively than a typical limited player would, so it doesn't really count < 1697392826 678013 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah that's still pretty rare < 1697392892 779531 :APic!apic@apic.name PRIVMSG #esolangs :♥ < 1697393102 272324 :Koen!~Koen@2a01:e34:ec7c:30:90a6:3649:bcf5:a397 JOIN #esolangs * :Koen < 1697393191 831275 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ooh, actually getting halting to work is pretty easy using Massacre Girl and Bishop of Wings – Bishop of Wings shares no creature types with the creatures it creates, so you just use Human or Cleric as the halt counter < 1697393234 816523 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is probably best for my construction because I don't actually need an output from it, just halt / non-halt < 1697393300 78577 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah < 1697393314 447320 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it does have the problem of your combo finisher giving the opponent double-exponentially large amounts of life, making it hard to cause an automatic game win < 1697393353 990071 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but it's probably possible to set up a computation that creates a token army on one side of the field or the other < 1697393368 764270 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :depending on the result < 1697393382 106621 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :yeah and then you make more coat of arms and use the giant creatures to win < 1697393510 274352 :APic!apic@apic.name PRIVMSG #esolangs :♥ < 1697393591 248918 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm not sure if the coat of arms would even matter at that point, quadratic doesn't put a dent in double-exponential < 1697393634 488718 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :likewise, Flooding Waterfall Model doesn't give you a meaningful amount of extra output compared to the original (and may even give less) because exponential growth is trivially small compared to busy beaver numbers < 1697393863 723690 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :oh right you cant convert the bb output into coat of arms < 1697393869 799400 :APic!apic@apic.name PRIVMSG #esolangs :yay < 1697394073 613774 :Europe2048!~Europe204@fableness-hydrant.volia.net JOIN #esolangs * :[https://web.libera.chat] Europe2048 < 1697394092 888153 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Hi everyone < 1697394210 471350 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hi Europe2048 < 1697394575 778725 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :FortyTwoBB: by the way, what's the best way for me to contact the rest of you when I have something to say? < 1697394747 233811 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :How are you? < 1697394756 473839 :APic!apic@apic.name PRIVMSG #esolangs :ais523: Just let Your Client stay here 24/7 < 1697394776 333040 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :APic: my computer isn't switched on 24/7, nor is my Internet connection < 1697394781 540509 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I read the logs quite a lot < 1697394790 280698 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: tired, as usual < 1697394803 287291 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What are you working on? < 1697394810 543080 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a parser generator < 1697394832 450581 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am fed up with existing parser generators, and feel like I could do better < 1697394835 783119 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :What's a parser generator? Also, what language? < 1697394879 221037 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :wait, it's Bishop of Wings now? < 1697394887 981429 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I thought it was one of two other similar cards < 1697394888 720844 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :a parser generator is a program that generates a parser, and a parser is a program or subroutine that converts text input into a machine-readable form < 1697394893 979509 :APic!apic@apic.name PRIVMSG #esolangs :ais523: I switch my Zarniwoop off when i go to sleep too, but i have a VM in the Switzerlands < 1697394900 9953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: it depends on what specific construction we're talking about < 1697394923 215830 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Bishop of Wings is the most convenient in most respects, but the lifegain trigger often screws things up < 1697394927 71569 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I'm not following Magic at all these days so I shouldn't be surprised that there are useful cards that I hadn't heard of < 1697394929 528782 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :ais523: So it's like a [language]-to-assembly converter. < 1697394940 414012 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :Right? < 1697394943 608185 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so some constructions use, e.g., Xathrid Necromancer instead < 1697394946 132439 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: not to assembly < 1697394954 833984 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :just to a data structure that represents the original program < 1697394975 60337 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :going all the way to assembly is called a compiler; compilers will normally contain a parser but they have other parts too < 1697395001 127116 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :b_jonas: I don't have any Pokemon, Yu-Gi-Oh, etc. cards. < 1697395007 672885 :APic!apic@apic.name PRIVMSG #esolangs :Good old Lexer < 1697395029 800411 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Europe2048: that's probably for the best, they are not good value for money < 1697395030 486054 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :APic: I don't have any Pokemon, Yu-Gi-Oh, etc. cards. < 1697395038 401889 :APic!apic@apic.name PRIVMSG #esolangs :Europe2048: So? < 1697395055 69259 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :But have you heard of PokeFarm Q? < 1697395212 837913 :APic!apic@apic.name PRIVMSG #esolangs :Nope < 1697395327 388652 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :It's an online Pokémon thingy. < 1697395337 523999 :Europe2048!~Europe204@fableness-hydrant.volia.net PRIVMSG #esolangs :( pokefarm.com ) < 1697395351 251557 :APic!apic@apic.name PRIVMSG #esolangs :Does reading in the IRCs count as hearing? < 1697395399 207169 :int-e!~noone@int-e.eu PRIVMSG #esolangs :depends on how literal you are < 1697395414 363914 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I sometimes play Pokemon card, since I have some older cards < 1697395439 720161 :APic!apic@apic.name PRIVMSG #esolangs :Uh huh < 1697395455 407743 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :wait, *another* parser generator? < 1697395460 530400 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :or just the same one < 1697395480 488733 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: not ayacc < 1697395511 969454 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ayacc was primarily intended as something that could be used to compile programs that depend on POSIX yacc < 1697395555 651589 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :making more output templates for ayacc sounded plausible, eg. I might want a rust one, or a stackless C++ one < 1697395584 562621 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :whereas with the new one, I'm trying to create something much better than yacc – able to handle more grammars, better at detecting mistakes in the grammar, and the resulting parsers run faster < 1697395623 132411 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :one principle I want is that the parser generator should be powerful enough to handle a combined parser/lexer that's produced simply by writing the lexer rules as parser rules < 1697395623 789371 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :ok, though ayacc is already better at detecting mistakes than yacc, and the resulting parsers likely run faster < 1697395628 283386 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :current yacc completely fails at that < 1697395647 152493 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and ayacc uses the same algorithm for compatibility, so it fails too < 1697395658 309256 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :the lexer rules as parser rules? I specifically don't want that, that would just make the grammar harder for humans to understand < 1697395675 82827 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :if you want to make a separate lexer generator, that could make sense of course < 1697395737 804179 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: say you don't have the same tokens in every place in your document < 1697395750 861184 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :also someone pointed out on this channel that the problem with having the parser grammar handle lexing is that it's harder to tell it to ignore whitespace and comments between almost any two tokens < 1697395768 176317 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that is a problem I've been thinking a lot about < 1697395808 347536 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :sure, I want that for my python syntax extension, but if I have control over both the parser and the lexer than that's not a hard problem < 1697395810 853771 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the correct solution to both of these problems is to have parser-ish rules and lexer-ish rules separate in the input format, but you're allowed to mix them in ways that a separate parser and lexer normally wouldn't be able to < 1697395838 798442 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: it's not a hard problem with respect to correctness, but it is a hard problem with respect to efficiency < 1697395852 194240 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because if the parser is going to tell the lexer what sort of tokens to lex, that limits the evaluation order of the parser < 1697395875 824782 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which invalidates a lot of possible optimisatiions < 1697395893 944180 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :right, and it gets worse if you also want the execution stage to tell the parser or lexer what to accept < 1697395930 725067 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :C-INTERCAL's parser currently does spark/ears matching in the lexer < 1697395961 398050 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm not sure whether it's possible to write it in pure yacc+lex < 1697395974 200310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but if it is it'd probably involve duplicating a lot of rules < 1697396048 100854 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I don't like lex. I only used it like once, after a teacher teaching the course involving lex and yacc told me that he can't give me full marks for homework if my simple tokenizer does not actually use lex. < 1697396076 462811 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm wondering how good yacc is at tokenising < 1697396082 886684 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(apart from the output format, which is wrong) < 1697396091 808763 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :just in terms of the algorithms < 1697396111 911854 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :that's how geo ended up with a flex tokenizer < 1697396118 448067 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :no wait, it's not geo < 1697396118 754405 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it is very difficult to specify things like "identifier that isn't a keyword" in yacc < 1697396124 904297 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :or is it? < 1697396126 761688 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :yes, it's geo < 1697396146 470351 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :and scan too. then I used lex twice. < 1697396159 131406 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(not impossible but you have to basically write a trie of every prefix that no keyword starts with manually) < 1697396232 593058 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I think the original use case of lex was to create a tokenizer that efficiently recognizes a dozen to a few hundred keywords, which look like identifiers until you learn the list < 1697396247 209205 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :C-INTERCAL has a pre-lexer that expands ! to '. (and 🐰 to ".) < 1697396274 937793 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :that's a pre-lexer, not a post-lexer? < 1697396281 441715 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1697396295 28834 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think it runs before the lexer, not sure though < 1697396297 71166 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I had mostly just wrote the parser and lexer in C, although having it separately might be useful sometimes too. < 1697396334 871607 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I guess it can be a pre-lexer, since intercal doesn't have string/format literals < 1697396336 586815 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have handwritten a few parsers recently < 1697396350 734589 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: if it did the expansion would have to be before the lexer < 1697396362 646565 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the whole point is that a ! can match a later ' < 1697396437 460044 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :ais523: I don't mean string literals delimited by apostrophes or rabbit ears, I mean string literals in which an exclamation mark has to be preserved as is without transforming to apostrophe and dot < 1697396465 561380 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :oh, you're saying that the lexer determines which apostrophe is opening or closing < 1697396476 425615 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: right < 1697396480 127844 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :yes, then it makes sense to expand exclams after that < 1697396491 719372 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :expand excalms *before* that < 1697396506 104321 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, my point is that if INTERCAL did have '-delimeted string literals, an exclamation mark would ned the string < 1697396517 658953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :* delimited < 1697396531 528853 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Note that keywords need not look like identifiers if they are distinguished somehow (like they are in LLVM by adding sigils, for example; some of my own designs of programming languages do something similar, too). < 1697396566 456755 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: in the specification for Algol, identifiers and keywords are written in different fonts, and are allowed to have the same spelling < 1697396577 16316 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that created some interesting challenges for implementations < 1697396612 907965 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the portable standard was to write a . before keywords so that they could be distinguished from identifiers formed from the same letters < 1697396614 507894 :arseniiv!~arseniiv@188.64.15.98 QUIT :Quit: gone too far < 1697396615 420873 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :I avoid most "parser generators".  I either handcode the lexer and parser, or I want to use something more solidly theory-based than lex and yacc < 1697396633 719813 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: what do you mean by "solidly theory-based"? < 1697396636 725010 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :they probably got that from the fortran .LE. operator then < 1697396655 259864 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :ais523: like a parser combinator library, or an attribute-grammar-based formalism < 1697396682 14251 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :lex and yacc be all like "let's intersperse some C code with some other junk in an expedient fashion" < 1697396693 661219 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :like, no < 1697396707 76395 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: I am hugely opposed to parser combinator libraries, for two reasons: a) they make it easy to write an ambiguous grammar without realising it, b) they make it easy to write a very slow parser without realising it < 1697396733 359174 :APic!apic@apic.name PRIVMSG #esolangs :☺ < 1697396733 874945 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I also disagree with many decisions lex/yacc have made, including that one < 1697396751 599239 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :You could use a character set that uses different character codes for keywords vs identifiers, if such a thing is necessary < 1697396756 77698 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :…this is part of why I want to write my own parser generator < 1697396758 308467 :APic!apic@apic.name PRIVMSG #esolangs :My Friend who studies Informatik at the Fernuni Hagen has to write Pascal-Code < 1697396772 676710 :APic!apic@apic.name PRIVMSG #esolangs :Very easy to make a Pascal Compiler < 1697396777 308298 :APic!apic@apic.name PRIVMSG #esolangs :Very ugly to program in it < 1697396781 336102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: a common nonportable approach at the time was to use uppercase vs. lowercase < 1697396786 580902 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :well, in theory you could have a parser combinator library that doesn't have full backtracking alteration, but only alternation where you explicitly have to specify the lookahead and the lookahead condition is more limited than the rest of the grammar < 1697396788 368726 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :ais523: I don't really disagree, a lot of parser combinator libraries are annoying to use < 1697396797 816011 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but in 1968 I'm not sure that all computers even supported two cases < 1697396843 889814 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the thing I am most opposed to in yacc is the way it handles precedence < 1697396848 827952 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I wrote this file: http://sprunge.us/y2f0gi Could something like this be possible for parsing? < 1697396860 606052 :Thelie!~Thelie@185.66.193.30 JOIN #esolangs * :Thelie < 1697396867 599785 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :basically because it is very easy to handle precedence in a mathematically rigorous way, but yacc does something else < 1697396875 232292 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I find yacc precedences confusing, but that might be only because I don't understand itsrules < 1697396907 880845 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: most parser generators have input that looks something like that, but typically not with exactly that syntax < 1697396913 12117 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I think you explained to me at one point that they don't work anything like I thought they work < 1697396929 296517 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: no, you're right to be confused, its rules are designed for implementation convenience rather than making any sense < 1697396933 603425 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Although, this file I did does not have precedence since it is for a programming language that does not have precedence.) < 1697396959 571793 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :anyway, if you get this new parser generator to work I'll be interestd < 1697396992 217932 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :zzo38: any grammar that can be expressed using precedence can be expressed without it, it just becomes bigger and harder to read < 1697397018 752183 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :as such, my opinion about precedence is that parser generators should simply be written to do that transformation before generating the parser < 1697397090 804227 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which would give the most intuitive possible behaviour – it would not be tied to the parser internals at all, and there would never be a case where the parser generator doesn't tell you about an ambiguity because it thought you had resolved it with precedence rules, when you were actually trying to resolve some other ambiguity < 1697397229 439783 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: there's a great example in the paper about IELR where yacc (and Bison in LALR mode) can't parse some inputs because there is a lossy optimisation in LALR that is normally not a problem because it causes an ambiguity to be reported in cases where the optimisation is applied lossily, but that ambiguity ends up getting overridden by a precedence rule, with the consequence that some valid input just doesn't parse < 1697397248 300210 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and this was actually discovered to affect at least one real-world program < 1697397408 487663 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :ais523: is that in a situation when the token that is in the yacc precedence rule is used in more than one different way, and the precedence was supposed to have affected only one of them? because that's the obvious easy way to mess up yacc precedence, but I assume it's not the only way < 1697397451 567648 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: probably; I can't remember the details, but that is a very common way to go wrong in yacc < 1697397519 268437 :APic!apic@apic.name PRIVMSG #esolangs :What exactly differentiates Lexers from Parsers, apart from the Input-Chain-Length? < 1697397623 364160 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :APic: the distinction is sort-of artificial; but normally lexer generators generate finite state machines and parser generators generate push-down automata, so lexers have to be finite state transducers to be generated with a typical lexer generator < 1697397717 848431 :APic!apic@apic.name PRIVMSG #esolangs :Thanks < 1697397734 111476 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although, nowadays languages often have fancy forms of string literal that can't be parsed finite-state, e.g. raw string literals which are surrounded by arbitrarily long sequences so you can pick one that doesn't appear in the string itself, or here-documents < 1697397747 69057 :APic!apic@apic.name PRIVMSG #esolangs :ic < 1697397752 596133 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so it's unclear whether there's actually a mathematical distinction at this point or whether it's just a matter of tradition < 1697397790 18160 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(that said, a push-down automaton can't do the raw string literals either, so some sort of generalisation is needed) < 1697397818 732179 :APic!apic@apic.name PRIVMSG #esolangs :lol < 1697397831 218679 :APic!apic@apic.name PRIVMSG #esolangs :Just noticed „unclear“ has „nuclear“ as an Anagramm < 1697397836 837983 :APic!apic@apic.name PRIVMSG #esolangs :s/mm/m/ < 1697398356 162192 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :if you make a parser generator that knows how to make a lexer too, that could be useful, because it could tell you if you want to introduce a new digraph symbol when that is ambiguous with the existing tokens in a way that can occur according to the parser, eg. it could tell you if : > could occur in C++ so you might not want to use :> as a digraph (it's way too late not to use :> as a digraph in C++ < 1697398362 154838 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :obviously) < 1697398550 999456 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :funnily, push-down automatons are enough for lua's long delimited string literal, but not for C++'s long delimited string literals (unless you want to add like 2**128 states because the standard says that the extra delimiter is at most 16 characters long) < 1697398597 683629 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :and then there's mime's delimited format, which uses even longer delimiters, so that you can just make the delimiter long and random and hope it doesn't occur in the data that you're delimiting < 1697398714 623538 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :ais523: the ease with which you can accidentally make a backtracking parser with most parser combinator libraries reminds me that I thought about taking measures to avoid that in my AG formalism: a production has to be marked as "backtracking ok" otherwise it won't be allowed to.  (haven't worked out the details yet though.) < 1697398716 472634 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I have actually been seriously considering the "add like 2**128 states" solution, and simply storing the parser table compressed in such a way that you can use the compressed format directly < 1697398751 744710 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :zzo38: is sprunge.us a good pastebin? < 1697398756 981103 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :cpressey: hmm, that's interesting < 1697398778 947470 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :sprunge is pretty good for short-term pastes, as long as you're OK with pasting from the command line rather than using a web interface < 1697398787 535324 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the pastes seem not to last forever, though < 1697398798 358631 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :the problem about parser generators for me is that, if I invent a language then I'll make one for which I understand the grammar enough that I know how to handwrite a parser for it, so parser generators are mostly useful for the ugly cases when you want to parse some existing language with lots of silly historical cruft, like SQL < 1697398800 137190 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which can be a problem in some cases < 1697398829 473173 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: what about things like generating good error messages for every possible invalid input? < 1697398843 850353 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I find that a pain to do when writing by hand, admittedly many parser generators aren't too good at it either < 1697399104 355140 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :Good error messages contain line and column and source file name.  Those can be a chore to track, too. < 1697399534 294409 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes, to the extent that it makes sense to have a utility class/structure/library that does file reading and tracks the line/column as it goes (and source file if you have more than one of them) < 1697399548 454678 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(but most of the time I need a parser, I only have one source file anyway) < 1697399594 220801 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :ais523: yes, perhaps a parser generator might help generate useful error messages, though I think only if the input for the parser generator has useful hints for that < 1697399660 515802 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think a lot can be done without hints, but maybe not everything < 1697399701 109907 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I usually add good error messages lazily, as in my program is full of cases where it just gives up, but until I actually encounter such a give up case or I expect to encounter it, the error message that it prints isn't informative < 1697399752 220410 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :if my program dies and I don't understand why, then I make it print useful info to that error message, and possibly print debug info earlier too < 1697399792 204927 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :of course this won't work well with programs that you can't rerun reproducibly, or with programs that other peoplee have to run without me being available < 1697400151 977563 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :In the olden days, people wanted to see as many syntax errors as possible in an error message, so they could fix them all before trying to compile again. < 1697400172 863867 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :That's also what the semicolons were for, to help "error recovery". < 1697400197 282508 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :cpressey: semicolons are still useful for that < 1697400203 144723 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :So that was another thing a parser generator could take off your hands. < 1697400220 366548 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :well, not specifically error recovery, but to get useful error messages if you forget a closing paren < 1697400231 140199 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :But compiling is so much cheaper these days, these things matter so much less. < 1697400279 833305 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :yeah < 1697400306 605981 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :I still use parens in JS but I feel like I get nasty looks for doing so < 1697400324 488753 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :parens for what? < 1697400339 853138 :cpressey!~cpressey@host-92-21-195-194.as13285.net PRIVMSG #esolangs :doh I meant semicolons < 1697400368 957292 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wait, there are people who don't use semicolons in JS? < 1697400385 901027 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :is this some sort of micro-golf in order to save a few pennies on bandwidth? < 1697400438 473928 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :I expect there are people who don't use semicolons (most of the time) beacuse JS has some quite complicated grammar rules for when you can omit semicolons and they wouldn't have added those unless someone wanted to use them < 1697400605 464174 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :It looks more modern without semicolons. < 1697400692 600377 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :But I don't think *using* them is uncommon either. The style guide at work mandates them, and MDN says it's "considered best practice, however, to always write a semicolon after a statement, even when it is not strictly needed." < 1697400748 908397 :b_jonas!~x@89.134.28.176 PRIVMSG #esolangs :fizzie: do you have an interpreter or linter that can warn you when you miss a semicolon? < 1697401343 602636 :Koen!~Koen@2a01:e34:ec7c:30:90a6:3649:bcf5:a397 QUIT :Remote host closed the connection < 1697402546 533269 :FortyTwoBB!~FortyTwoB@97-120-159-76.ptld.qwest.net PRIVMSG #esolangs :ais523 yeah im not sure what the best way to connect with us would be. > 1697402685 580262 PRIVMSG #esolangs :14[[07QwertyScript14]]4 M10 02https://esolangs.org/w/index.php?diff=117929&oldid=105078 5* 03PythonshellDebugwindow 5* (+93) 10Categories > 1697403482 643922 PRIVMSG #esolangs :14[[07Expressive14]]4 M10 02https://esolangs.org/w/index.php?diff=117930&oldid=116118 5* 03PythonshellDebugwindow 5* (+24) 10Category > 1697403835 293769 PRIVMSG #esolangs :14[[07Trampolines14]]4 10 02https://esolangs.org/w/index.php?diff=117931&oldid=117918 5* 03Aadenboy 5* (+1943) 10a < 1697404173 942636 :Europe2048!~Europe204@fableness-hydrant.volia.net QUIT :Quit: Client closed > 1697404643 141733 PRIVMSG #esolangs :14[[07User talk:Europe204814]]4 10 02https://esolangs.org/w/index.php?diff=117932&oldid=116933 5* 03PixelatedStarfish 5* (+97) 10/* Project Euler problem 10 implementation */ > 1697404677 544120 PRIVMSG #esolangs :14[[07User talk:Europe204814]]4 10 02https://esolangs.org/w/index.php?diff=117933&oldid=117932 5* 03PixelatedStarfish 5* (+27) 10 < 1697405063 215266 :cpressey!~cpressey@host-92-21-195-194.as13285.net QUIT :Quit: Client closed < 1697405227 85903 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :cpressey: Sprunge seems good enough to me. (Although, in the past I think once I tried to send a file with a few non-ASCII characters and they were deleted, so that might be of a consideration) < 1697405369 399359 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(Also, both command-line and web interface work OK) < 1697405567 629438 :fizzie!~irc@selene.zem.fi PRIVMSG #esolangs :b_jonas: I don't remember if I've actually tried writing JS at work, but I would imagine there is something. Other languages definitely do. < 1697406118 875543 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :Why does C have fmemopen and open_memstream but not a function to open a new in-memory file for reading and writing (without needing to specify a pointer to the buffer or a pointer to a variable to store the pointer to the buffer) which is automatically destroyed when the file is closed? < 1697406137 227058 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :I think that the automatic semicolon insertion is one of the bad ideas of JavaScript. < 1697406229 833952 :zzo38!~zzo38@host-24-207-52-143.public.eastlink.ca PRIVMSG #esolangs :(The fmemopen function allows to open a fixed-size in-memory file similar than the above, but not dynamic sizing which is what open_memstream does, which requires specifying the pointers and is meant only for writing and not for reading) < 1697409455 951479 :FreeFull!~freefull@46.205.213.254.nat.ftth.dynamic.t-mobile.pl QUIT : > 1697409923 929860 PRIVMSG #esolangs :14[[07F!--14]]4 M10 02https://esolangs.org/w/index.php?diff=117934&oldid=117922 5* 03None1 5* (+59) 10/* Commands */ The output command in F!-- exists, but outputs an integer > 1697410341 495081 PRIVMSG #esolangs :14[[07F!--14]]4 10 02https://esolangs.org/w/index.php?diff=117935&oldid=117934 5* 03None1 5* (+111) 10Added an example (XKCD Random Number) to show that F!-- has integer output < 1697410395 736639 :Thelie!~Thelie@185.66.193.30 QUIT :Remote host closed the connection > 1697410622 320338 PRIVMSG #esolangs :14[[07F!--14]]4 M10 02https://esolangs.org/w/index.php?diff=117936&oldid=117935 5* 03None1 5* (+82) 10/* Interpreter */ The lisp interpreter is wrong, I changed it to a Python interpreter < 1697411941 713290 :Noisytoot!~noisytoot@sourcehut/user/noisytoot PRIVMSG #esolangs :I don't use unnecessary semicolons in JS > 1697411974 537076 PRIVMSG #esolangs :14[[07--yay14]]4 M10 02https://esolangs.org/w/index.php?diff=117937&oldid=82414 5* 03PythonshellDebugwindow 5* (+8) 10Link, categories < 1697413161 521168 :ais523!~ais523@user/ais523 QUIT :Remote host closed the connection < 1697413234 364386 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1697414105 454272 :GreenHat!~greenhat@82.sub-174-215-177.myvzw.com JOIN #esolangs * :greenhat