< 1183766499 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: no, it kills connections longer than like 5 seconds < 1183767958 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Google kills connections longer than 5 seconds? < 1183767962 0 :Tritonio_!unknown@unknown.invalid QUIT :"Bye..." < 1183768000 0 :GregorR-L!unknown@unknown.invalid QUIT :"Leaving" < 1183777450 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hehehe http://i-am-bored.com/bored_link.cfm?link_id=24130 < 1183777451 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :zzzzzzzzzz < 1183778196 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sleepity < 1183778204 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :slipe < 1183778210 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :is for the weak < 1183778218 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err... yes. < 1183778258 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure i was doing something just now < 1183778265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :programming? < 1183778267 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps. < 1183779423 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I should make a two-dimensional esoteric language. < 1183779434 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :*yawn* < 1183779440 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Declarative, since everyone knows declarative languages are The Way Forward. < 1183779449 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Make an n-dimensional one that's not brainfuck-based. < 1183779462 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Befunge-based? < 1183779470 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I even grant you the usage of the "0.0.0" portion of Dimensifuck syntax, since that's not Brainfuck-based at all. ;) < 1183779471 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or brainfuck-based? < 1183779489 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not brainfuck-based. . . Befunge-based *could* be interesting. < 1183779496 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :2 dimensional languages are fail < 1183779506 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mainly, the idea is to have it not be Dimensifuck. ;) < 1183779508 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(Actually, they're The Natural Way, since most natural languages I've seen are declarative.) < 1183779513 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: they are? < 1183779516 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :They're cool! < 1183779517 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183779527 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: Do you approve of n-dimensional ones? < 1183779528 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Malbolge, on the other hand... < 1183779539 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: in the case that n = 1 < 1183779553 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's esoteric! < 1183779556 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :n is any integer greater than 0. < 1183779570 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :One language for all such integers? < 1183779576 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Uh, yeah. < 1183779583 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/Dimensifuck Like this. < 1183779631 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... < 1183779636 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: what is declarative? < 1183779639 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :0+^v < 1183779653 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: "this is true, that is true" rather than "do this, do that". < 1183779664 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1183779682 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :prologgg < 1183779691 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Prolog. Haskell. Epigram. < 1183779695 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :sqrt(x) = the a such that a**2 = x? < 1183779698 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Lazy K. < 1183779714 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :isn't lazy k just combinator calculus? < 1183779715 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: can be done in... maybe at least one language. < 1183779720 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yes, it essentially is. < 1183779731 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I guess it's not really declarative so much as just functional. < 1183779734 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :declarative is kinda like funxxxional < 1183779750 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :They're related. < 1183779751 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :except it's even more snuggy < 1183779769 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Greatly because... um, hmm, maybe they're actually not relateD? < 1183779772 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :s/D/d/ < 1183779781 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You can have an imperative functional language quite easily. < 1183779791 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I believe Python and JavaScript are both... that. < 1183779794 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :scheme! < 1183779807 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :python is less and less functional every day < 1183779828 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Declarative non-functional languages are possible as well. < 1183779840 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: what's the status on removing lambda? < 1183779845 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I see it's still here for now, at least. < 1183779853 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i think it's removed in py3k < 1183779859 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :removed? < 1183779862 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :py3k? < 1183779864 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm quitting python. < 1183779865 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i've fallen out of the python world though < 1183779880 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(sys.stdout) < 1183779880 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :<__main__.IRCFileWrapper instance at 0xb7c5fb0c> < 1183779884 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :No you haven't. :-P < 1183779887 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm never gonna touch it again if lambda dies < 1183779907 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt_bot was written...how long ago? < 1183779915 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I have no idea! < 1183779915 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :17 months < 1183779921 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :really? < 1183779924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :tomorrow. < 1183779925 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1183779934 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :uh, how did you know that? < 1183779943 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :was i right? < 1183779947 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You can grab an older version of Python and present it to... um, the functional people. < 1183779954 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if i was, then it's because i own. < 1183779962 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i don't know if you were right < 1183779964 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The Old Python people. < 1183779981 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: great idea about a 2d declarative lang < 1183780001 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :they're always so completely imperative, all these one-char=one-command langs < 1183780016 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Inspired by... um, that language that I think isn't Ithkuil. < 1183780032 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :are you saying this grea idea was not yours? < 1183780054 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183780062 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ilaksh. < 1183780066 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if i went to sleep now, i could... sleep < 1183780077 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Dec 19 21:15:29 < 1183780080 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, I think Ilaksh is a constructed language written in two dimensions. < 1183780086 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That's as far as the inspiration goes. < 1183780086 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : * bsmnt_bot (n=bsmnt@abacus.kwzs.be) has joined #esoteric < 1183780088 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :one the other hand, i could just stay here and stare stupid at the screen < 1183780095 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's the first time bsmnt_bot appears in my logs < 1183780103 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: constructed? < 1183780123 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Not a programming language, but still made up. < 1183780130 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: what year? < 1183780133 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: that did not have any time on it < 1183780138 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I have yet to see a natural programming language. :-P < 1183780161 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Maybe they exist; I dunno. < 1183780164 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it was manually givezored < 1183780170 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : Dec 19 21:15:29 < 1183780181 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183780183 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: what do you mean by that? < 1183780196 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :"Hey, if I do this, the computer behaves in certain ways!" < 1183780202 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: what year was that? < 1183780206 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :User figures out a programming language based on the computer's responses. < 1183780221 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ihope: when toddlers start learning to program, perhaps? < 1183780223 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :2006 i assume < 1183780232 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :when i have kids. < 1183780232 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Nah, it was this year. < 1183780241 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ihope: i did that with qbasic < 1183780253 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :when i was but a wee child < 1183780261 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You... just sort of figured out qbasic? < 1183780268 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i used to code on bare metal with a laser pointer < 1183780272 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and a magnifying glass < 1183780324 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I did all my programming on a pool table. < 1183780334 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I invented this thing called a Feynman gate. < 1183780345 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whuz that? < 1183780347 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And "Feynman" just happens to be the name of some... intellectual. < 1183780356 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I started when I was 8 on Apple BASIC. . . < 1183780377 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i started @ 7 with qbasix < 1183780394 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Put a ball in 1, get a ball out A. Put a ball in 2, get a ball out B if there was a ball in 1 or C if there wasn't. < 1183780420 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183780427 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is that tc? < 1183780432 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i doubt it < 1183780442 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wish i had a turtle < 1183780443 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Finite memory. < 1183780448 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'd teach them to sing < 1183780462 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: did you invent that? < 1183780465 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If you have an infinite pool table with an infinite number of obstacles, it's Turing-complete. < 1183780471 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Nope. Found it all online. < 1183780504 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm a bit too tired to understand that many words < 1183780507 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll eat something -> < 1183780516 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :gotta finish my codez < 1183780654 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: how does that scale into a bigger table? < 1183780802 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How does what scale? < 1183780811 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Bigger table, bigger computer. < 1183780822 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, that's for three holes < 1183780835 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :when there's a forth, what do you do with it < 1183780844 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, there aren't necessarily any holes at all. < 1183780853 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no holes? :| < 1183780855 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :dick < 1183780858 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*sick < 1183780860 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You have your balls and you have some sort of obstacles. < 1183780861 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :... < 1183780867 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1183780871 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You can have holes if you want, I guess. < 1183780907 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :But given that this is all about building tiny, energy-efficient computers, don't expect them to work :-P < 1183780910 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I wish I had a turtle; I'd teach it LOGO. < 1183780916 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :cool idea < 1183780920 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :4 turtles < 1183780927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :trying to catch each other < 1183780943 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so they do the decreasing rectangle < 1183780948 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and in the end < 1183780952 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :they kill each other < 1183780959 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What a waste. < 1183780968 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, but what a rectangle. < 1183781254 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183781267 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i made a 3d flight simulator once with logo < 1183781287 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :though it wasn't really a 3d flight simulator. < 1183781295 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but you flew around and tried to hit the other guy < 1183781303 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Cool. < 1183781334 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i also made a 2d flight simulator with eye view < 1183781340 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :'eye view'? < 1183781369 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to hit oklopol. < 1183781373 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway, it was sick < 1183781391 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that was... visual basic iirc :P < 1183781409 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :4 hour project... i was pretty good at vb < 1183781416 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but then i found out it sucked ass :< < 1183781435 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now i can't open it < 1183781456 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm, code -> < 1183781537 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183781538 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my < 1183781539 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :god < 1183781542 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i gotta upload this xD < 1183781694 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :here we go < 1183781706 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :www.vjn.fi/gz/Luolis.exe < 1183781717 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you gotta love the graphics. < 1183781793 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :god i've done a lot of crappy games < 1183781804 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i must've had an empty childhood. < 1183781813 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :empty, vacuum < 1183782345 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hehe, this one is pretty nice www.vjn.fi/gz/sdlluolis.exe :P < 1183782420 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183782539 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :how'd you like a game where you move around a 2d screen with one button? < 1183782598 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :www.vjn.fi/gz/onokki.exe eve though i'm pretty sure no one is gonna open these :P < 1183782603 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*even < 1183782627 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sweet memories <3 < 1183782628 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1183782924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(btw in case you try onokki, i can move to anywhere on the screen in ~ 6 seconds) < 1183783598 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"The program cannot start because SDL.dll does not exist" < 1183783623 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :www.vjn.fi/dep < 1183783632 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is why no one is going to run them < 1183783636 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :vc6++ < 1183783642 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :c6+v+ < 1183783798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that was the link to the dll, by the way, don't know if you just thought it was another gamme < 1183783822 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guessed dep meant "dependencies" < 1183783829 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183783834 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well guessed < 1183783845 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i named it but i never remember it :P < 1183783852 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i always try /dll < 1183783906 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wish i still got great ideas like making a game that's controlled with one button < 1183784429 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mind telling me what that button is? < 1183784431 0 :boily!n=boily@bas2-quebec14-1128562584.dsl.bell.ca JOIN :#esoteric < 1183784437 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1183784455 0 :pikhq_!n=pikhq@208-180-8-45-static-hsb.provalue.net JOIN :#esoteric < 1183784458 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :'enter' for green, '1' for red < 1183784463 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if you mean onokki < 1183784470 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(also, your program is evil, i need ctrl-alt-del to quit...) < 1183784474 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1183784476 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1183784484 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lol windows < 1183784497 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :when i run it, a console is also opened < 1183784504 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :shutting that down kills the program < 1183784514 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: you are lol < 1183784531 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :windows is made of fail < 1183784535 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh, i didn't see that < 1183784560 0 :pikhq!unknown@unknown.invalid QUIT :Nick collision from services. < 1183784562 0 :pikhq_!unknown@unknown.invalid NICK :pikhq < 1183784566 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: did you figure how to move around? :) < 1183784570 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you'd be the first < 1183784630 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :even though the idea is very trivial < 1183784669 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the first thing i could think of < 1183784876 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :even though there is just one button, there are actually two kinds of manouvering < 1183784936 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i did manage to get stuck in a corner for a while, still haven't broken the code < 1183784946 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183784964 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's very easy. < 1183784979 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just think what happens when the button is donw and what happens when it's not < 1183784998 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh... let's see < 1183785004 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just pressing the button won't help in cracking teh code < 1183785030 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh, i became invincible, muahahaa < 1183785166 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i remember we used to play that game with 7 players xD < 1183785194 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the beauty of having just one button per player is that 7 players can use the same kayboard < 1183785204 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :though it gets a bit cramped < 1183785406 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: still trying? < 1183785423 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :taking a break < 1183785428 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1183785437 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :tell me if you want clues :D < 1183785457 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...' < 1183785457 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :is casting a void* -> function pointer legal in C? < 1183785462 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183785494 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why do you ask? < 1183785506 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :because i have some code that does < 1183785522 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and me and someone are arguing over whether it's legal or not < 1183785543 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can't say i actually *know* < 1183785553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've assumed wrong about c before :) < 1183785592 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1183785608 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :of course you can do that, any pointer is just a normal number < 1183785624 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and < 1183785638 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why would a function pointer be a special pointer :\ < 1183785679 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if it's not legal, i'll kill 'em < 1183785687 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hope tha convinces you < 1183785693 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :... < 1183785737 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...? < 1183785748 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :...?... < 1183785778 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION refuses to do what he's supposed to < 1183787776 0 :boily!unknown@unknown.invalid QUIT :"WeeChat 0.2.5" < 1183788292 0 :boily!i=boily@gateway/tor/x-32b38046e6e790d9 JOIN :#esoteric < 1183788799 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1183789792 0 :boily!unknown@unknown.invalid QUIT :Remote closed the connection < 1183791774 0 :Izak!n=Izak@unaffiliated/izak JOIN :#esoteric < 1183791793 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Welcome to insanity. < 1183791823 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: Casting void* -> any pointer is, by definition, legal. ;) < 1183794703 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1183794712 0 :Izak!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183794808 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :are the esoteric languages in question here esoteric as in hard to use/pointless brainf*ck kind of things or esoteric as in non-mainstream, unusual and interesting? < 1183794843 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :both < 1183794854 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :fair enough =-) < 1183794923 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :been working on a toy interpreter/compiler for a lazy programming language with first class subset/quotient types and looking for a place to talk to people about it, that fit the general gamut of this place? < 1183794960 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :absolutely < 1183794968 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ah good to know then =) < 1183794984 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i can stop drowning out the rest of the chatter on ##logic then ;) < 1183795199 0 :clog!unknown@unknown.invalid QUIT :ended < 1183795200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1183795223 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :basically what i have right now is an interpreter written in haskell for this thing, and a compiler i've been slowly working on bootstrapping in it. the language is sort of a kitchen-sink repository of anything cool-but-undecidable-in-general in type theory circles. < 1183795270 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Just with the word "haskell", you've gotten Oerjan's approval (although he's not here ATM) < 1183795281 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :hopefully in a couple months i should have something stable enough to start being useful < 1183795282 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183795295 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what are subset/quotient types? < 1183795300 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Just one question: is it sufficiently odd/quirky to count as an esoteric language? < 1183795315 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i don't know, pikhq thats kind of what i was hoping to find out ;) < 1183795323 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :May very well be. . . < 1183795349 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Non-mainstream, unusual, and interesting, I believe you have covered. < 1183795359 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :So, even if not techincally esoteric, you fit in perfectly. < 1183795378 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: : the idea is that you can define a subset type of an existing type by stating a predicate using the syntax of the base language for the predicate. so example Nat = { x : Int | x >= 0 } would be a subset type taken from the Ints < 1183795393 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(although I'm thinking about making Brainfuck knowledge mandatory for the channel. :p) < 1183795409 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :or if i have sorted : Ord a => [a] -> Bool as a predicate written in the base language < 1183795410 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i can say < 1183795426 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :sort : Ord a => [a] => { result : [a] | sorted result } < 1183795447 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :using a subset type on the result to specify that the result will satisfy the in-language predicate above < 1183795453 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: Hmm. I like, so far. . . Not sure I'll be able to wrap my head around all of it, though. :p < 1183795456 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :appealing to abstract interpretation to check it at compile time < 1183795464 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so in general < 1183795502 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :f : { x : T1 | pre x } -> { y : T2 | post x y } defines a compile-time-checked contract of the pre and post conditions on f < 1183795510 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :they can't be proven in general, but surprisingly many can < 1183795534 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I. . . Um. . . < 1183795538 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so if i can prove it you hear nothing from the compiler, if i can concretely disprove it with a counter example you get an error and the counter example, shrunk haskell quickcheck style < 1183795558 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :if i can't prove it you get a warning and an option to insert a runtime check for the condition, since the predicate is written in the base language < 1183795575 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to the comfort of a Brainfuck interpreter. Could someone that's actually taken computer science make edwardk feel welcome, instead? :p < 1183795588 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: heh < 1183795604 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :you know its bad when your language makes someone seek comfort in Brainfuck < 1183795642 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not really. I actually enjoy coding in BF. < 1183795670 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways thats one undecidable-but-cool feature, and its probably the most useful one that I have been working towards < 1183795701 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. . . I *think* you've managed to describe something superTuring. < 1183795712 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yes yes, you and oerjan will have fun together < 1183795725 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah, like i said, type checking the above tries to prove it, if it can, and if it can't, it falls back on inserting a runtime check < 1183795738 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so a lot of things like array bounds checking can be caught that way at compile time < 1183795764 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :quotient types are a little harder to motivate and unfortunately lack the runtime fall-back. < 1183795870 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :subset types let you define an arbitrary subtype for any type in the language by using predicates defined in the language. quotient types let you go the other way and let you define arbitrary supertypes for types in the language by redefining equality on them and incurring a proof burden every time you use them in argument-position to a function that is defined over the base type. < 1183795890 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so, hrmm, Parity = Int \\ (\x y -> x mod 2 == y mod 2) < 1183795895 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :would be a quotient over the integers < 1183795908 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :where we say that two values are equal if they have the same remainder mod 2. < 1183795920 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :then even = 0 :: Parity; odd = 1 :: Parity < 1183795955 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and if you ask of 4 == even, it'll say yes because 4 :: Parity == 0 :: Parity since 4 mod 2 == 0 mod 2 < 1183795960 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :too much syntax! < 1183796008 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is too much of a fan of a lack of syntax. . . < 1183796022 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: that would explain the love of BF =) < 1183796030 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: And of Tcl. < 1183796034 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1183796042 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lisp! < 1183796044 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And my worshipfulness of Lisp, in spite of not knowing it. < 1183796049 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i would have thought we would have lost you to scheme or lisp by now < 1183796053 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183796154 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways syntax-like its kind of like haskell, with the addition that you use the same function syntax at the type and term levels -- giving it somewhat less syntax to learn there, but blowing the syntax budget on polymorphic records, etc. < 1183796167 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What, do you have anything against people using: puts "2 + 2 == [+ 2 [* 5 6]]" < 1183796169 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :? < 1183796182 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Um. . . < 1183796186 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :What the hell did I write? < 1183796194 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :not quite sure < 1183796201 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(it's 2:00. Forgive me.) < 1183796216 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it's 2:00? < 1183796293 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i thought you were in MST < 1183796749 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways it probably doesn't qualify as esoteric, simply because its designed to be useful ;) < 1183796858 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :as long as it's interesting < 1183797020 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Currently, I'm in CST. Will be back in Mountain soon. < 1183797057 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: It's an interesting concept for a programming language. I'd say it fits with the populace here if not the topic. ;) < 1183797061 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183797086 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183797099 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :BTW, some of the oddest esoteric languages have been designed with some sort of usefulness in mind. . . < 1183797120 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :basically my goal right now is to get the compiler bootstrapped and generate some decent code from it < 1183797135 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and to finish mucking around with the syntax so much =) < 1183797157 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :replace it all with sexps ;) < 1183797169 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(I believe one was designed to disprove the strong claim of the wire crossing problem < 1183797170 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :not bloody likely ;) < 1183797172 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :) < 1183797277 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Scratch that: multiple esolangs have been designed with that in mind. < 1183797318 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Another esolang was designed with the idea of making it trivial to design cellular automatons. < 1183797492 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah i've actually checked in on them over the years here and there < 1183797516 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Cool. < 1183799946 0 :sebbu!n=sebbu@ADijon-152-1-71-83.w83-203.abo.wanadoo.fr JOIN :#esoteric < 1183806023 0 :jix!n=jix@dyndsl-080-228-188-157.ewe-ip-backbone.de JOIN :#esoteric < 1183810129 0 :RedDak!n=dak@87.19.82.136 JOIN :#esoteric < 1183813435 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1183813619 0 :jix!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1183813708 0 :jix!n=jix@dyndsl-080-228-188-157.ewe-ip-backbone.de JOIN :#esoteric < 1183813712 0 :jix!unknown@unknown.invalid QUIT :Remote closed the connection < 1183814692 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to figure out wtf Luolis does < 1183815210 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION can't figure out onokki either < 1183815777 0 :RedDak!n=dak@87.19.82.136 JOIN :#esoteric < 1183815799 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Welcome to #esoteric. < 1183819415 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1183821828 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1183823761 0 :RobAtWork!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183824645 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :'sup, everyone? < 1183824746 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :everything, pretty much < 1183824749 0 :edwardk!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183825784 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183826365 0 :sebbu2!n=sebbu@ADijon-152-1-32-225.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1183827116 0 :sebbu!unknown@unknown.invalid QUIT :Nick collision from services. < 1183827121 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1183831638 0 :pikhq!n=pikhq@208-180-8-45-static-hsb.provalue.net JOIN :#esoteric < 1183832729 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1183833263 0 :jix!n=jix@dyndsl-080-228-183-193.ewe-ip-backbone.de JOIN :#esoteric < 1183833995 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So, a two-dimensional declarative language... < 1183834613 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...lemme conjure up something from topology. < 1183835227 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183835353 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Okay. Statements are subsets of RxR, which is the plane. < 1183835366 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :it should be Тетрис-based! < 1183835386 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If there's a continuous bijection between RxR and RxR that maps S onto T, then S and T are equivalent. < 1183835409 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :if you say so < 1183835416 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah, topology! < 1183835418 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(A scary thing until you finish digesting it. After you do, it seems... easy.) < 1183835433 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :of course it is topology < 1183835462 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Let's call the existence of such a bijection "morphability". < 1183835477 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :There's probably a term for it already, but mine works. < 1183835571 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And... egad, there's so much stuff that's so easy to grasp intuitively yet so hard to express formally... < 1183835608 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :like? < 1183835723 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The idea I'm wanting to capture is that of what could easily be written by a pen such that a little bit of sloppiness doesn't matter. < 1183835762 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Something like the letter O would be invalid because the starting and ending points would have to match perfectly. < 1183835796 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Same for the letter T: the one end of the vertical line has to go exactly as far as the horizontal line. < 1183835820 0 :edward1!n=edwardk@c-24-61-13-7.hsd1.ma.comcast.net JOIN :#esoteric < 1183837650 0 :edward1!unknown@unknown.invalid NICK :edwardk < 1183837809 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, we'll say that a statement has to be a union of finite curves with endpoints such that the only "special points" are where a curve goes through a curve. < 1183837836 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Er, endpoints where a curve goes through a curve < 1183837844 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Er, endpoints *and* where a curve goes through a curve < 1183837932 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :"Special point" meaning singular point, I guess. < 1183837991 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A statement has to be a union of finite curves with endpoints such that all singular points are stable! < 1183839501 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's hard to figure out what a "line" is when dealing with lines drawn on paper. < 1183839504 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :. < 1183840092 0 :chuck!n=charlie@wikimedia/Chuckfromchan JOIN :#esoteric < 1183840116 0 :chuck!unknown@unknown.invalid PART #esoteric :? < 1183840891 0 :RedDak!n=dak@87.19.82.136 JOIN :#esoteric < 1183842590 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I think I've captured it decently well. < 1183842839 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hey, I could turn this into a grid notation thing... < 1183842892 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :+ is an intersection, | is a straight line, - is a straight line... I guess some creativity is needed for corners. < 1183842905 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :+ will do < 1183842917 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :since no two lines may end at a point < 1183842936 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :They don't end at points; they end at edges. < 1183842950 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :+ alone is two lines crossing. < 1183842993 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If you add a - to the side and | below, it might still be two lines crossing. < 1183843009 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You could use the same character for all crossings, though. How about %? < 1183843027 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :* < 1183843038 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :\ < 1183843039 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : / < 1183843043 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Er, all corners, I mean. < 1183843051 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...Yes, \ and /! < 1183844295 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :For a second there I thought the curves involved were real curves, like NURBS or something. hrmm there is an esoteric language for you < 1183844338 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Heh... < 1183844356 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, if you find a good way to specify those things, they'll work as well. < 1183844376 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A little crazy, eh? < 1183844384 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :well, i was a computational geometer for a while, i'm pretty comfortable with NURBS ;) < 1183844461 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :now, try to explain to the end user what a sequence of knots and weights is supposed to do < 1183844493 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :where is "NURBS" < 1183844520 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :non-uniform rational b-spline curves < 1183844550 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its not a language, just a way to specify curves in a projectionally invariant manner < 1183844843 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Projectionally invariant? < 1183844854 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(No, spellcheck, I didn't mean "protection ally".) < 1183844855 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :innumerable brainfuck: a function and a range a...b is specified, then for every result of that function in that range is given it's own thread (infinite threads that is), so that every thread has a real number representing an infinite number of brainfuck instructions to execute (base 8 presentation); should a thread be given a faulty bf program it dies; the memory is shared, and it's continuous, > will move one derivative and has to be executed infinit < 1183844855 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :e times to move at all < 1183844871 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183844886 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually, if you lose that continuous memory, that can be written an interpreter < 1183844896 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in theory < 1183844901 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... < 1183844927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it has to give faulty bf programs except for certain values < 1183844945 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :After faulty BF programs are disposed of... well, the result is still dense. < 1183844952 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ihope: if you use a perspective projection on a bezier curve then subdivide it you get a different curve than if you subdivide it and then project it. NURBS provide the non-uniform subdivision necessary to be able to project something into 'viewspace' and get the same curve cutting it up there as before. it means its more useful for computer graphics applications < 1183844957 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nope, if you give it a function where it's not < 1183844965 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, right. < 1183844983 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :of course, running innumerable threads would be impossible even if we were given an infinite space to use for the computer :) < 1183844992 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and infinite time < 1183845056 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes off his geometer hat and goes back to being a code monkey ;) < 1183845086 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: write me an innumerable bf interpreter! < 1183845089 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::| < 1183845096 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's be awesome < 1183845100 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*that'd < 1183845104 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: heh, busy with my own language compiler at the moment ;) < 1183845108 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1183845112 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :putStr (repeat 'a') >> putStr (repeat 'b') < 1183845118 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :innumerable brainfuck is super^2turing :DDDDD < 1183845127 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Outputs infinitely many a followed by infinitely many b. < 1183845130 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it's what? < 1183845138 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it can predict the result of a superturing function. < 1183845140 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*program < 1183845165 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Predict the result meaning solve the halting problem? < 1183845169 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, you can write a program in it that can predict any superturing program's result. < 1183845173 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: nope. < 1183845177 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that^2 < 1183845184 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you know < 1183845198 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a superturing program cannot be written that can analyze another one < 1183845205 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It can (solve the halting problem)^2 of a super-Turing program? < 1183845210 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1183845214 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :'super-turing' is a turing machine with a halting oracle right? < 1183845218 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183845227 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but mine has a superoracle :) < 1183845240 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What do you call one that can just solve the halting problem of a super-Turing program? < 1183845256 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err < 1183845265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :super²turing was what i used < 1183845268 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but < 1183845274 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure there's no official word < 1183845286 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so 'super-turing' is the local lingo for Pi^2_0? < 1183845296 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1183845308 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :There's a... where's that notation described? < 1183845309 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: you're pretty smart, what've you been reading? < 1183845327 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(So a super^2-Turing program can solve the halting problem for super-Turing programs where a super-Turing program can solve the halting problem for a Turing program?) < 1183845328 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, indeed prettu obvious there was a notation for that < 1183845332 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*pretty < 1183845334 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: been collecting masters degrees. =) < 1183845339 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha :D < 1183845349 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my future as well, hopefully < 1183845368 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Collecting... what? < 1183845368 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: yes, exactly < 1183845394 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ihope: let me find you a reference < 1183845407 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What if we say that a rank-0 machine is a Turing machine, and a rank-n machine is one that can solve the halting problem for rank_m machines for all m < n? < 1183845413 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Er, rank-m. < 1183845430 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: Pi^2_0 was what edwardk used < 1183845437 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :iirc grigori rosu used it when describing the complexity of proving the equivalence of two infinite streams last year at the ICFP but its an older notation < 1183845438 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :unless _0 was a typo :D < 1183845473 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Gets problematic when you get to an ordinal number n that can't be described by a rank-(n+1) machine. < 1183845484 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1183845491 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You know about ordinal numbers? < 1183845499 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err, guess i dont' :| < 1183845510 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er < 1183845513 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i typod < 1183845518 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :its Pi_2^0 =) < 1183845522 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I sort of accidentally invented them once, but they're well-known :-P < 1183845525 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :http://fsl.cs.uiuc.edu/index.php/Equality_of_Streams_is_a_Pi_2%5E0-Complete_Problem < 1183845568 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: what are they? 4th? < 1183845570 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :5th < 1183845571 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :1st < 1183845575 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ordinal numbers :| < 1183845581 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well... < 1183845609 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah, there's some weird math thing about them i don't know < 1183845613 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :guess i'll read. < 1183845634 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...here are two properties of ordinal numbers: for every set of ordinal numbers, there's a lowest ordinal number bigger than all those in the set; and for every ordinal number, there's a set containing exactly those ordinal numbers below that ordinal number. < 1183845740 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :cardinals don't have that? < 1183845774 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :to me, that's a tautology, but you've prolly read a lot more about infinities than me < 1183845864 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Cardinal numbers also have those properties. < 1183845887 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...is there a difference? < 1183845905 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :http://www.mtnmath.com/whatrh/node51.html introduces Pi_2 mentioned above, and goes on to ordinals from there < 1183845908 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Cardinal nubers may become Pope < 1183845918 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, cardinal numbers actually have some meaning attached to them. < 1183845919 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: *groan* < 1183845932 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to bed < 1183845933 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I guess ordinal numbers do, too, but it's a different meaning. < 1183845992 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If a set is order isomorphic to a set of ordinal numbers containing exactly those ordinal numbers below n, then n is said to be the order type of that set. < 1183846042 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :http://ecommons.library.cornell.edu/bitstream/1813/6877/1/89-961.pdf also talks about it < 1183846505 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: how do you know this stuff, btw? < 1183846515 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :irc, school? < 1183846765 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a math degree helps =) < 1183846778 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :well the courses encountered in the course of earning it anyways < 1183846816 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if you're talking about ordinals, [[Banana Scheme]] on the esoteric wiki. < 1183846818 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: Wikipedia, #math, brain, teacher for a class I'm not in yet. < 1183846841 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :Banana Scheme is all about proving the halting problem. < 1183846867 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :lament: its easy to prove there is a problem ;) < 1183846869 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And Google, #haskell. < 1183846900 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :My toy project has been all about 'nibbling at the edges' of undecidability there. < 1183846912 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :deciding it where it can figure it out and not sweating the ones it can't < 1183847679 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1183847695 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :heya < 1183847732 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1183847770 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ooh, it's 070707 today < 1183847787 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :wandered in here last night trying to find a place where talking about a language-in-progress wouldn't put everyone to sleep ;) < 1183848037 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i thought i recognized you from #haskell < 1183848043 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183848048 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :likewise < 1183848070 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :the reaction from last night went: (3:00:47 AM) pikhq: Just with the word "haskell", you've gotten Oerjan's approval (although he's not here ATM) < 1183848088 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh :) < 1183848266 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :right now wrestling with my concrete syntax for named function arguments =/ < 1183848323 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :what i have is basically a haskell-like syntax, from the standpoint of minimal keywords and you just say foo x y = .. to define a function, and give it a haskell like type signature < 1183848340 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :except for the fact that type level functions use the same syntax as term level ones < 1183848392 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and that i have subset and quotient types for contract checking and polymorphic records and variants, to give you a reasonable OOP and extensible version of 'data' declarations, ala ocaml < 1183848416 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oh, and in general everything is undecidable, i accept this. < 1183848431 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :kind of the cost of doing business with some of these features =) < 1183848489 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but i noted that i can leverage the same syntax i use for field dereferencing for named arguments < 1183848495 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i.e. < 1183848519 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :map : Ord a => (.with : a -> b) -> (.over : [a]) -> [b] < 1183848534 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :is this an explicitly, dependently typed language? < 1183848539 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :then map.over [1,2,3] binds the second argument < 1183848547 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i have a limited notion of dependent types at present < 1183848558 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :dependent types can only affect predicates, therefore they have limited runtime effect < 1183848590 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :though i have type families so thats not entirely true, there are other cases of dependent types, but basically they all resolve with phase distinction < 1183848599 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives up trying to follow #haskell in the other window < 1183848600 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and its implicitly typed for most things < 1183848653 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so, hrmm, maybe a longer example? < 1183848679 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :say, we want to prove the correctness of a sort routine, but we don't want to go off and write it in coq < 1183848687 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and we don't want to do any real explicit proofs < 1183848695 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :first we need a predicate for what it means to be sorted < 1183848708 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :sorted : Ord a => [a] -> Bool < 1183848719 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :good oldfashioned haskell modulo some syntax < 1183848727 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :we can even drop in :: to make you more at home < 1183848744 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :undecidability in theory is one thing, but the real question is whether the type inference can terminate on practical examples < 1183848772 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :in my case though you can make it so you can explicitly pass in the order there. sorted (.by : Ord a) => [a] -> Bool gives you the ability to explicitly pass the dictionary < 1183848778 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :i can always terminate and insert runtime checks < 1183848790 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but i'll emit a warning if i have to give up < 1183848832 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh i noticed automatically greating *By functions was mentioned on #haskell before i gave up < 1183848842 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so, going with the sorted example you can build it up like haskell sorted [] = True; sorted [x] = True; sorted (x:xs) = x [a] -> (xs : [a] | sorted xs) < 1183848933 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :where ( x : T | P x) is a predicate subtype, like mathematicians write { x : T | P x }, i just need { }'s for records so i swap unambiguously to ()'s < 1183848952 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Subset and quotient types? < 1183848954 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :now, that reads as a post-condition on sort's output < 1183848960 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :there is a subset type in action < 1183848970 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I've seen derivatives, but no quotients... < 1183848983 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :f : (x : T | pre x) -> (y : T | post x y) < 1183849009 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :specifies pre conditions necessary to call the function and post conditions of what it gaurantees < 1183849044 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a quotient type is where you redefine equivalence over the type, in this case it interacts in somewhat interesting ways with the rest of the type system < 1183849052 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :think of it like a newtype redefining == on steroids. < 1183849075 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :a sort of generalized generalized newtype deriving ;) < 1183849139 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways, we can define the sort above, sort [] = []; sort (x:xs) = insert x (sort xs) where insert : a -> (xs : [a] | sorted xs) -> (ys : [a] | sorted ys) has the obvious definition < 1183849145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :reminds me of the little n-category stuff i remember < 1183849147 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and the compiler incurs the proof obligation < 1183849157 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wishes he'd understand enough of that to be able to say something < 1183849181 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: i found out how to move in your game < 1183849225 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1183849226 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :shoot < 1183849234 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and if you don't want to limit the use of insert you can go to a more liberal definition: insert : Ord a => a -> (xs : [a]) -> (ys : [a] | sorted xs ==> sorted ys) --- er i forgot the Ord a => constraint in the insert above < 1183849239 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :shoot? < 1183849253 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now knowing how it's done is one thing, *moving* is a completely different story < 1183849256 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: figuratively. < 1183849260 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :tell me < 1183849273 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways the compiler just uses a form of abstract interpretation and the octagon abstraction domain for integer operations < 1183849289 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :and tries to prove what it can < 1183849295 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: pressing the button makes it go towards the accompanying swarm < 1183849317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and not pressing it? < 1183849318 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :if it can't prove the correctness of the output or input it insert a runtime check and warns, if it can provide a counter example at compile time it gives you that and a trace < 1183849359 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: there is also a small quirk there, you see gravity is not 2d, but separate for both axes :) < 1183849393 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not pushing the button seems to be a bit more vague < 1183849444 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but it seems to interact with the wave pattern somethow < 1183849444 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nope. just the other way around :) < 1183849447 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183849454 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :* oklopol wishes he'd understand enough of that to be able to say something < 1183849456 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yes, me too < 1183849467 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Wave pattern? What is this? < 1183849490 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :anyways, its my current obsession ;) < 1183849501 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :don't try to crack that, oerjan :D it should go towards the light spots, but it's just a quick add and doesn't work that well < 1183849527 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: you're obsessed with creating languages with obscure features, is it? :-) < 1183849528 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: a game i made some years ago < 1183849535 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :www.vjn.fi/gz/onokki.exe < 1183849565 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it did seem like it tried to hunt those down vaguely < 1183849573 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh, yeah < 1183849602 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION scans it for viruses < 1183849604 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think it find the lightest pixel around the ball on 32 pixel range and goes towards it < 1183849608 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's taking a little while. < 1183849609 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION already did that < 1183849632 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea whether i have a virus scan, i've never really believed in viruses :) < 1183849635 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :csrss.exe is using all the CPU time again... < 1183849639 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :in haskell can you do the f (x+1) = ... with any function of x? < 1183849639 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :ihope: well, its not exactly an obscure feature, adding compile-time-checked contracts in the same language the end-user is already familiar with writing their code in strikes me as rather front-and-center from a usable powerful feature standpoint =) < 1183849640 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :neither computer nor human ones < 1183849652 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it is hard to crack because unless you manage to get away from the swarm all the effects are so small < 1183849685 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: only constructors and a few other things, I think. < 1183849703 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :edwardk: so this is essentially a Haskell dialect? < 1183849707 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Try to do something like f (g x) = ... and... bad things happen. < 1183849710 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that would be amazingly cool if you could < 1183849714 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :with a bit ocamlized syntax < 1183849715 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1183849720 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That's sort of Curry's job, though. < 1183849742 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :then the compiler would need to invert functions < 1183849744 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :bstmtb: you can do so only with + and only if the inferred type of the n+k pattern is a member of the Integral typeclass < 1183849765 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: the x+n pattern is about the only thing which is a multiargument function < 1183849777 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and it is considered by some a wart in haskell < 1183849778 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: not really because i break everything else in the language on the way to get usable records and my type syntax looks nothing like it beyond the trivial examples < 1183849791 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but haskell is the easiest launching off point for me to take when explaining it < 1183849806 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: example of a big syntactic change < 1183849815 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :nat = (x : int | x >= 0) < 1183849829 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :doesn't require any statement that nat is a type or capitalization on the tycon < 1183849887 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :also, you can give classes names which dramatically changes the semantics of passing them, since an instance is just a dependently typed record you guarantee to exist < 1183849895 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :er give instances names < 1183849918 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk can invert functions, -Func will do it... unfortunately that's one of the superturing things that will most like just crash :) < 1183849927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*likely < 1183849928 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :that way you can HAVE multiple instances of Ord for Int, one default, a bunch named, and you can pass in the named one to sort using that sort .by foo syntax < 1183849953 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :first class extensible records with subtyping also mucks with a lot of the haskell properties < 1183849962 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :but its lazy < 1183849962 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :inverting functions isn't superturing < 1183849977 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what if you have a function that uses two different ord instances? < 1183850000 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It isn't? < 1183850006 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: i'd say it is < 1183850020 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: you can refer to their members by the name you gave the dictionary inside the function if the typing is ambiguous otherwise if there is only one way to unify it'll choose the right one < 1183850021 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but that's just a hunch, i don't know why it would be < 1183850027 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How do you know it isn't super-Turing? < 1183850043 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, scan's done. < 1183850057 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ihope: you can just search for the inverse < 1183850064 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183850066 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1183850074 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however... < 1183850076 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What if the range is uncountable? < 1183850084 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: if it's a real -> real function, that's uncountable as ihope said < 1183850090 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :computable things are not uncountable < 1183850096 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...or is it the domain that I mean? < 1183850109 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so in the above with sorted : (.by : Ord a) => [a] -> Bool; sort (x:xs) = x <=_by head xs && sorted xs exploits the fact that i allow foo.bar and bar_foo to be used as synonyms so that you can to infixed operators looked up in records. < 1183850131 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there has to be a better way than searching for the inverse < 1183850137 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :There often is. < 1183850150 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Especially if you have access to quantum mechanics. < 1183850151 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :so <=_by and `by.<=` would be identical in that case < 1183850160 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i just chugged a quarter litre of soda water < 1183850185 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: and the results? < 1183850205 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :rebellion of stomach < 1183850220 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Like how? < 1183850229 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :dictionary passing is a bit more complicated by the fact that i want to pass a single polymorphic dictionary record when possible, so multiparameter type classes incur some weirdness < 1183850239 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :much eructation < 1183850285 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Good thing there was no emesis. < 1183850305 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just searching for the answer in deed isn't superturing < 1183850310 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1183850310 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*indeed < 1183850328 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The problem is doing it quickly. < 1183850361 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the idea why i'm making stuff like that in oklotalk is to make them work with simple math expressions < 1183850362 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Doing it quickly means you can construct a function proof -> sentence and invert it to prove any provable sentence :-) < 1183850366 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just for the hell of it < 1183850402 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: anyways thats the rough idea < 1183850458 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :brb rebooting < 1183850464 0 :edwardk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1183850538 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ihope: as far as i know quantum computing is not known to be sufficient to invert all functions quickly, as in there is no quantum algorithm to solve NP-complete problems in polynomial time < 1183850551 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Depends on how you define "quickly". < 1183850565 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i just did in the second halg < 1183850567 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*half < 1183850578 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Indeed. < 1183850596 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Inverting gets weirder when you bring foralls in: forall a. a -> * = (exists a. a) -> * whose inverse is * -> exists a. a < 1183850599 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :primes aren't np then? < 1183850603 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*no _known_ quantum algorithm < 1183850609 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sorry for the noobity < 1183850623 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :they are np but not np-complete < 1183850627 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(as far as we know) < 1183850627 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1183850631 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :*assumed to be np < 1183850637 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Checking for primeness? < 1183850640 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :np-complete one that any np can be converted to or smth? < 1183850644 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*is one < 1183850647 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :assuming you meant factoring < 1183850649 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yup. < 1183850664 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no they definitely are np, since that includes all the weaker ones < 1183850668 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :NP-complete problems are the hardest ones. < 1183850673 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...in NP. < 1183850678 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :factoring and primechecking are essentially the same thing < 1183850698 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: NO! < 1183850702 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Isn't that far from proven and much suspected to be false? < 1183850703 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1183850713 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there _is_ a known algorithm in P for checking primes < 1183850716 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: no no no < 1183850716 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: give me a factoring algorithm given a prime checking algorithm. < 1183850730 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: isn't it err... how do you say it < 1183850733 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :is there one in P that's deterministic? < 1183850737 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183850738 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that one. < 1183850740 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: yes < 1183850743 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183850747 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's fairly recent < 1183850747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then sorry :< < 1183850750 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<- naab < 1183850762 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You're such a naab indeed. :-P < 1183850773 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but so eager to learn. < 1183850792 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and also more inefficient than the probabilistic algorithms < 1183850794 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: can i see it? < 1183850839 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually, i'm pretty sure read there isn't one, and that was less than a year ago < 1183850853 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and i'd say that was in wikipedia < 1183850870 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: there is an algorithm for checking if a number is a prime in polynomial time < 1183850873 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :if prime checking was the same as factoring most public key cryptographic algorithms would be pointless < 1183850893 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is not one known to factorize a number if it isn't prime < 1183850925 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is checking wikipedia now < 1183850931 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: i mean it's the same if you just care about p/np and assume it needs to be deterministic < 1183850962 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/AKS_primality_test < 1183850966 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i might recall wrong, my memory likes to carefully change all the new facts to what i assumed myself < 1183850982 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: thus proving SimonRC's theory :) < 1183851015 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah :) < 1183851053 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually i'm not sure if i believe that < 1183851064 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was referring to that exact theory. < 1183851067 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1183851079 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what does (mod n, m) mean? < 1183851090 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :n%m? < 1183851101 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1183851112 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but since you remember the theory you must believe in it, by the theory :) < 1183851124 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: what language? < 1183851138 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :in the wikipedia article < 1183851168 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it means modulo the ring ideal generated by n and m < 1183851196 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: isn't that circular logic? < 1183851206 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that believing thing? :) < 1183851209 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, so i can just give up reading the article < 1183851213 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: you got me ;) < 1183851218 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1183851219 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183851221 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :back < 1183851233 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: i'll try to explain it < 1183851277 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no need < 1183851287 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i wasn't really that interested anywa < 1183851295 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in the (mod n, x^r-1) case it means that you first take the remainder of a polynomial division by x^r-1, then you mod all coefficients of the result by n < 1183851334 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so you end up with a polynomial of degree < r, with all coefficients < n < 1183851385 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can you show an example? < 1183851437 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well let's say you have x^3 + 5 (mod 3, x^2 + 1) < 1183851495 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's < 1183851534 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :first you divide x^3 + 5 by x^2 + 1, now x^3 + 5 = x*(x^2 + 1) - x + 5, so the remainder is - x + 5 < 1183851609 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and then (-1%3)x+(5%3)? < 1183851618 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :right < 1183851623 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so 2x+2 < 1183851651 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea how modulo is defined for negative numbers < 1183851675 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :by definition, a == b (mod n) means that n divides a-b. < 1183851763 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :- 2 = 1 (mod 3) <=> (-2 - 1) / 3 < 1183851766 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is not always agreement on that: Haskell has mod and rem that behave differently with negative numbers < 1183851777 0 :edwardk!unknown@unknown.invalid PART #esoteric :? < 1183851781 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err < 1183851790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(-2 - 1) / 3 E R < 1183851792 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :--- < 1183851794 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :N < 1183851795 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1183851801 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Z :) < 1183851803 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ignore me. < 1183851814 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway, got it. < 1183851819 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i know < 1183851830 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :one correction per correction is enough. < 1183851834 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :after that i give up < 1183852055 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :to be a little more precise, since there might be some choices of m and n where my approach subtly fails: < 1183852079 0 :Tritonio!n=Tritonio@150.140.227.75 JOIN :#esoteric < 1183852102 0 :Tritonio!unknown@unknown.invalid PRIVMSG #esoteric :goodday/night! < 1183852106 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :a == b (mod m, n) means that a-b = m*x + n*y, where x and y are elements of the ring (in the article case, polynomials with integer coefficients) < 1183852159 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You know, a language based on the topologies of things like http://pastebin.ca/607871 actually would be a little insane. < 1183852202 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sees no topology in that < 1183852205 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i can't see any relation between those two :P < 1183852224 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: turn it upside down, and it's still pretty much the same thing. < 1183852265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :+ is a node? < 1183852280 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :It's a crossing of two lines. < 1183852301 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: you talking about my two mod approaches? < 1183852307 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ya < 1183852324 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ihope: are there nodes? < 1183852329 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and why is it < 1183852330 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :+ < 1183852331 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :| < 1183852331 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :| < 1183852333 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :\ < 1183852337 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean the left end < 1183852341 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :There are no nodes. < 1183852347 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why isn't it < 1183852349 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :The \ is a turn. < 1183852350 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : / < 1183852351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : | < 1183852353 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : \ < 1183852381 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Because instead of a closed loop, it's... something else. < 1183852394 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the first approach reduces an expression to a simpler one (mod m, n), this is sound but if we were dealing with two polynomials rather than one number and one polynomial as in the article, then you might not necessarily reach a unique form just by doing it in sequence < 1183852395 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Nearly headless 8. < 1183852400 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :seems i don't know what topologies are :) < 1183852455 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as in, it might be possible to continue dividing by m and n alternately without immediately reaching the same result < 1183852473 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :perhaps you could even cycle, i am not quite sure < 1183852511 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i understand how you do that, but i can't really figure out what it actually means :P < 1183852622 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it is all about quotient rings. You get the ring of integers mod n by identifying every two integers that have the same remainder mod n < 1183852647 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :== whose difference divides n < 1183852676 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but then you want to do two sets of identifications simultaneously < 1183852686 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see, to some extent < 1183852715 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and the way to do that is to look at the set that identifies with 0. < 1183852724 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this set is what is called an ideal.