> 1741997404 66071 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154001&oldid=154000 5* 03Stkptr 5* (+351) 10/* Equivalence to with / */ > 1741998364 924185 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 M10 02https://esolangs.org/w/index.php?diff=154002&oldid=154001 5* 03Stkptr 5* (+0) 10/* Equivalence to with / */ > 1741998396 826114 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 M10 02https://esolangs.org/w/index.php?diff=154003&oldid=154002 5* 03Stkptr 5* (+0) 10/* Equivalence to with / */ < 1742000383 341974 :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 > 1742000424 473217 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154004&oldid=154003 5* 03Stkptr 5* (+176) 10/* Equivalence to with / */ > 1742000665 110426 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154005&oldid=154004 5* 03Stkptr 5* (+26) 10/* with +, -, * (at least FSM) */ > 1742000725 997798 PRIVMSG #esolangs :14[[07Esolang:Introduce yourself14]]4 10 02https://esolangs.org/w/index.php?diff=154006&oldid=153719 5* 03Helpeesl 5* (+100) 10 > 1742000751 400433 PRIVMSG #esolangs :14[[07Marble maze14]]4 N10 02https://esolangs.org/w/index.php?oldid=154007 5* 03Helpeesl 5* (+3578) 10Created page with "== Info == Marble Maze is a multidimensional esolang made by Elijah Hunt(helpeesl) on March 14th 2025 and is inspired by marble mazes, hence the name. ==Commands== {| class="wikitable sortable" |+ Board commands |- ! Commands !! What they do |- | @ || When the prog > 1742001829 222731 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154008&oldid=154007 5* 03Helpeesl 5* (-1) 10/* Commands */ < 1742002170 967517 :FreeFull!~freefull@79.186.72.59.ipv4.supernova.orange.pl QUIT : > 1742005375 890723 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154009&oldid=154008 5* 03Helpeesl 5* (-2) 10 > 1742005606 437234 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154010&oldid=153955 5* 03C0ffee 5* (+25) 10 > 1742005687 136248 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154011&oldid=154010 5* 03C0ffee 5* (+30) 10 > 1742005747 958420 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154012&oldid=154011 5* 03C0ffee 5* (+34) 10 > 1742005805 803700 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154013&oldid=154009 5* 03Helpeesl 5* (+130) 10 > 1742005826 351835 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154014&oldid=154013 5* 03Helpeesl 5* (+2) 10 > 1742005906 283853 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154015&oldid=154012 5* 03C0ffee 5* (+90) 10 > 1742005932 938389 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154016&oldid=154014 5* 03Helpeesl 5* (+5) 10 > 1742006144 583151 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154017&oldid=154016 5* 03Helpeesl 5* (-88) 10 > 1742006210 394403 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154018&oldid=154015 5* 03C0ffee 5* (+155) 10 > 1742006764 966646 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154019&oldid=154017 5* 03Helpeesl 5* (+148) 10 > 1742006983 230415 PRIVMSG #esolangs :14[[07Sb14]]4 10 02https://esolangs.org/w/index.php?diff=154020&oldid=154018 5* 03C0ffee 5* (+14) 10 > 1742007851 224252 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154021&oldid=154019 5* 03Helpeesl 5* (+0) 10/* Commands */ > 1742007873 302169 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154022&oldid=154021 5* 03Helpeesl 5* (-6) 10/* Truth machine */ > 1742008170 981151 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=154023&oldid=153980 5* 03Helpeesl 5* (+18) 10 < 1742008269 753747 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :100th Coin has uploaded another Mario 3 video: https://www.youtube.com/watch?v=pK7hU-ovUso > 1742008479 886691 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154024&oldid=154022 5* 03Helpeesl 5* (+14) 10 > 1742008508 719799 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154025&oldid=154024 5* 03Helpeesl 5* (+9) 10 > 1742008575 357902 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154026&oldid=154025 5* 03Helpeesl 5* (+18) 10 > 1742008666 508712 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154027&oldid=154026 5* 03Helpeesl 5* (+23) 10 < 1742009154 390849 :chiselfuse!~chiselfus@user/chiselfuse QUIT :Read error: Connection reset by peer < 1742009172 908756 :chiselfuse!~chiselfus@user/chiselfuse JOIN #esolangs chiselfuse :chiselfuse > 1742009343 162634 PRIVMSG #esolangs :14[[07Talk:Marble maze14]]4 N10 02https://esolangs.org/w/index.php?oldid=154028 5* 03Aadenboy 5* (+364) 10Created page with "it's quite fun seeing more marble based languages! I'll def try this out later! ~~~~" > 1742010298 775891 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154029&oldid=154027 5* 03Helpeesl 5* (+70) 10 > 1742010613 717620 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154030&oldid=154029 5* 03Helpeesl 5* (+92) 10/* Info */ > 1742010645 953138 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154031&oldid=154030 5* 03Helpeesl 5* (+2) 10 > 1742010851 391790 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154032&oldid=154031 5* 03Helpeesl 5* (+9) 10 > 1742010897 721083 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154033&oldid=154032 5* 03Helpeesl 5* (+0) 10 > 1742010918 289674 PRIVMSG #esolangs :14[[07Users:helpeesl14]]4 N10 02https://esolangs.org/w/index.php?oldid=154034 5* 03Helpeesl 5* (+12) 10Created page with "Hi Im Eli" > 1742010983 705002 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154035&oldid=154033 5* 03Helpeesl 5* (-13) 10 > 1742010995 781303 PRIVMSG #esolangs :14[[07User:Helpeesl14]]4 N10 02https://esolangs.org/w/index.php?oldid=154036 5* 03Helpeesl 5* (+12) 10Created page with "Hi Im Eli" > 1742011012 179037 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154037&oldid=154035 5* 03Helpeesl 5* (+12) 10 > 1742011054 559968 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154038&oldid=154037 5* 03Helpeesl 5* (+0) 10 > 1742011109 699612 PRIVMSG #esolangs :14[[07User:Helpeesl14]]4 10 02https://esolangs.org/w/index.php?diff=154039&oldid=154036 5* 03Helpeesl 5* (+23) 10 > 1742011446 964137 PRIVMSG #esolangs :14[[07User:Helpeesl14]]4 10 02https://esolangs.org/w/index.php?diff=154040&oldid=154039 5* 03Helpeesl 5* (+215) 10 > 1742012974 957956 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154041&oldid=154038 5* 03Helpeesl 5* (-2) 10 > 1742013154 235977 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154042&oldid=154041 5* 03Helpeesl 5* (+4) 10 > 1742013263 614616 PRIVMSG #esolangs :14[[07User:Helpeesl14]]4 10 02https://esolangs.org/w/index.php?diff=154043&oldid=154040 5* 03Helpeesl 5* (+16) 10 > 1742013615 851542 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154044&oldid=154042 5* 03Helpeesl 5* (+1) 10 > 1742013761 411463 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154045&oldid=154044 5* 03Helpeesl 5* (-5) 10 > 1742013810 218854 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154046&oldid=154045 5* 03Helpeesl 5* (+1) 10 > 1742014195 925046 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154047&oldid=154046 5* 03Helpeesl 5* (+49) 10 > 1742014258 96814 PRIVMSG #esolangs :14[[07CJKGolfer14]]4 10 02https://esolangs.org/w/index.php?diff=154048&oldid=153960 5* 03PrySigneToFry 5* (+60) 10 > 1742014624 371052 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154049&oldid=154047 5* 03Stkptr 5* (+0) 10/* Extra stuff */ That's not what the halting problem is < 1742015120 429840 :mtm!~textual@47.202.75.129 QUIT :Ping timeout: 252 seconds < 1742015205 442975 :mtm!~textual@47.202.75.129 JOIN #esolangs mtm :Textual User > 1742016472 348010 PRIVMSG #esolangs :14[[07Talk:4 bits, 8 bytes14]]4 10 02https://esolangs.org/w/index.php?diff=154050&oldid=137309 5* 03PrySigneToFry 5* (+924) 10 > 1742016491 470534 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154051&oldid=154049 5* 03Helpeesl 5* (+204) 10 > 1742016750 846081 PRIVMSG #esolangs :14[[07Marble maze14]]4 10 02https://esolangs.org/w/index.php?diff=154052&oldid=154051 5* 03Helpeesl 5* (+33) 10 > 1742017380 152178 PRIVMSG #esolangs :14[[072 Trits, 1 Trybble14]]4 10 02https://esolangs.org/w/index.php?diff=154053&oldid=132850 5* 03PrySigneToFry 5* (+21) 10 < 1742022790 487735 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1742022801 957508 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 248 seconds < 1742022872 630156 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life < 1742024216 394409 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 JOIN #esolangs * :Textual User < 1742024243 767432 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 QUIT :Client Quit < 1742024684 992411 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 JOIN #esolangs * :Textual User < 1742025833 350029 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742026189 431610 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 JOIN #esolangs * :Textual User > 1742028716 680151 PRIVMSG #esolangs :14[[07Talk:Brainfuck: Free Version14]]4 10 02https://esolangs.org/w/index.php?diff=154054&oldid=148716 5* 03PrySigneToFry 5* (+75) 10/* How can I get the Premium Version?(by PSTF) */ new section > 1742030582 546208 PRIVMSG #esolangs :14[[07Surround notation14]]4 10 02https://esolangs.org/w/index.php?diff=154055&oldid=77702 5* 03PrySigneToFry 5* (+16) 10 > 1742030692 545295 PRIVMSG #esolangs :14[[0716 bits, 256 bytes14]]4 N10 02https://esolangs.org/w/index.php?oldid=154056 5* 03PrySigneToFry 5* (+4996) 10Created page with "16 bits, 256 bytes is an Esolang designed by PSTF, and his new AI friend DeepSeek-R1 671b. It is to be not a joke, just like [[6 bits, 12 bytes]]. It is second x-bits, y-bytes, non-joke langugage. = Overview = 16 bits, 2556 bytes uses a 16 bit CPU and > 1742030743 155122 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=154057&oldid=154023 5* 03PrySigneToFry 5* (+25) 10 > 1742030798 229473 PRIVMSG #esolangs :14[[07Game of Life14]]4 10 02https://esolangs.org/w/index.php?diff=154058&oldid=153993 5* 03PrySigneToFry 5* (+18) 10 < 1742031927 929914 :craigo!~craigo@user/craigo JOIN #esolangs craigo :realname < 1742033980 352244 :tromp!~textual@2a02:a210:cba:8500:2976:d855:98e3:1901 QUIT :Read error: Connection reset by peer < 1742035309 387955 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer > 1742037307 684284 PRIVMSG #esolangs :14[[07User talk:None114]]4 10 02https://esolangs.org/w/index.php?diff=154059&oldid=153489 5* 03None1 5* (+376) 10/* You're currently not active now. */ < 1742040034 501817 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User > 1742040261 456953 PRIVMSG #esolangs :14[[07User talk:None114]]4 10 02https://esolangs.org/w/index.php?diff=154060&oldid=154059 5* 03PrySigneToFry 5* (+1027) 10 > 1742040959 784787 PRIVMSG #esolangs :14[[07Talk:Pyline14]]4 N10 02https://esolangs.org/w/index.php?oldid=154061 5* 03Gilbert189 5* (+248) 10Created page with "== exec? == exec(""" while True: print("If it uses exec, is it Pyline?") # I'm surprised that nobody actually bothered to ask this since 2022. """) --~~~~" < 1742041162 89460 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs amby :realname > 1742042892 782730 PRIVMSG #esolangs :14[[07Pyline Classic14]]4 10 02https://esolangs.org/w/index.php?diff=154062&oldid=150172 5* 03PkmnQ 5* (+46) 10/* Brainfuck interpreter */ a few walrus operators slipped their way through > 1742042975 123355 PRIVMSG #esolangs :14[[07User talk:None114]]4 10 02https://esolangs.org/w/index.php?diff=154063&oldid=154060 5* 03I am islptng 5* (+64) 10/* You're currently not active now. */ < 1742043020 563906 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742044039 925981 :FreeFull!~freefull@79.186.73.126.ipv4.supernova.orange.pl JOIN #esolangs FreeFull :FreeFull > 1742044663 155934 PRIVMSG #esolangs :14[[07User talk:None114]]4 10 02https://esolangs.org/w/index.php?diff=154064&oldid=154063 5* 03PrySigneToFry 5* (+242) 10 > 1742045910 149765 PRIVMSG #esolangs :14[[0716 bits, 256 bytes14]]4 10 02https://esolangs.org/w/index.php?diff=154065&oldid=154056 5* 03PrySigneToFry 5* (+27) 10 < 1742047446 706537 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User > 1742052359 106562 PRIVMSG #esolangs :14[[07Pyline Classic14]]4 M10 02https://esolangs.org/w/index.php?diff=154066&oldid=154062 5* 03Corbin 5* (-20) 10/* Brainfuck interpreter */ It's now a group project. Your credit will still be preserved in the edit history. > 1742052548 310490 PRIVMSG #esolangs :14[[07Talk:Pyline14]]4 10 02https://esolangs.org/w/index.php?diff=154067&oldid=154061 5* 03Corbin 5* (+452) 10/* exec? */ Yes, and. < 1742055817 447054 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742057443 38268 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User < 1742058293 102125 :mtm!~textual@47.202.75.129 QUIT :Ping timeout: 248 seconds < 1742058398 693123 :mtm!~textual@47.202.75.129 JOIN #esolangs mtm :Textual User > 1742058448 784891 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154068&oldid=154005 5* 03Stkptr 5* (+1422) 10/* with +, -, * (at least FSM) */ It's probably equivalent to the nonnegative integers with + and * > 1742058546 593491 PRIVMSG #esolangs :14[[07Fun 2 code14]]4 10 02https://esolangs.org/w/index.php?diff=154069&oldid=153595 5* 03I am islptng 5* (-167) 10 < 1742058700 584212 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Are there any languages that *don't* admit some sort of decomposition? I can't decide if this is a super-deep question or extremely stupid. > 1742058803 509665 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154070&oldid=154068 5* 03Stkptr 5* (+348) 10/* Removal of - */ < 1742059836 888271 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742061255 911699 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) < 1742061267 683075 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I suspect the answer to that question may depend on how you define "decomposition" < 1742061294 440763 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Allow me to dump a list of examples. < 1742061349 295236 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :In Prolog, a program is a pile of Horn clauses. In many flowchart languages, a program is a pile of basic blocks. In Scheme, a program is a tree. < 1742061354 879386 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I was considering a similar (possibly identical?) problem a while ago, to create a language in which programs had to be written all at once and couldn't be built up from smaller pieces < 1742061389 815576 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This kind of extremely simple-minded framing is really useful for partial evaluation. But even languages that aren't so simple still have nice decomposition sometimes. < 1742061437 826204 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are existing languages based around hash reversal, e.g. any Bubblegum program that's able to access unbounded memory or do any control flow needs to have a specific SHA-256 hash < 1742061439 33986 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I was considering binding-time analysis in an arbitrary category, and was able to get the BTA for Brainfuck as an immediate consequence, because Brainfuck is almost entirely built from a monoid and the underlying storage is algebraically easy to describe. < 1742061466 464763 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, are you thinking mostly syntactically with the decomposition? < 1742061505 277722 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think no-control-flow-and-implicit-loop languages are hard to decompose in that sense, things like Blindfolded Arithmetic or Three Star Programmer – but it's fairly easy to compile into them from programs with more structure < 1742061516 439738 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Abstract syntax, yes. Don't care about concrete syntax; we typically analyze e.g. C as a basic-block language. < 1742061559 364705 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :TSP should admit a decent BTA. I'm still wrapping my head around Blindfolded Arithmetic and trying to figure out what kind of cryptanalytic tools are useful. < 1742061609 606096 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, Blindfolded Arithmetic isn't really encrypted, the main challenge if you have few variables is juggling data storage and control flow < 1742061660 456357 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Imprecision (which is related to Blindfolded Arithmetic) is much harder due to the way that control flow tends to corrupt the data – I think it's probably still TC but am not usre < 1742061663 462617 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :For example, I think of the Chinese Remainder theorems as cryptanalytic. I didn't learn group theory until after I already learnt the basics of hash cracking. < 1742061731 617841 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :TIL about Bubblegum. Quite funny. I'd be happy to break it, but it'll be a few decades; any feasible attack would be better spent slurping arbitrage out of e.g. the Bitcoin market, and I'd like to retire first. < 1742061777 661126 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the SHA-256 requirement is basically just there because the language isn't "intended" to write arbitrary programs and the aim was to avoid triggering the TC codepath accidentally, whilst still making itechnically a valid language < 1742061782 223514 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :...Maybe this is the universe sending me a sign that I should get on that whole Bitcoin thing before somebody else finds it. < 1742061816 456106 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :A Pear Tree does something similar but I intentionally used a hash that wasn't preimage-resistant for that one < 1742061827 808752 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, really? If that's the case, then SHA-256 was *not* a good choice of hash function. Probably should have chosen something that's more symmetrically hard to assault, like RIPEMD-160. < 1742061833 833074 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(because people were intended to be able to write arbitrary programs in it) < 1742061879 336395 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if I had had the idea for Bubblegum rather than Dennis, I would probably have designed it differently < 1742061885 73271 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :different language designers have different styles < 1742061933 97889 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :No worries. When I'm pronoun-dropping, I'm usually intending the ambiguity. I prefer postmortem (or at least post-author-being-here) analysis to be blameless, because the goal isn't to shame but to do better in the future. < 1742061997 889112 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that said, my main regret with A Pear Tree is that the size of the CRC doesn't scale with the size of the program, making extremely long programs hard to write due to the risk of false positives < 1742062011 646038 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I didn't realise that was a (theoretical) problem until I'd been using it for a while < 1742062079 974266 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(also, the interpreter isn't as optimised as I'd like, there's probably a linear-time algorithm for "identify the longest substring with a CRC-32 of 0" due to the way CRCs work, but the reference interpreter is quadratic) < 1742062135 354230 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, going back to the original question, I think a language which is hard to decompose would also be hard to program in, or to prove TC < 1742062161 279201 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for something like Feed the Chaos, it is very unclear how storage of arbitrarily large data works, if it works at all < 1742062175 209199 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and yet you'd need to figure that out in order to be able to decompose programs in a meaningful way < 1742062250 767235 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(Feed the Chaos is basically a finite-state machine plus a PRNG whose state expands over time, allowing it to "store" arbitrary data, but with no obvious way to extract the data again because doing so would require distinguishing the pseudo-randomness from true randomness using just a finite state machine) < 1742062527 348456 :chiselfuse!~chiselfus@user/chiselfuse QUIT :Remote host closed the connection < 1742062527 420854 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :korvo: one thing you can do in any Turing-complete language is to encrypt most of the code so it can only run if the input gives a specific key for the symmetric encryption, and then it's impossible to find how the code decomposes (or tell anything about what it does) unless you know that key < 1742062543 691940 :chiselfuse!~chiselfus@user/chiselfuse JOIN #esolangs chiselfuse :chiselfuse < 1742062606 57941 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: So, that's similar to what ais523 did with A Pear Tree and what Dennis did with Bubblegum. I don't think that that's a serious obstacle. < 1742062617 593512 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User < 1742062654 537790 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Maybe it's easiest to see with Bubblegum, where I could assemble a partial evaluator from two components: a partial evaluator for Python and a second-preimage oracle for SHA-256. (Which I should emphatically stress I do *not* have.) < 1742062724 59177 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I don't know about Feed the Chaos. And maybe that's a good place to draw a line, because it seems like anything we learn about Collatz-style chaos is going to clarify how FtC's programming model would work. < 1742062809 561648 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I am busy trying to work out what partial evaluation in, say, the I/D machine "conceputally" is < 1742062823 521146 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it feels like it should be meaningful but I am having trouble defining it < 1742062848 534953 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(likewise for Blindfolded Arithmetic or Three Star Programmer) < 1742062931 524608 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Well, it involves a complete modelling of the RAM, because that's where an input parameter would be passed in. < 1742062941 240976 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess the problem is that programs in that sort of language generally rely heavily on invariants in order to keep the behaviour of code contained – the blocks of code are only designed to be meaningful under certain invariants that hold all program (except during startup) and are unlikely to happen by chance < 1742063010 762737 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :Three Star Programmer and the I/D machine both have somewhat difficult startups for the known programming techniques, generally they've been found by writing startup code and then working out how to left-cancel it < 1742063011 702614 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :A partial evaluator for TSP is very simple; it's a function N* × N* → N* sending pairs of lists of nats to a list of nats. The question is how TSP models computable functions. < 1742063028 61563 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(but the left-cancelling also depends on the invariants) < 1742063068 995300 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: why are there two lists? program and RAM? < 1742063119 664590 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Partial evaluation is always defined relative to an input parameter. They're both programs when we're talking about non-trivial stuff. In TSP's case, yeah, I guess it'd be passed via RAM. > 1742063173 724933 PRIVMSG #esolangs :14[[07General blindfolded arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=154071&oldid=154070 5* 03Stkptr 5* (+958) 10/* Equivalence to with / */ < 1742063178 601926 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it isn't even immediately obvious to me how input works in 3SP < 1742063200 297257 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :It's obvious to me that it *must* work, somehow, or else it can't do something a Turing machine can. < 1742063220 485326 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it does, but you need an encoding < 1742063239 110569 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the output encoding in the article is a bit weird, but generic enough that you can usually fit programs around it < 1742063268 842067 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but an input encoding is harder because in some sense it's tied to the program's memory layout < 1742063375 340877 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess you could just use a sufficiently spaced-out stream of 0 and 1 in RAM (with the addresses forming an arithmetic progression), then a program could add to the cells before reading them in order to move the addresses somewhere that they could handle < 1742063380 598786 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Well, I figured that the identity encoding is a decent-enough starting choice. And yeah, the program is allowed to non-uniformly depend on the encoding; what matters is that each encoding has its own associated proof of computability. < 1742063396 614038 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although 0 and 2 might make it easier to write the startup code < 1742063434 704544 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, now I am wondering whether there are any inherently locked-up RAM initialisation patterns in Three Star Programmer < 1742063443 32910 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Since one encoding can be transformed into another, there should be an underlying category, so just compose to victory. We're not begging the existence of that composition, I think. < 1742063450 94907 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :i.e. if memory has a certain state, then certain cells will be unchangeable/unreadable < 1742063492 302354 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(barring degenerate solutions like "initialise all RAM cells with 1, now cell 0 is unwriteable and unreadable") < 1742063536 788212 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: FWIW I will credit you with achieving the goal in practice; I can't actually imagine sitting down and building any of these partial evaluators. I can't even imagine partial evaluation of BIIA? < 1742063574 341298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I guess my problem is that although the encodings can be transformed into each other given a sufficiently powerful language, 3SP can't do the transformation "from inside" – I suspect the language is insufficiently powerful to read arbitrarily initialised RAM < 1742063671 80918 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so when I think about a partial evaluator, I'm mostly thinking about it from the language's own point of view < 1742063746 621323 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think about Three Star Programmer in terms of a wimpmode in which you can use one, two or three stars – this is much easier to program in, and there's a type of partial evaluation that's much easier to achieve in the wimpmode (if you can assume a memory address is not changed indirectly while a fragment of code is running, and starts with a known value, you can constant-fold) < 1742063804 171013 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Oh, okay, I think I confused TSP with something else. All TSP programs run forever, right? So what's an example of a Rice property in TSP? < 1742063813 100804 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the primary difficulty is just that 3SP always has *exactly* three levels of indirection, if you want fewer you need to indirect through a RAM cell with a known value – but then constant folding isn't expressible in the language itself, you have to go to the wimpmode < 1742063827 554387 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: whether a specific cell is ever changed < 1742063881 192521 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Ugh, okay. Then I was completely wrong with my guess about RAM. Input would have to be simulated by pre-composition. < 1742063900 954328 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Sorry for the red herring. I was thinking of some other RAM machine. < 1742063908 273208 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :ah, OK – this explains why I was confused < 1742063981 300516 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :ais523: this sounds like the complaint that David Madore recently had that if you are writing in untyped lambda calculus (or, say, unlambda without c or d) and you pass your program a lambda calculus function then it can't examine that function without executing it and executing it might result in an endless loop that your program can't break. but the problem here is just the encoding, you should ask < 1742063987 417926 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :for an encoded version of the function, and add a lambda expression interpreter to your program. similarly for 3SP, ask for a 3SP machine program and state encoded in a way that you can process with 3SP. < 1742063999 250561 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :No worries. I am not a fan of never-halting machines. In addition to the category of encodings, I see what you're describing now; it's like how a Ferris wheel has a group action but only one egress. < 1742064013 671803 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I dislike these because e.g. Wolfram likes to sneak in uncomputable bullshit at the exit. < 1742064047 728745 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :it's kind of an unfair complaint, because you could just as well say that if you pass your turing machine program a second turing machine by adding its states with the starting state with a known name, then you can't write a turing machine program that examines its argument program < 1742064052 97102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: this is a problem that's annoyed me for a very long time (i.e. ensuring that the "artificial halt condition" isn't contributing to computability at all) < 1742064072 846348 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :but if you just write an encoding of the turing machine program onto the tape then your program can easily examine it < 1742064104 337400 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: yes – one of the reasons that many of my languages don't have clear I/O is that they inherently require an encoding in order to work and yet the language doesn't naturally enforce a particular encoding < 1742064125 20523 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: At the same time, e.g. analog computers often converge to a steady state, and that's what we want so that we can take a reading. Sometimes that's how nature computes for us. < 1742064147 566510 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742064193 313089 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Sure. That distinction is built into partial-evaluation lore; we say that the evaluator always operates on source code or abstract syntax. Folks will often bust out the lore that a TC language's programs "have access to their own source code", too. < 1742064210 850688 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are some input schemes for implicit-loop languages that are fairly general, e.g. "you write two programs, X and Y; the interpreter runs X a number of times equal to the input, then runs Y in a loop until the program halts" < 1742064231 768225 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But what "have access" means is that we use one of Gödel's diagonal lemmas to *bundle* the source code into an encoded package which can be treated as a first-order syntactic literal. < 1742064232 690027 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that's basically what I did for Tip < 1742064295 417529 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: this is well-known among esoprogrammers but normally seen from a different point of view, often summarised as "any TC language has a quine" (modulo issues with output encoding) < 1742064309 806039 :b_jonas!~x@88.87.242.184 PRIVMSG #esolangs :don't take "complaint" seriously, I'm misrepresenting what David said a bit there < 1742064319 359684 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :That's also how a DSP is set up, too. The "interpreter" takes a high-level plan X in a language like CSound, emits parameters for a "super-shader" or "effects pipeline" Y, and then runs Y on incoming samples indefinitely. < 1742064331 456713 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's possible to define languages with defective output routines that leave them unable to *output* their own source even though they can *calculate* it < 1742064372 857182 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that leads to languages with no literal quines, even though they can do arbitrary calculations on their own source < 1742064405 331481 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but generally that only happens in cases intentionally constructed as counterexampels < 1742064444 396818 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User < 1742064449 707554 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah. Again, what Gödel actually gave is very specific: given that a language computes a surjection over some output type which encodes source code, if it's TC then there will be a program which encodes itself. < 1742064473 331207 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :And again that's just the Diagonal Lemma. So it really is just a problem of that final exit encoding. < 1742064479 180022 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes < 1742064498 796913 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :anyway, I do get concerned enough about people cheating with "artificial halt conditions" that I generally look for ways to simplify them < 1742064546 156450 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I think that this is an even sharper answer to my original question. If a language is TC and has a Gödel encoding that it can emit, then there should be a partial evaluator; otherwise, there's many possible obstacles. < 1742064569 217196 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. I think that Wolfram's 2,3 Turing machine can be made to halt by going off the left edge of a semi-infinite tape (unfortunately it still requires the nonrepeating and somewhat complex input encoding – and although I'm fairly sure I wasn't cheating with that, it is hard to precisely define the reason the encoding isn't cheating) < 1742064585 538995 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :TC-ness ensures that we can do the bundling required to pass input parameters via precomposition. < 1742064747 424640 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :OK, I think the result can be expressed like this – say we have a TC language and an input encoding for it that can express multiple inputs – we can write an interpreter that takes a set of inputs some of which are taken from its input and some of which are hardcoded, plus a hardcoded program, and simulates that program on those inputs – and then because the original language is TC we can write that interpreter in that language < 1742064757 536904 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and this is a (somewhat degenerately) partially evaluated program < 1742064784 781672 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yep, that's all the ingredients of Futamura's first projection. < 1742064854 724388 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but that doesn't imply to me that the language is necessarily decomposable, although this is partly due to not having a formalised notion of what decomposition means < 1742064886 630681 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Hmm, where did this start. Decomposition? I suspect that's mostly an artifact of making programming manageable for humans. It's worth noting that pretty much the first thing Alan Turing did with his inscrutable TM formalism (it's a bag of transitions that interact in wild ways) is make it structured so you can have composable parts. < 1742064898 397316 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess it's because the projection treats the program, in effect, as a black box – and the black box is still there (in encoded form) in the output, so nothing's actually been decomposed, just composed around < 1742064920 528784 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :int-e: Oh, I think I was starting with homoiconicity. Prolog and Lisp are both homoiconic; does that make them easier to partially evaluate? < 1742064940 119243 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Or maybe consider Malbolge? Hmm. < 1742064940 470011 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: so recently I've been working with Rust procedural macros < 1742064968 331751 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I think, in this discussion, the answer is that it's easier to write a *syntactically trivial* self-applicable partial evaluator, yes. But writing a good partial evaluator still requires writing an interpreter and doing optimizations. < 1742064974 629849 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is a bit of a mess to program in, you basically get a list of tokens that are contained within the macro call (with () [] {} matched for you) and have to output a list of tokens (again with those matched) < 1742065006 736933 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah, it's kind of like an expression tree, I guess? I've only used them; I haven't written any. < 1742065007 970283 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and I'm not sure of the extent to which that's related to homoiconicity < 1742065041 897593 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: it's less structured than the language as a whole, because it's a token list rather than an AST (i.e. it's been lexed for you but you have to parse it yourself) < 1742065062 973798 :int-e!~noone@int-e.eu PRIVMSG #esolangs :korvo: I see. But there is a "how do we program" or, closely related, "how do we show TC-ness" angle to this. < 1742065068 966487 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the requirement for matched brackets/braces/parens is probably just there to ensure that the end of the macro call can be uniquely determined < 1742065093 891166 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in particular the contents of the macro call don't have to be valid Rust, you can make up your own language as long as it lexes the same way Rust does < 1742065105 9820 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(same literal syntax and same comment syntax) < 1742065159 777804 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have been trying to hand-write parsers for this and it is really frustrating, I would actually rather just have a list of bytes < 1742065206 965090 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(mostly because you can't ergonomically do matches on the tokens, because you have to call methods on them to work out what sort of token they are and Rust's pattern-matching can't express that succinctly) < 1742065227 664111 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :There's a simple class of parsers that I haven't really seen discussed. Parsing proceeds by string splitting on delimiter tokens. On-wiki, a good example is DIVSPL. In Rust macros, I've used egg's macro interface. < 1742065288 492331 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I've written those in the past, mostly for scraping output generated from a known program (i.e. the program outputted the output for human consumption and I'm trying to undo the pretty-printing to get at the underlying data in machine-readable form) < 1742065327 500817 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :But yeah, writing this still looks quite nasty: https://github.com/egraphs-good/egg/blob/main/src/macros.rs < 1742065367 644924 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: I've been researching what to add to Cammy, because I don't want to just slap on an Expr type and call it good. That wasn't fun in Monte. < 1742065390 923764 :int-e!~noone@int-e.eu PRIVMSG #esolangs :rust macros are a sore spot < 1742065425 832312 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Monte's homoiconic like Prolog's homoiconic: there's an API that lets you turn expressions into primitives and syntax for (quasi)quotation. But there's always going to be some sort of builtin or opaque expression that can't be examined this way, and we say an interpreter "bottoms out" and calls something native. < 1742065453 617606 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the motivation behind Rust's system was basically to ensure that macros wouldn't break as new language features were added, which is surprisingly sensible < 1742065488 664394 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the API is basically just there to be something stable that's technically usable, and they're relying on third-party crates to turn it into something that's actually reasonable in practice < 1742065505 540986 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(but, I don't like using third-party crates so I've been trying to make it work on my own) < 1742065509 622603 :int-e!~noone@int-e.eu PRIVMSG #esolangs :. o O ( Leading to Rust's original syn ) < 1742065531 498744 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Yeah. I've used PyMacro for Python, and those macros break between Python 3 minor versions. PyMacro for RPython, which is frozen on Python 2.7's AST, is actually kind of awesome; we added do-notation, etc. < 1742065866 220549 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :So, my idea for Cammy was to *not* have an Expr type. Nor to add trees that are Cammy-shaped, since that's dependent on the number of primitives, which I want to reduce. Awkward future compatibility. < 1742065930 700599 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Instead I'm thinking of doing like MetaOCaml and adding a two-tiered type theory. So there are arrows X → Y and also lifted arrows [X → Y] along with liftings of all of the builtins and primitives. < 1742065954 927969 :ais523!~ais523@user/ais523 PRIVMSG #esolangs : int-e: Oh, I think I was starting with homoiconicity. Prolog and Lisp are both homoiconic; does that make them easier to partially evaluate? ← my guess is that homoiconicity "shouldn't" be relevant because it is in theory an implementation detail < 1742066022 346455 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This bites in general because we can't lower a lifted arrow without a proof, but in Cammy I can use some abstract nonsense and yoga to lift Cartesian-closedness from the inner curry [X,Y] to the lifted curry [X → Y]. < 1742066035 324454 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it's more relevant in Prolog than in Lisp due to assert and clause; Lisp has eval, which is assert-like, but I don't think it has a commonly used clause < 1742066050 361345 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ACTION is looking at https://doc.rust-lang.org/proc_macro/enum.TokenTree.html and still doesn't like it ;-) < 1742066077 800492 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: I think (read) is the key for Lisp. Like, the trick isn't a nice abstract syntax, but a nice reader for that abstract syntax which separates out everything into evaluated and lifted ("quoted") terms. < 1742066152 888861 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I guess Tcl is also an interesting case < 1742066202 908901 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(Wikipedia thinks it's homoiconic, although if so, it's homoiconic in the "reverse" sense to Lisp – notionally it stores everything as strings, including loop bodies, and parses them only when they're just about to be used) < 1742066211 890916 :int-e!~noone@int-e.eu PRIVMSG #esolangs :adding to ais523's point, you don't have to do partial evaluation at the source code level; you can pick an intermediate language that supports it better < 1742066297 169059 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually I guess Underload is in the same boat as Tcl, except that it doesn't have string manipulation primitives so the only ways to operate on strings in Underload are eval ^ and output S < 1742066308 83775 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and that in turn means that they probably aren't actually strings in a useful sense < 1742066343 165334 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Execline is another fun example of everything-is-a-string. < 1742066405 616049 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Actually we don't know if execline is TC! We merely know that it has quines. < 1742067605 37111 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742068118 181030 :vyv!~vyv@76.65.7.60 JOIN #esolangs vyv :vyv verver > 1742068678 158216 PRIVMSG #esolangs :14[[07Delta Relay14]]4 10 02https://esolangs.org/w/index.php?diff=154072&oldid=142759 5* 03Ais523 5* (+11) 10/* Continuous Delta Relay */ add a couple of words that were omitted from the sentence < 1742068911 62280 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User > 1742070546 885344 PRIVMSG #esolangs :14[[07Language list14]]4 M10 02https://esolangs.org/w/index.php?diff=154073&oldid=154057 5* 03Buckets 5* (+12) 10 > 1742070587 826145 PRIVMSG #esolangs :14[[07User:Buckets14]]4 M10 02https://esolangs.org/w/index.php?diff=154074&oldid=153981 5* 03Buckets 5* (+11) 10 > 1742070596 341358 PRIVMSG #esolangs :14[[07Esorn14]]4 N10 02https://esolangs.org/w/index.php?oldid=154075 5* 03Buckets 5* (+850) 10Created page with "Esorn is an Esoteric programming language created by [[User:Buckets]] in 2020. {| class="wikitable" |- ! Commands !! Instructions |- | a || +1 |- | b || -1 |- | c || Go down 2 lines. |- | d || Set the point. |- | E || Go to the point. |- | f || Ignore the next command onc < 1742071293 462539 :vyv!~vyv@76.65.7.60 QUIT :Quit: Konversation terminated! > 1742071808 558026 PRIVMSG #esolangs :14[[07Pointing14]]4 10 02https://esolangs.org/w/index.php?diff=154076&oldid=153991 5* 03Calculus is fun 5* (+1215) 10Simple calculator < 1742072501 423958 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742072681 755962 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User < 1742072741 766030 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Client Quit < 1742072788 938173 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 JOIN #esolangs * :Textual User < 1742074354 301778 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1742077051 99215 PRIVMSG #esolangs :14[[07S*n14]]4 M10 02https://esolangs.org/w/index.php?diff=154077&oldid=153437 5* 03Buckets 5* (+34) 10 < 1742077172 178150 :ajal!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net JOIN #esolangs * :realname < 1742077172 216153 :amby!~ambylastn@ward-15-b2-v4wan-167229-cust809.vm18.cable.virginm.net QUIT :Read error: Connection reset by peer < 1742077193 382696 :tromp!~textual@2a02:a210:cba:8500:c991:1287:da21:7b47 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1742080757 942943 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1742081631 985180 :APic!apic@apic.name PRIVMSG #esolangs :cu