< 1590797551 894762 :zseri!~zseri@ytrizja.de QUIT :Quit: zseri < 1590797818 597969 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection > 1590798213 892367 PRIVMSG #esoteric :14[[07There Once was an Esolang Named Fred14]]4 10 02https://esolangs.org/w/index.php?diff=73076&oldid=72979 5* 03Baidicoot 5* (-250) 10/* Compilation */ > 1590798325 400275 PRIVMSG #esoteric :14[[07There Once was an Esolang Named Fred14]]4 10 02https://esolangs.org/w/index.php?diff=73077&oldid=73076 5* 03Baidicoot 5* (+128) 10/* Compilation */ < 1590798680 930383 :Arcorann!~awych@121-200-6-58.79c806.syd.nbn.aussiebb.net JOIN :#esoteric < 1590798709 155715 :Frater_EST!~adrianbib@172.242.0.73 JOIN :#esoteric > 1590799612 452955 PRIVMSG #esoteric :14[[07Talk:EsoScript14]]4 10 02https://esolangs.org/w/index.php?diff=73078&oldid=59663 5* 03DmilkaSTD 5* (+89) 10 < 1590799925 297261 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca PRIVMSG #esoteric :The other thing to do in TeXnicard is pixel rounding when typesetting, perhaps similar to how DVItype does, although TeXnicard's internal data structures contain more information than a DVI file does, so that can be used instead of having to guess in some cases. < 1590800037 223675 :Frater_EST!~adrianbib@172.242.0.73 PART :#esoteric < 1590800037 951984 :tromp!~tromp@ip-213-127-95-129.ip.prioritytelecom.net JOIN :#esoteric < 1590800328 887996 :tromp!~tromp@ip-213-127-95-129.ip.prioritytelecom.net QUIT :Ping timeout: 256 seconds < 1590801444 121558 :ArthurSt1ong!~ArthurStr@128-124-42-228.mobile.vf-ua.net QUIT :Quit: leaving < 1590801464 614875 :ArthurStrong!~ArthurStr@128-124-42-228.mobile.vf-ua.net JOIN :#esoteric < 1590802044 555304 :MDude!~MDude@74.5.130.30 QUIT :Quit: Going offline, see ya! (www.adiirc.com) < 1590803313 379807 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590803611 428200 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 272 seconds < 1590804723 931827 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover JOIN :#esoteric < 1590805304 910083 :Phantom_Hoover!~phantomho@unaffiliated/phantom-hoover QUIT :Ping timeout: 272 seconds < 1590806565 9926 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590806820 11106 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 246 seconds < 1590807192 368934 :Frater_EST!adrianbibl@172.242.0.73 JOIN :#esoteric < 1590808246 999336 :adu!~arobbins@c-73-129-154-238.hsd1.md.comcast.net JOIN :#esoteric < 1590808763 196867 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca QUIT :Disconnected by services < 1590808768 406551 :zzo38!~zzo38@host-24-207-48-139.public.eastlink.ca JOIN :#esoteric < 1590809812 373398 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590810109 492465 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 272 seconds < 1590812700 960838 :Frater_EST!adrianbibl@172.242.0.73 QUIT :Read error: Connection reset by peer < 1590813060 25425 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590813308 942878 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 246 seconds < 1590813535 825526 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1590814538 956077 :adu!~arobbins@c-73-129-154-238.hsd1.md.comcast.net QUIT :Ping timeout: 272 seconds < 1590814742 13254 :adu!~arobbins@c-73-129-154-238.hsd1.md.comcast.net JOIN :#esoteric < 1590815559 959440 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1590816307 166838 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590816596 61028 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 265 seconds > 1590816657 465608 PRIVMSG #esoteric :14[[07Livefish14]]4 10 02https://esolangs.org/w/index.php?diff=73079&oldid=60584 5* 03Voltage2007 5* (+29) 10 < 1590816667 2168 :adu!~arobbins@c-73-129-154-238.hsd1.md.comcast.net QUIT :Ping timeout: 272 seconds < 1590817290 967594 :LKoen!~LKoen___@81.255.219.130 JOIN :#esoteric < 1590817911 20374 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net JOIN :#esoteric < 1590818055 623812 :ArthurStrong!~ArthurStr@128-124-42-228.mobile.vf-ua.net QUIT :Ping timeout: 258 seconds < 1590819336 872023 :rain1!~debian@unaffiliated/rain1 JOIN :#esoteric < 1590819543 69599 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590819797 981766 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Ping timeout: 246 seconds < 1590821285 727733 :iovoid!iovoid@hellomouse/dev/iovoid QUIT :Quit: iovoid has quit! < 1590821348 767542 :iovoid!iovoid@hellomouse/dev/iovoid JOIN :#esoteric < 1590822267 740339 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric > 1590822666 435436 PRIVMSG #esoteric :14[[07Deadfish~14]]4 10 02https://esolangs.org/w/index.php?diff=73080&oldid=71168 5* 03Voltage2007 5* (+23) 10 < 1590823100 24420 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net QUIT :Ping timeout: 246 seconds < 1590823240 430872 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1590823243 826480 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net JOIN :#esoteric > 1590823548 168507 PRIVMSG #esoteric :14[[07Symbols14]]4 10 02https://esolangs.org/w/index.php?diff=73081&oldid=72982 5* 03Voltage2007 5* (-208) 10 < 1590823598 726863 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net QUIT :Ping timeout: 260 seconds < 1590823792 913098 :imode!~linear@unaffiliated/imode QUIT :Ping timeout: 256 seconds < 1590824144 904477 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net JOIN :#esoteric < 1590824634 742356 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 260 seconds < 1590824649 568846 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1590828049 927822 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 JOIN :#esoteric < 1590828212 36990 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1590828841 349933 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 QUIT :Remote host closed the connection < 1590830316 533157 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net QUIT :Read error: Connection reset by peer < 1590832238 726178 :Arcorann!~awych@121-200-6-58.79c806.syd.nbn.aussiebb.net QUIT :Read error: Connection reset by peer < 1590834621 176926 :Arcorann!~awych@121-200-6-58.79c806.syd.nbn.aussiebb.net JOIN :#esoteric < 1590835163 141380 :arseniiv_!~arseniiv@136.169.200.160 JOIN :#esoteric < 1590836031 713604 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1590836234 22796 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 264 seconds < 1590836241 858774 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1590837246 545627 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :@tell ais523 I have a concrete instance where adding the "at least one" constraints makes my solver find UNSAT instantly, but with only "at most one" it takes 18 seconds. < 1590837246 545688 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Consider it noted. < 1590838786 198953 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :shachaf: is it a pigeonhole trick where you have n of those disjoint at most one groups on the left side, a bunch of transformations, and then an at least constraint on the right side that actually forces the at least one constraint in a way that your solver can't quickly notice? < 1590838851 251013 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :you know, like put 8 black queens on a chessboard such that no pair of queens defend each other < 1590838904 722719 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What do you mean? < 1590838956 13504 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :shachaf: the at most one constraint is that each row has at most one queen. that much is easy from the description, because two queens on a row would attack each other. the least one constraint would be that you put at least one queen in every row, which is not so obvious. < 1590838997 975586 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :if you know the at least one constraint, then you can find solutions more quickly, because the solver won't try to explore solutions where all squares of a row are excluded. < 1590839006 834404 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :s/solutions/partial solutions/ < 1590839104 693010 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: Oh, the context here is sudoku. < 1590839119 214588 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Where I have constraints like "at least one of each digit on this row" and "at most one". < 1590839335 813145 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :shachaf: yes, that's similar < 1590839361 182007 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :it's the same pigeonhole sort of constraint, when you want exactly one of each row, but you can prove that < 1590839402 378709 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :though of course these problems are special enough that you probably don't want to solve them by general SAT solvers, but rather by specialized solutions or at least finite domain solvers < 1590839418 404942 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :for sudoku you can probably find a lot of different solvers on the net < 1590839421 958077 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It's not clear. < 1590839427 632970 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What's the hardest 9x9 sudoku? < 1590839435 702167 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I imagine it's still pretty easy for a CDCL solver. < 1590839463 659573 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :I don't know, but I think that's a well known question and there are candidates on the internet, though it might be hard to prove which one is "the hardest" < 1590839725 781452 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I suspect they're kind of sensitive to specific choices you make so it's hard to call one the hardest. < 1590839753 771993 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But SAT solvers do lots of restarts anyway so they'll probably find a nice variable ordering and solvulate it all easy-peasy-like. < 1590840663 345927 :Arcorann!~awych@121-200-6-58.79c806.syd.nbn.aussiebb.net PRIVMSG #esoteric :https://www.telegraph.co.uk/news/science/science-news/9359579/Worlds-hardest-sudoku-can-you-crack-it.html <-- from searching "hardest sudoku" < 1590841114 259001 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :shachaf: yeah, I'm probably just biased against SAT solvers, I don't trust them much < 1590841175 465419 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :though perhaps I should be biased against them less than how much I'm biased against machine learning, GPU programming, multi-threading, and just-in-time compilation < 1590841203 925409 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1590841216 68491 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that's a weird set of biases < 1590841238 941532 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm biased against machine learning, in favour of GPU programming and multithreading, and mostly neutral on JIT compilation < 1590841250 422104 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although I think people don't AOT compile nearly as much as they should < 1590841260 452695 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :When is JIT compilation good? < 1590841270 997463 :arseniiv_!~arseniiv@136.169.200.160 PRIVMSG #esoteric :b_jonas: oh, these are almost all what I consider magic at least partially. Though GPU programming is just a thing like microcontrolles which I simply don’t know now and don’t intend to dive into, and not magic < 1590841274 484580 :arseniiv_!~arseniiv@136.169.200.160 NICK :arseniiv < 1590841282 986639 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: I can see an argument for JIT compiling specialised code < 1590841291 494889 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e.g. you see a function is being called with argument 2 a lot < 1590841291 944457 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :ais523: no it's not. all four are technologies that are (or were) overhyped, used for marketing and/or actual solutions for problems where they hurt more than they help. I should add blockchains to that list, but that's too obvious. < 1590841297 571889 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so you recompile it inlining 2 as a parameter < 1590841300 832806 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :and multithreading should be a very different kind of magic if at all < 1590841307 268273 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :ais523: SAT solvers don't match that set, which is why I should be less biased against them < 1590841316 404446 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I feel like understanding your code is so valuable, though. < 1590841329 119549 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: even AOT compilation doesn't help much with that < 1590841349 550619 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But I can see some uses for JIT, I suppose. But not just general-purpose code in your regular programming language. < 1590841350 541400 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :especially as most people don't understand what's going on with machine code < 1590841391 518855 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Are things like regular expression JITs worthwhile? < 1590841396 426376 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's a side advantage of JIT which isn't technically confined to JITs but is normally only seen there: you can distribute platform-independent binaries < 1590841405 580499 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :as a result, they're also all technologies that I'd be reluctant to use, and where I sell myself to employers as being an expert of more traditional programming tech as opposed to those overhyped stuff that everyone tries to learn these days, giving a ... uh, insert buzzwords here, the point is that I can write straightforward code to translate domain-specific knowledget such that for many problems I < 1590841411 651334 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :get a better solution than those hyped tech that your other candidates would try to sell you < 1590841416 140529 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :regular expression JITting is definitely useful in the case where the regular expression is only known at runtime < 1590841421 262456 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For runtime user-entered regular expressions, I mean. If they're known at compiletime then there's no reason to JIT, of course, you just want a specialized AOT compiler. < 1590841422 860734 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :regexes have to be compiled to get good performance < 1590841446 726708 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :as for known-at-compile-time, it probably depends on how large the resulting state machine is < 1590841473 433204 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :b_jonas: I wish GPU programming was more like CPU programming, where you could target a GPU rather than bizarro languages and compilers provided by vendors. < 1590841482 370996 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if the source is much smaller than the binary, and the compiler is already on the target machine < 1590841483 393078 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it may make sense to just ship the code < 1590841489 756483 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :but I'm familiar enough with multithreading that I can write code to use it sanely and reliably when it's really needed, and I at least try to recognize when each of these technology could be useful in which case I can advise them to ask someone who is good at those techniques to use them < 1590841492 341865 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: oh yes, GPU toolchains are all-around horrible < 1590841505 836492 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Vulkan is an improvement on what came before but it may not be enough of an improvement < 1590841536 536012 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :b_jonas: one thing I dislike about multithreading is languages that require multithreaded code to do things that shouldn't need it < 1590841556 739756 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :like, oop languages? < 1590841557 67570 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Isn't Vulkan just a huge complicated mess that is also not relevant to almost any platforms? < 1590841558 201590 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e.g. because they have no way to block on two unrelated things simultaneously < 1590841576 624510 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric : SAT solvers don't match that set => hmm, yet?.. < 1590841579 112333 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: it has fewer levels of abstraction than, say, DirectX or OpenGL < 1590841597 281315 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which automatically means that working around its messes is more viable than working around its competitors' messes < 1590841601 973370 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :I heard they use a SAT solver to (type)check F* code < 1590841650 298350 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :well, Damas-Milner typechecking is basically a sort of SAT solver, but the algorithm is very simple and (with a Hindley-Milner type system) known to terminate < 1590841704 316892 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :btw, my view on multithreading is quite different from most people's; I believe that a program that can't be trivially made multithreaded is inherently inefficient, and thus only suitable for tasks where an inherently inefficient program is acceptable < 1590841732 46187 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :e.g. ls has no reason to be CPU-efficient because it spends almost all its time blocking on I/O anyway < 1590841735 622763 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :arseniiv: I don't think they ever will. just look at TAOCP. anything that TAOCP covers won't go into that set. SAT solving is in TAOCP, JIT compilation is minimally mentioned in vol 1 about interpreters, multithreading is specifically excluded from the series' topic in the introduction (though I think a few exercises mention locking), GPU programming is I think excluded though the intro doesn't < 1590841741 658814 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :specifically mention that because GPUs didn't exist when vol 1 third edition was printed, < 1590841753 353612 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :and ... what were the others? blockchains and machine learning aren't covered either. < 1590841834 168040 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :ais523: oh! that reminds me one question. How much GHC’s type system adds to HM to typecheck Haskell with all those extensions (maybe without UndecidableInstances and friends) < 1590841842 367340 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :do you know? < 1590841883 149373 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523: I'm not sure what it means to say that a program is inherently inefficient there. < 1590841883 942050 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :though of course we have the ed. Iványi book, which specifically tries to cover topics that TAOCP doesn't cover, because TAOCP is so good that there's no point for them writing a book that says the same thing again < 1590841895 875417 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection < 1590841932 507772 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :so ed. Iványi has chapters for multithreaded programming, SQL databases (that one I'm neutral about... it's more complicated and refined than that but let's not get into that now), etc < 1590841933 288245 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Some tasks are hard to parallelize, and certainly hard to parallelize trivially. If there's no better option for doing that task, in what sense is it inefficient? < 1590842093 915650 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :arseniiv: I don't know about most extensions, but Rank2Types is type-checkable in theory but GHC can't do it, RankNTypes has undecidable typechecking < 1590842100 91268 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this is the reason that Rank2Types is separate < 1590842128 200768 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: I mean parallelizing to the extent that the underlying problem can be parallelized < 1590842134 714599 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :ais523: neat detail, thanks! < 1590842154 280302 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you mean inference rather than checking? < 1590842167 29088 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :for example, even if the task is entirely sequential (which is very rare), a program to solve it should at least be trivially modifiable to perform multiple unrelated instances of that task in parallel < 1590842172 865168 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: yes < 1590842184 634736 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or, well, checking of a program where the types might not all have been explicitly stated by the programmer, which is the same thing < 1590842190 29904 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :shachaf: inference too, yeah, what good is checking without inference < 1590842207 854538 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :arseniiv: wow, I didn't know that about rank 2 types < 1590842214 309832 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think the claim that Rank2Types is inferrable in theory isn't very useful. < 1590842225 93807 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :I didn’t too < 1590842240 430926 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: it was relevant in my PhD thesis, that's why I know it < 1590842244 938990 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :(was that a wrong one-character completion) < 1590842268 554962 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :oh yes, sorry < 1590842274 803866 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mean, I'm not actually sure what the exact claim is, but my understanding is that you can do "whole program inference": If there are rank-2 types that can be assigned to the whole program, you can find them, but you can't do it locally. < 1590842288 301420 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :ais523: Oh, then you must know much better than I do. < 1590842297 100603 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is what I'm saying right? < 1590842326 104640 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Also, does the same argument about rank-2 types work for existentials? < 1590842335 671205 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I think it must since you can encode existentials with rank-2 types. < 1590842354 576420 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there's more than one definition of existentials, and I forget which one Haskell uses < 1590842365 256114 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but if it can be encoded using rank-2 types, it must be inferrable < 1590842419 663521 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Say you have an existentially typed thing like xs = [(1, intToString), (False, boolToString)] < 1590842425 484701 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :I glance to the GHC’s inference algorithm because I know if I would make a usable language, I’ll need all the types, and as subtyping is almost certainly no-go, something à la GHC or Rust would need to be used < 1590842441 361487 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can assign that the existential types [exists a. (a, a -> String)], or (exists a b. (a, b)], or [exists a. a], etc. < 1590842446 473501 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :but I’m afraid to look into the concrete implementation (in GHC) < 1590842455 28157 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And there's no way to look at that list without seeing how it's being used and pick one of those. < 1590842554 496983 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :my main interest on existentials was related to type tags rather than to base types or function types, which is a bit different from what GHC is doing < 1590842587 778372 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590842598 15199 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :by "type tags" I mean things like the ! from linear logic < 1590842624 172453 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric : And there's no way to look at that list without seeing how it's being used and pick one of those. => hm would that also be true for any advanced typing constructs? We use types to constrain operations which can be performed, after all, and when very abstract typing constructs emerge, they aren’t usually coupled to the data representation, so we shouldn’t be able to decide(?..) < 1590842626 932012 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :But you can encode this rank-2. Ignoring the list, I guess: foo f = f (1, intToString) < 1590842627 587592 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the field I was working in was related to making those things more precise, my thesis was about why the existing attempts at doing it didn't work < 1590842680 292317 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :You can give foo the type forall r. ((Int, Int -> String) -> r) -> r, or forall r. (forall a. (a, a -> String) -> r) -> r, or forall r. (forall a. a -> r) -> r, etc. < 1590842680 401747 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, that foo version of things looks familiar to me < 1590842710 14317 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's no clear most general type is I guess all I was trying to say. < 1590842729 829446 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right < 1590842761 641512 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think my experience is that "most general type" equvialents might exist, but aren't actually types, they're some sort of complicated set of constraints < 1590842792 734668 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are some examples in my thesis where, due to constraint loops that are solvable, the normal subtyping relationships break down < 1590842792 844191 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :surely there could be something to reason about possible types in these cases? Which would complicate algorithms and maybe a type system itself, but maybe wouldn’t look too inhumane? < 1590842821 12619 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric : I think my experience is that "most general type" equvialents might exist, but aren't actually types, they're some sort of complicated set of constraints => something like that! < 1590842866 873715 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :it’s nontrivial that typechecking can be that nontrivial < 1590842874 701207 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :s/be/become < 1590842991 898109 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric : Fact 6.2.13. There are terms which type in SCC and Bounded ICA, and which have all types for that term differ only in the bounds, but for which there is a covariant position in those types such that the set of bounds that can appear in that position in some type for that term is not the same as the set of all nonnegative integers. < 1590843018 863869 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :this is basically an argument against the existence of most-general-types < 1590843033 457430 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because you don't expect to see extra restrictions in covariant positions < 1590843048 376537 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(the fact in my thesis is a counterexample to a conjecture by someone else) < 1590843078 511119 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I gave an explicit such term, λ q.(λ g.g(λ x.g(qx)))(λ b.(λ k.((k(λ u.u))(λ l.((kb)(λ m.(l(m( skip ))))))))(λ v.λ w.wv)) < 1590843090 255145 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which is kind-of surprising that it's the simplest known term with that property < 1590843096 439639 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :("skip" is an arbitrary constant) < 1590843106 209868 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(which has base type) < 1590843188 943249 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t \q -> (\g -> g(\x -> g (q x)))(\b -> (\k ->(\u -> u))(\l -> ((k b)(\m -> (l(m(0))))))))(\v -> \w -> w v)) < 1590843190 182139 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :error: parse error on input ‘)’ < 1590843219 22853 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t \q -> (\g -> g(\x -> g (q x)))(\b -> (\k -> ((k(\u -> u))(\l -> ((k b)(\m -> (l(m(0))))))))(\v -> \w -> w v)) < 1590843220 148963 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Num t => (t -> t -> t) -> t < 1590843228 739574 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@pl \q -> (\g -> g(\x -> g (q x)))(\b -> (\k -> ((k(\u -> u))(\l -> ((k b)(\m -> (l(m(0))))))))(\v -> \w -> w v)) < 1590843228 849042 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :flip (ap id . flip (.)) (flip (ap ($ id) . flip flip (. ($ 0)) . ((.) .) . flip id) (flip id)) < 1590843241 118367 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :was just curious < 1590843263 772577 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :GHC doesn't see anything interesting about the term, but i guess that's because it isn't doing anything linear-logic-like < 1590843298 742977 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Read error: Connection reset by peer < 1590843354 551117 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1590843402 295965 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t flip flip < 1590843403 379281 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :b -> (a -> b -> c) -> a -> c < 1590843566 611649 :rain1!~debian@unaffiliated/rain1 QUIT :Quit: leaving < 1590843584 112858 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, what's the minimum set of constants required to implement @pl? < 1590843594 234837 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and is it TC? < 1590843639 925263 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t (.) < 1590843640 978846 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :(b -> c) -> (a -> b) -> a -> c < 1590843642 893431 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t ap < 1590843644 148503 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Monad m => m (a -> b) -> m a -> m b < 1590843658 289155 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t ($) < 1590843659 633373 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :(a -> b) -> a -> b < 1590843666 496391 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :`? duloc < 1590843668 181980 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :duloc? ¯\(°​_o)/¯ < 1590843671 21818 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right, ap is the monad version of ($) < 1590843762 491595 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :s/k/y, I suppose? < 1590843787 824142 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Plus things like constructors and eliminators to handle data types. < 1590843835 758884 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :@pl (\x -> x x)(\x -> x x) < 1590843838 826792 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :ap id id (ap id id) < 1590843838 972713 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :optimization suspended, use @pl-resume to continue. < 1590843862 120286 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :huh, I wonder if its optimizer went into an infinite loop < 1590843867 741315 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1590843885 127857 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I don't think the double mockingbird even types in Haskell, does it? < 1590843888 489643 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t (\x -> x x) < 1590843889 729442 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :error: < 1590843889 729492 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • Occurs check: cannot construct the infinite type: t ~ t -> t1 < 1590843889 832597 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • In the first argument of ‘x’, namely ‘x’ < 1590843892 498215 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yep < 1590843893 263846 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :pl isn't typed < 1590843908 697868 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric ::t ap id id < 1590843910 179170 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :error: < 1590843910 179217 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • Occurs check: cannot construct the infinite type: a ~ a -> b < 1590843910 282858 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : Expected type: (a -> b) -> a < 1590843940 813023 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :perhaps s and k alone are enough in that case < 1590843949 495920 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you can write y and/or z in terms of them < 1590843992 933490 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For @pl's purposes, sure, but if you give it type-checking Haskell it will produce a type-checked pl version. < 1590844021 159629 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :@pl foo x = if x == 0 then 0 else f (x - 1) < 1590844021 159699 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :foo = ap (flip if' 0 . (0 ==)) (f . subtract 1) < 1590844032 195993 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Uh. < 1590844036 571842 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :@pl foo x = if x == 0 then 0 else foo (x - 1) < 1590844036 724431 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :foo = fix (ap (flip if' 0 . (0 ==)) . (. subtract 1)) < 1590844060 757430 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right, so now we have a fixed-point combinator < 1590844108 186282 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and y is enough to implement that sort of fixed-point combinator in a lazy language < 1590844138 607988 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix (\x -> 2 - x) < 1590844141 138621 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : *Exception: <> < 1590844156 145987 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :Haskell's fixed-point combinator kind-of sucks, though < 1590844165 947053 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why? < 1590844178 838356 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :\x -> 2 - x has a fixed point, but Haskell's fix couldn't find it < 1590844197 825535 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :It did find it. < 1590844212 30699 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`! brachylog ~-₂?w < 1590844214 339358 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :​ \ false. < 1590844226 138105 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :oh right, ~- is + < 1590844227 389709 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I guess you mean you want a specific fixed point, but it always finds the least fixed point. < 1590844257 265940 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do you know the answer to this question: Why do type theory types require recursion to be strictly positive, rather than just positive? < 1590844262 56400 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :what determines whether a fixed point is higher or lower than bottom? < 1590844280 280579 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not sure what you mean by positive recursion < 1590844295 775290 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I mean types that are recursive and refer to themselves in positive position. < 1590844312 790993 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :There's a partial order of definedness, with bottom at the bottom (hence the name). < 1590844342 245825 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :`! brachylog 2-↙..w < 1590844343 517934 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :1 \ true. < 1590844346 315191 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there we go < 1590844373 124282 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :does haskell even have to have a finite basis of combinators for @pl, given that you can't type some of the untyped combinators? < 1590844387 29843 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :maybe you need an infinite set of looping combinators < 1590844406 345898 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: oh, I see, so to get a result from fix, you need to write f in such a way that f bottom != bottom < 1590844429 853960 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu PRIVMSG #esoteric :anyway, I'll afk very soon, be back in 2.5 days probably < 1590844466 545538 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Right. < 1590844528 816572 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and that's only possible if f takes multiple arguments, so that the argument that isn't bottom can be used to determine whether or not to look at the first argument < 1590844540 41945 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :or if f ignores its first argument entirely, I guess < 1590844550 143870 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix (const 8) < 1590844551 867344 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : 8 < 1590844578 738995 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix (\x -> x == true) < 1590844580 471226 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : error: < 1590844580 471280 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • Variable not in scope: true :: Bool < 1590844580 471298 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • Perhaps you meant data constructor ‘True’ (imported from Data.Bool) < 1590844585 376983 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix (\x -> x == True) < 1590844588 176748 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : *Exception: <> < 1590844592 165301 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix (\x -> x == False) < 1590844595 4391 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : *Exception: <> < 1590844605 189175 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, it's possible in other cases. < 1590844607 338963 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :> fix (1:) < 1590844608 990028 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1... < 1590844609 984670 :b_jonas!~x@catv-176-63-11-231.catv.broadband.hu QUIT :Remote host closed the connection < 1590844638 850131 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :ah right, the bottom is at the tail of the infinite list < 1590844652 318308 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :> fix fix < 1590844654 211015 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : error: < 1590844654 320355 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : • Occurs check: cannot construct the infinite type: a ~ a -> a < 1590844654 425926 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric : Expected type: a -> a < 1590844659 250597 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric : `! brachylog 2-↙..w 1 \ true. => how does it do that? < 1590844699 608015 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :arseniiv: . is a variable in Brachylog, and concatenation means "assert equal" so 2-↙.. means "assert that 2 minus . equals ." < 1590844718 502151 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :when I then use w to output the value of . < 1590844723 772739 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it uses a constraint solver to figure out what value it has to have < 1590844752 527324 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, I like constraint solvers. < 1590844759 212229 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I don't really know how Prolog works. < 1590844775 888422 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the ↙ is just used to give - an argument because Brachylog operators are unary by default unless you explicitly make them binary < 1590844783 812783 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is it just defined to use backtracking? < 1590844793 492068 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :ais523: shachaf: ah, so that’s why it called -log! < 1590844804 323959 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: in original/standard Prolog, yes, but modern Prolog has deviated from that somewhat < 1590844812 305156 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there are now two levels of solving ability < 1590844822 309358 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the outer one uses backtracking, the inner one uses a constraint solver < 1590844844 38456 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :although, even in traditional Prolog, there was some limited constraint-solving ability that didn't involve backtracking < 1590844855 708295 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I'm not sure if we have a Prolog impl in HackEso to demosntrate, though < 1590844864 944645 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Prolog is also pretty related to index notation, I think. < 1590844873 589525 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Man, index notation is so good. < 1590844895 198105 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :I seem to remember something like this discussed here < 1590844896 592611 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :but, e.g., concat([1,2,3],B,A), B=[4,5,6] will give you the output A=[1,2,3,4,5,6] with no backtracking involved < 1590844907 371405 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :because it's one of the case that traditional prolog's constraint-solver handles < 1590844950 213450 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, because the naive thing would be to assign values to B and A at the first statement, and then backtrack when you see that your guess for B was wrong? < 1590844959 249775 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :can one mix Prolog and session types? < 1590844961 758849 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :err, it's called "append", not "concat" < 1590844968 835075 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: right < 1590844993 363625 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if you write append(B,[1,2,3],A),B=[4,5,6]. then the constraint solver can't handle it < 1590845011 157805 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so the backtracker is engaged, it finds the solution A=[4,5,6,1,2,3], then goes into an infinite loop looking for a second solution < 1590845027 16797 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :trying longer and longer guesses for B < 1590845039 806578 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Why can't it handle it? < 1590845054 573001 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it has a special case for the end of the list but not for the start of a list < 1590845071 420918 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, it's just a super-duper-special-case-a-majig. < 1590845081 355424 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :?- append([1,2,3],B,A). < 1590845081 458568 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Maybe you meant: v @ ? . < 1590845082 904499 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :A = [1, 2, 3|B]. < 1590845092 442750 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :there, we can see the special case being written in the output > 1590845095 164246 PRIVMSG #esoteric :14[[07Symbols14]]4 M10 02https://esolangs.org/w/index.php?diff=73082&oldid=73081 5* 03PythonshellDebugwindow 5* (+35) 10/* Javascript */ fix < 1590845096 195293 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Oh, hmm, I see now, maybe that makes sense. < 1590845100 829310 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Because it's a linked list structure. < 1590845112 929520 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is the origin of difference lists, I remember now. < 1590845129 724665 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :`? cut elimination < 1590845130 53047 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :right, the special case is actually for an unknown argument to a functor < 1590845130 931900 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :The cut-elimination theorem states that any Prolog program written using the cut operator ! can be rewritten without using that operator. < 1590845131 916512 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :such as "cons" < 1590845152 163374 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :which means that for a list, the constraint solver handles unknown elements and unknown tails, but no other cases > 1590845212 709433 PRIVMSG #esoteric :14[[07Phile14]]4 M10 02https://esolangs.org/w/index.php?diff=73083&oldid=71332 5* 03PythonshellDebugwindow 5* (+0) 10/* Syntax */ > 1590845234 993743 PRIVMSG #esoteric :14[[07Phile14]]4 M10 02https://esolangs.org/w/index.php?diff=73084&oldid=73083 5* 03PythonshellDebugwindow 5* (+1) 10/* Syntax */ < 1590845246 827567 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :I think the explicit evaluation order is one of the least elegant things about Prolog < 1590845253 547632 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :eh, it should have been using some length information in the `append` definition. But then it would need to compute lengths of known arguments and it may end up slow without caching which list had been shown to have which length < 1590845283 988771 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :arseniiv: the normal implementation "append" (and the implementation in the standard library) works by looping over all possible lengths < 1590845340 754070 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :?- length(B, 3), append(B, [1,2,3], A), B=[4,5,6]. < 1590845340 863435 :lambdabot!~lambdabot@haskell/bot/lambdabot PRIVMSG #esoteric :Maybe you meant: v @ ? . < 1590845342 400440 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :B = [4, 5, 6], < 1590845343 876402 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :A = [4, 5, 6, 1, 2, 3]. > 1590845358 872327 PRIVMSG #esoteric :14[[07HGFTSNOA14]]4 M10 02https://esolangs.org/w/index.php?diff=73085&oldid=71724 5* 03PythonshellDebugwindow 5* (+29) 10/* Function arguments/return */ < 1590845360 17922 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :when we set the length of B explicitly, there's no backtracking involved because "append" has only one case to check > 1590845377 838245 PRIVMSG #esoteric :14[[07User:PythonshellDebugwindow14]]4 M10 02https://esolangs.org/w/index.php?diff=73086&oldid=72868 5* 03PythonshellDebugwindow 5* (-22) 10/* Random name generator */ < 1590845394 668664 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the reason for the infinite loop without the "length" is just that nothing is known about B until after "append" runs, and Prolog has a set evaluation order so it can't take into account any knowledge about what B is about to become < 1590845440 599266 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What would Prolog be like if it was more like a SAT solver? > 1590845442 998007 PRIVMSG #esoteric :14[[07Function x(y)14]]4 M10 02https://esolangs.org/w/index.php?diff=73087&oldid=70797 5* 03PythonshellDebugwindow 5* (-64) 10/* Syntax */ rm link < 1590845485 531034 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: I have plans for something like this already < 1590845506 940513 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the main idea is to start off by evaluating anything that can be evaluated efficiently, then anything that can be evaluated in known finite time < 1590845517 254984 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and only resort to an infinite brute-force as the last resort < 1590845535 21355 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(even then, breadth-first is better than depth-first so that you search every point in the infinite tree) < 1590845573 986949 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Or iterative deepening. < 1590845587 501889 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :iterative deepening and breadth-first are equivalent < 1590845606 404213 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :the only difference is that iterative deepening re-checks some cases it's already checked, in order to save the memory needed to remember that it's already checked them < 1590845615 19958 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes. < 1590845636 888757 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, hmm, not necessarily? < 1590845667 53258 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :If you're doing something like alpha-beta pruning, can iterative deepening be better than breadth-first search? < 1590845694 201371 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :hmm, interesting; you'd need to use the alpha and beta values from lower levels to prune the higher levels in order to get any gain < 1590845701 651777 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :That reminds me, is there a really nice way that I should understand PVS/Scout? < 1590845723 190452 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Well, you might get a better ordering on the earlier levels that you can use for the later levels. < 1590845736 829215 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Since alpha-beta is sensitive to the order of the nodes. < 1590845771 574661 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'm actually not really sure what breadth-first alpha-beta would mean. < 1590845781 302819 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :shachaf: the best way to understand PVS is that it's like alpha-beta search, but instead of setting alpha and beta to worst case values, you set them to best case values so that the search can go faster < 1590845809 744159 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you then have to redo the search if your values turned out to be too optimisitic, but luckily it's always possible to discover this during your iteration < 1590845835 42530 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, that's interesting, do you have a concrete case in mind? < 1590845847 964506 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Otherwise I'll try to think of one, maybe after sleeping. < 1590845855 783122 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :it's used in chess programs a lot < 1590845873 747176 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :No, I mean a concrete tree that makes this best-case thing really clear. < 1590845890 961454 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I should probably work it out myself given your hint. < 1590845904 656634 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :concrete search trees are a pain to come up with < 1590845914 878823 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Yes, I just mean something small. Let me see. > 1590845938 821731 PRIVMSG #esoteric :14[[07And then14]]4 M10 02https://esolangs.org/w/index.php?diff=73088&oldid=69363 5* 03PythonshellDebugwindow 5* (+7) 10 < 1590845949 420749 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :For regular alpha-beta, the insight is that if you have something like min(5, max(8, ...), ...), you don't need to compute the rest of the arguments to max. < 1590845970 82776 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1590845985 741758 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Do I need three levels of tree for PVS? < 1590846017 157759 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :no, in PVS you see min(5, …) and just assume that nothing in the … will be lower than a 5 < 1590846047 746341 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you need to verify that, of course, but verifying it is faster than doing a full alpha-beta search because you don't track the values of alpha and beta < 1590846062 336165 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if the verification fails, then you need to do a proper search because you have no idea what went wrong < 1590846108 936830 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :here's a different intution: a true depth-first search is "give me the exact evaluation of this position" < 1590846125 378558 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :an alpha-beta search is "give me the exact evaluation of this position if it's in the range 5 to 8, otherwise just say 'too low' or 'too high'" < 1590846147 297820 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and a PVS search is "let me know if this position evaluates to ≥ 5 or < 5" < 1590846183 41935 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Which position? E.g. the second argument to min? < 1590846231 829345 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :in a PVS you do a proper alpha-beta search from the suspected-best candidate move in each position, then just try to prove that none of the others are better than it < 1590846273 119415 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so, e.g. from the starting position in chess, if you think e4 is the best move, you get an evaluation for e4 using alpha-beta, then evaluate the position after d4 using a binary evaluation ("worse than e4" / "better than e4") < 1590846288 874223 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :if it's worse, you're good; if it's better, you need to do a full search again in order to find out the exact evaluation < 1590846289 868026 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Is the assumption here that alpha-beta will *probably* say ">= 5"? < 1590846293 571858 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :yes < 1590846315 221893 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Hmm, this is sounding pretty helpful. < 1590846332 30625 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so PVS is really dependent on getting the moves in the right order; getting them in the wrong order doesn't affect correctness but the performance tanks < 1590846350 267124 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :What's the reason the binary evaluation can be faster than full evaluation? < 1590846439 64641 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :with alpha/beta there's an overlap in the cutoff ranges for low cutoffs and high cutoffs, a value between alpha and beta can't be cut off whether it's high or low < 1590846440 399421 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :And what's the reason it can be expressed using a regular alpha-beta search, just with different values for alpha and beta? < 1590846466 281975 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I suspect I can work out the answers to both of those questions with what you've given me. < 1590846468 81665 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :to get a PVS trial search out of an alpha-beta search algorithm you set alpha=beta < 1590846477 432464 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :so there's less (i.e. no) overlap in the cutoff ranges < 1590846486 532101 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :that makes cutoffs more frequent so the search goes faster < 1590846528 324092 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(err, alpha and beta might have to differ by 1 depending on what your convention for range endpoints is, the idea is that every value is either a low cutoff when looking for low cutoffs, or else a high cutoff when looking for high cutoffs) < 1590846546 524390 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :(whereas alpha-beta has "in between" values) < 1590846659 354053 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :This is seeming really nice but unfortunately I really need to go to sleep. < 1590846693 2925 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :I'll think about this again after I wake up. < 1590846699 368774 :shachaf!~shachaf@unaffiliated/shachaf PRIVMSG #esoteric :Thanks! < 1590846710 968226 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :shachaf: good night! < 1590846894 464831 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :ais523: please ping me any time if you would make something with these “sensible ordered Prolog” ideas you wrote, that looks very interesting to test > 1590848747 293011 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73089&oldid=73070 5* 03PythonshellDebugwindow 5* (+466) 10/* Range loops */ > 1590848821 569526 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73090&oldid=73089 5* 03PythonshellDebugwindow 5* (+40) 10/* Returns */ > 1590850114 258265 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73091&oldid=73090 5* 03PythonshellDebugwindow 5* (+2242) 10/* The NOT operator */ > 1590850263 312963 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73092&oldid=73091 5* 03PythonshellDebugwindow 5* (+283) 10/* I/O */ > 1590850443 962701 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73093&oldid=73092 5* 03PythonshellDebugwindow 5* (+250) 10 > 1590851589 106652 PRIVMSG #esoteric :14[[07Livefish14]]4 M10 02https://esolangs.org/w/index.php?diff=73094&oldid=73079 5* 03PythonshellDebugwindow 5* (+0) 10/* C */ > 1590851646 380280 PRIVMSG #esoteric :14[[07Livefish14]]4 M10 02https://esolangs.org/w/index.php?diff=73095&oldid=73094 5* 03PythonshellDebugwindow 5* (+46) 10/* Computational Properties */ > 1590851681 99730 PRIVMSG #esoteric :14[[07Deadfish~14]]4 M10 02https://esolangs.org/w/index.php?diff=73096&oldid=73080 5* 03PythonshellDebugwindow 5* (-11) 10eso styles ns visible > 1590851713 135931 PRIVMSG #esoteric :14[[07Livefish14]]4 M10 02https://esolangs.org/w/index.php?diff=73097&oldid=73095 5* 03PythonshellDebugwindow 5* (-21) 10eso styles ns visible > 1590851847 255881 PRIVMSG #esoteric :14[[07COD14]]4 M10 02https://esolangs.org/w/index.php?diff=73098&oldid=72697 5* 03PythonshellDebugwindow 5* (+30) 10/* Raise an error (takes 3 inputs first) */ cat > 1590851914 149378 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73099&oldid=73093 5* 03PythonshellDebugwindow 5* (+92) 10/* Computational class */ < 1590853349 957905 :adu!~user@c-73-129-154-238.hsd1.md.comcast.net QUIT :Quit: Lost terminal < 1590854207 25432 :rain1!~debian@unaffiliated/rain1 JOIN :#esoteric < 1590854491 421679 :Arcorann!~awych@121-200-6-58.79c806.syd.nbn.aussiebb.net QUIT :Read error: Connection reset by peer > 1590854774 434450 PRIVMSG #esoteric :14[[07User:PythonshellDebugwindow14]]4 M10 02https://esolangs.org/w/index.php?diff=73100&oldid=73086 5* 03PythonshellDebugwindow 5* (+83) 10/* Languages */ > 1590854804 665367 PRIVMSG #esoteric :14[[07Language list14]]4 M10 02https://esolangs.org/w/index.php?diff=73101&oldid=72839 5* 03PythonshellDebugwindow 5* (+13) 10/* F */ + [[Forbin]] > 1590854837 202357 PRIVMSG #esoteric :14[[07Forbin14]]4 M10 02https://esolangs.org/w/index.php?diff=73102&oldid=73099 5* 03PythonshellDebugwindow 5* (-12) 10 < 1590854864 970695 :imode!~linear@unaffiliated/imode JOIN :#esoteric < 1590855083 507179 :int-e!~noone@int-e.eu PRIVMSG #esoteric :`learn The password of the month is Mayfly. < 1590855086 51833 :HackEso!~h@unaffiliated/fizzie/bot/hackeso PRIVMSG #esoteric :Relearned 'password': The password of the month is Mayfly. > 1590855412 932229 PRIVMSG #esoteric :14[[07User:Emerald14]]4 10 02https://esolangs.org/w/index.php?diff=73103&oldid=72763 5* 03Emerald 5* (+12) 10Rename < 1590855549 991643 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 JOIN :#esoteric < 1590855614 488709 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 240 seconds < 1590855685 410901 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1590855863 661099 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection < 1590856634 950053 :ArthurStrong!~ArthurStr@128-124-42-228.mobile.vf-ua.net JOIN :#esoteric < 1590857897 773486 :user24!~user24@2a02:810a:1440:7304:6c4b:9080:f4e1:21a JOIN :#esoteric < 1590858091 374156 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590858788 925271 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 QUIT :Remote host closed the connection < 1590861940 748697 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection < 1590862815 32599 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 JOIN :#esoteric < 1590862891 58630 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590863590 637807 :craigo!~craigo@144.136.206.168 JOIN :#esoteric < 1590863600 2981 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection < 1590864111 409655 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric > 1590864118 538234 PRIVMSG #esoteric :14[[073switchBF14]]4 10 02https://esolangs.org/w/index.php?diff=73104&oldid=53806 5* 03Voltage2007 5* (+878) 10 > 1590864196 131800 PRIVMSG #esoteric :14[[07Deadfish "self-interpreter"14]]4 10 02https://esolangs.org/w/index.php?diff=73105&oldid=63098 5* 03Voltage2007 5* (+141) 10 < 1590864234 676320 :myname!~myname@ks300980.kimsufi.com PRIVMSG #esoteric :last minute change there < 1590864494 10995 :int-e!~noone@int-e.eu PRIVMSG #esoteric :myname: I thought of that one 3 weeks ago :P < 1590864513 175884 :int-e!~noone@int-e.eu PRIVMSG #esoteric :but it only makes sense when it's short-lived. < 1590865161 532389 :Sgeo!~Sgeo@ool-18b982ad.dyn.optonline.net JOIN :#esoteric < 1590865596 340955 :user24!~user24@2a02:810a:1440:7304:6c4b:9080:f4e1:21a QUIT :Remote host closed the connection < 1590866378 893173 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :int-e: oh, I was trying to figure out what the pun was < 1590866391 78641 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :you're probably a day early, though, May has 31 days < 1590866538 873526 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :and mayflies only last a few days I think < 1590866544 592670 :ais523!~ais523@unaffiliated/ais523 PRIVMSG #esoteric :err, a few hours < 1590869261 898713 :spruit11!~unknown@ip56522cc1.speed.planet.nl PRIVMSG #esoteric :Time flies like an arrow, fruit flies like bananas. < 1590870264 908728 :FreeFull!~freefull@defocus/sausage-lover QUIT :Quit: rebooting < 1590870283 447759 :sprocklem!~sprocklem@unaffiliated/sprocklem QUIT :Ping timeout: 260 seconds < 1590870337 244703 :sprocklem!~sprocklem@unaffiliated/sprocklem JOIN :#esoteric < 1590870467 476313 :ArthurSt1ong!~ArthurStr@46-133-104-34.mobile.vf-ua.net JOIN :#esoteric < 1590870685 878581 :ArthurStrong!~ArthurStr@128-124-42-228.mobile.vf-ua.net QUIT :Ping timeout: 264 seconds < 1590870723 161089 :FreeFull!~freefull@defocus/sausage-lover JOIN :#esoteric < 1590871065 308209 :MDude!~MDude@74.5.130.30 JOIN :#esoteric < 1590871398 71390 :rain1!~debian@unaffiliated/rain1 QUIT :Quit: leaving < 1590873257 88795 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c QUIT :Remote host closed the connection < 1590873926 180653 :tromp!~tromp@2a02:a210:ca3:2800:d845:4b4c:3dfe:997c JOIN :#esoteric < 1590874773 78117 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :finding cycles in a bitmap and printing it as ASCII art: https://hatebin.com/ksmezwqait < 1590874807 317151 :arseniiv!~arseniiv@136.169.200.160 PRIVMSG #esoteric :now I need to make so that cycles would know which one is inside which > 1590875366 164122 PRIVMSG #esoteric :14[[07L14]]4 10 02https://esolangs.org/w/index.php?diff=73106&oldid=72160 5* 03Voltage2007 5* (-313) 10js was already implemented so I replaced it with befunge < 1590879272 29500 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 JOIN :#esoteric < 1590879460 188367 :Lord_of_Life!~Lord@unaffiliated/lord-of-life/x-0885362 QUIT :Ping timeout: 256 seconds < 1590879461 101019 :Lord_of_Life_!~Lord@unaffiliated/lord-of-life/x-0885362 NICK :Lord_of_Life < 1590880574 839609 :TheLie!~TheLie@2a02:8106:215:3300:844d:dece:9bd4:fbb2 QUIT :Remote host closed the connection < 1590880807 439206 :LKoen!~LKoen___@81.255.219.130 QUIT :Quit: Leaving < 1590881100 27027 :ArthurSt1ong!~ArthurStr@46-133-104-34.mobile.vf-ua.net QUIT :Quit: leaving < 1590881118 95133 :ArthurStrong!~ArthurStr@46-133-104-34.mobile.vf-ua.net JOIN :#esoteric < 1590882417 695345 :GFloyd!~GFloyd@nc-71-48-203-7.dhcp.embarqhsd.net JOIN :#esoteric < 1590882485 606494 :GFloyd!~GFloyd@nc-71-48-203-7.dhcp.embarqhsd.net PART #esoteric :"we can't breathe on freenode"