< 1199750403 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but yeah < 1199750492 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void ul_call(ul_obj o) { top: o->fp(); if (o->cdr) { o = o->cdr; goto top; } } < 1199750495 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :poor man's tail recursion < 1199750511 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually, i should make that pop < 1199750515 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :instead of take an arg < 1199750641 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: this should actually be pretty fast shouldn't it? < 1199750651 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh...... one problem < 1199750652 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Interesting. . . < 1199750653 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(x)a < 1199750657 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :how do i represent that with my struct? < 1199750662 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In Agora, I am Champion and Minister Without Portfolio. < 1199750663 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: indeed :) < 1199750666 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh. < 1199750667 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But, I never won the game. < 1199750669 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::| < 1199750673 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh dear < 1199750679 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i thought you meant my unlambda compilation efforts! < 1199750682 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: That, too, is quite interesting. < 1199750682 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :revisionism, i say! < 1199750690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i think i just need another entry in ul_obj < 1199750695 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_obj *inner; < 1199750699 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, pure stupidity. < 1199750723 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Champion was changed so that it was granted by the announcement of the Herald to someone who has won. < 1199750733 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Minister Without Portfolio was changed similarly later. . . < 1199750741 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But in that proposal, I was granted the patent title. < 1199750804 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the obvious solution is to now request the patent title < 1199750821 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, yes. < 1199750836 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Champion Not Created By Winning < 1199750837 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think my compiler architechture is pretty unique :P < 1199750850 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199750963 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: i don't see how your struct would deal well with (a)(b)*(c)*(d)* < 1199751033 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :assuming your (*fp)() always is first, that is still essentially a linked list, so needs linked list concatenation < 1199751088 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :* with stack=[a,b] is a->cdr = pop() < 1199751114 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1199751118 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a with stack=[x] is a push with ... wait, i need to rethink this < 1199751129 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there's no fp i could reasonably assign a run on 'x' < 1199751141 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah, < 1199751146 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not too hard: < 1199751146 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :then you have to do deep copying when duplicating things < 1199751149 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in ul_call, < 1199751155 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i just have to check for ->inner < 1199751162 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if it's there, push that. < 1199751181 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. you are doing hideously mutation there, which _will_ trip you up < 1199751237 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. how would you do :*:*:* ? < 1199751269 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :uh, by duplicating. < 1199751271 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then concatting. < 1199751283 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1199751289 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird`> * with stack=[a,b] is a->cdr = pop() < 1199751304 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually my point is, what do you do if a _already_ has a cdr? < 1199751338 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(well one point. : may still make things even worse later) < 1199751367 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: that's a good point... < 1199751375 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: So! Suggest another way. < 1199751396 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :construct a new struct, with car a and cdr b < 1199751427 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so typedef void ul_obj; < 1199751431 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(so void *) < 1199751434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and have < 1199751437 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_obj < 1199751439 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and ul_pair < 1199751447 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :with a char tag at the front 0=ul_obj 1=ul_pair < 1199751452 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and distinguish them both? < 1199751464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1199751464 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_atom < 1199751466 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and ul_pair < 1199751492 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ul_atom still has a ul_obj *inner, right? < 1199751494 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :for a < 1199751559 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course i am really thinking functionally, so i envision all the structs as immutable < 1199751565 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1199751570 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1199751574 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :car a, cdr b is immutable < 1199751583 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but ul_atom is not. < 1199751587 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :inner may change. < 1199751592 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but mostly, yeah, i just cons a lot < 1199751608 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the point is, if you don't make things immutable then : will require deep copying sometimes < 1199751641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for example, consider ::*::*::* < 1199751664 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or anything which leaves a copy of the old version on the stack < 1199751681 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm doing your way < 1199751686 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so it's ALWAYS one cons. < 1199751705 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's worth noting you should have thought of the consequences: now ul_call must be recursive. < 1199751715 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course < 1199751716 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so i have an arbitary restriction i didn't before. < 1199751726 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :remember: recursion in C barely ever works well < 1199751733 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :probably worse than the linked-list slowness. < 1199751733 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i see... hm < 1199751740 0 :Jontte!unknown@unknown.invalid QUIT :"Konversation terminated!" < 1199751764 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you can make your own execution stack < 1199751770 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: yeah right < 1199751774 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199751786 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :push the cdr there before going to the car < 1199751800 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you do know that all flow control involves lots of lots of ^ right? < 1199751808 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :normally with hundreds of appends < 1199751811 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :before my call was tail-recursive < 1199751816 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but now i'm going to have Real Big Problems < 1199751823 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :even with a stack: it < 1199751829 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hmph < 1199751829 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'s a pain and will probably run out soon < 1199751846 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: do you accept now that my linnked list was better :P < 1199751873 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i now accept that there are trade-offs < 1199751878 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :might be slower but 1. 34583475x faster than any of the interpreters out there anyway (most use O(n) concats anyway) 2. who will notice < 1199751893 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mine will at least run all ul programs perfectly < 1199751897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, that i shouldn't be considered as having the final word on anything involving C or similar low-level languages < 1199751953 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so for now i'm going to use a linked list < 1199751987 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but anyway, you should think carefully about what is immutable and what requires deep restructuring < 1199752009 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the js interp and my scheme interp do the same O(n) concats. < 1199752025 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mine is in /C/ fer gods sake, and the code itself is compiled 100%, it's gonna be blazing fast for underload < 1199752091 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm yeah < 1199752658 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok i have my whole prelude/postlude! :D < 1199752665 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :now for ul2c itself. < 1199752669 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's most of the work done, actually < 1199752702 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i defined all of the operations < 1199752704 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :as functions. < 1199752730 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: my compiler output will be weird :) < 1199752733 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there'll be a lot of: < 1199752743 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_push(ul_func_4, "...code for that..."); < 1199752746 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in say ul_func_2 < 1199752756 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and it'll come out in ul_func_1,ul_func_2,... order < 1199752772 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so you'll get a ref to the functions and the complete code of the following functions before they come :) < 1199752787 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i have sort of assumed that compiler outputs _are_ weird. < 1199752790 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if anything this proves you can probably compile unlambda ok < 1199752792 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: heh < 1199752809 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my ul2c function will be VERY imperative... < 1199752811 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless the languages compiled from/to are particularly close < 1199752825 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mostly define/sets/etc < 1199752835 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because i cba to do it another way because my compiler arch is crazy < 1199752993 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: shit, compiling literal nested ()s will be a pain :) < 1199753060 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((abc)def(ghi)) -> ul_push(ul_func_1, "abc"); ul_wrap(); ul_push(ul_func_2, "def"); ul_concat(); ul_push(ul_func_3, "ghi"); ul_wrap(); ul_concat(); < 1199753090 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :to put it another way, ((abc)def(ghi)) -> (abc)a(def)*(ghi)a* < 1199753111 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but i don't think that will have a big effect on performance. < 1199753145 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i mean, your original source code isn't used much - mostly you're doing the operations themsevles :) < 1199753274 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i don't recall, i guess you cannot declare struct constants involving function pointers? < 1199753284 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i use pointers < 1199753344 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1199753415 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean you are not actually compiling the structures themselves, you are compiling how to build them < 1199753422 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1199753432 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can't compile the structures themselves < 1199753438 0 :calamari!n=calamari@ip24-255-58-134.tc.ph.cox.net JOIN :#esoteric < 1199753445 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i suppose C does not support it < 1199753454 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it would if ul_push didn't push to a stack < 1199753458 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's just simpler this way anyway < 1199753505 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm no wait < 1199753523 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :couldn't you still do < 1199753574 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :((abc)def(ghi)) -> ul_push(ul_func_0, "(abc)def(ghi)"); < 1199753583 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1199753590 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because what if ul_func_0 wants to execute (abc) < 1199753596 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no funcptr there < 1199753641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you would define ul_func_0 as what actually executes (abc)def(ghi) < 1199753662 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no need for the ul_concats though < 1199753711 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyway with your ul_func_0 < 1199753712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can't mangle it < 1199753727 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :like if ul_func_0 did loadsa funky ~ stuff < 1199753747 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. ul_func_0 () { ul_push(ul_func_1, "abc"); ul_func_2(); ul_push(ul_func_3, "ghi"); } < 1199753761 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :more like < 1199753769 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(ignoring some stuff) < 1199753776 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_push(ul_func_1, "abc"); ul_push(ul_func_3, "ghi"); < 1199753781 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :err < 1199753782 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :1 and 2 < 1199753785 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :where both 1 and 2 are {} < 1199753787 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199753788 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but yeah < 1199753790 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :your idea is right < 1199753791 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199753830 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ul_func_2() would be something which called a,b,c in order < 1199753838 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :uh < 1199753844 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1199753848 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that would be inline, in ul_func_0 < 1199753850 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or perhaps just include those directly < 1199753854 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :right < 1199753854 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and < 1199753856 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they're NOPs < 1199753860 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so: mine is right < 1199753880 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um _if_ they're NOPs < 1199753887 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :they are < 1199753890 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i assumed they stood in for something arbitrary < 1199753890 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a b and c have no meaning in underload < 1199753892 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199753895 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :naw < 1199753896 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199753906 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh right < 1199753918 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because you still want such things for printing < 1199753928 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1199753942 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but if they had been :*: instead you would just inline that < 1199753945 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :funny thought: < 1199753947 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i could actually add a debugger to this < 1199753954 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :since i have the current program at every step of the way... < 1199753958 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, kind of < 1199753959 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199754012 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :debugger macros, that you could turn off/on with a flag < 1199754489 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :ACTION 's back < 1199754562 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if this works first time < 1199754564 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'll eat my hat < 1199754611 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Do you have a hat? < 1199754624 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :... no. < 1199754745 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you'll have to borrow one from GregorR then. < 1199754845 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Well, maybe a smaller hat < 1199754852 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :We don't want him choking. < 1199754996 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Is there a Rube interpreter somewhere? < 1199755017 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :The Cat's eye page isn't even in archives.org < 1199755037 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :(Well, except the java interpreter) < 1199755074 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: um catseye.webhop.something has been acting up, try catseye.tc i think it is < 1199755095 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Ah yes, thanks. < 1199755163 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if you can put templates in wiki urls < 1199755186 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :cpressey's webpage moves so often it could need one... :D < 1199755212 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i have errorrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs, oerjan!!!!!!!!!!!!!!!!!!!!!!!!! < 1199755222 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I use ul_func_N without predeclaring them < 1199755223 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :<333333333 C < 1199755234 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :good!!!! < 1199755246 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so gcc HAYTZ MEY < 1199755250 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as eating hats can be harmful to your health, i think < 1199755262 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Well, depends if it's an edible hat < 1199755269 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Like edible panties, but less erotic. < 1199755340 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OH YEAH < 1199755341 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :% ./out < 1199755341 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1199755402 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yay! < 1199755418 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1199755421 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(:aSS):aSS doesn't work < 1199755425 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :% ./out < 1199755425 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ERROR -- popped from empty stack < 1199755491 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :time to add debug code < 1199755575 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: can you check my primitives to see if they have obvious errors? < 1199755584 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think i have a basic logical error in one but i just cant see it < 1199755604 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :here: < 1199755609 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/XEGp7F68.html < 1199755616 0 :sebbu!unknown@unknown.invalid QUIT :Success < 1199755708 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: any ideas? < 1199755715 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ohhh < 1199755719 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_wrap doesn't actually push < 1199755720 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ouch i cannot read this < 1199755721 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199755727 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :sorry for the lack of indentation, oerjan < 1199755731 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :whew < 1199755733 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's inlined as a string in my scheme program < 1199755735 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and i was very lazy < 1199755742 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um i'm not talking about formatting < 1199755742 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's object code, anyway < 1199755743 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1199755746 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what then < 1199755750 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the low-levelness of C ;) < 1199755755 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1199755786 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i was going to suggest some tests though < 1199755801 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(test):SS for : for example < 1199755874 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :FUCK YEAH!!! < 1199755875 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :% ./out < 1199755875 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(:aSS):aSS < 1199755881 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I COMPILED FUCKING >UNDERLOAD< < 1199755924 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh dear < 1199755926 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(()(*))(~:^:S*a~^a~!~*~:(/)S^):^ does not compile < 1199755947 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Lolass < 1199755955 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its an infiniloop :D < 1199755965 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void (*ul_func_1)(); ul_push(ul_func_1, "()(*)"); void (*ul_func_2)(); ul_push(ul_func_2, "()(*)"); < 1199755967 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :etc < 1199755999 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :compile-time infinite loop? < 1199756011 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :appears so XD < 1199756026 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it gets stuck on < 1199756028 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"(~:^:S*a~^a~!~*~:(/)S^):^" < 1199756034 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and continues outputting that ()(*) < 1199756038 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :why? no effing idea < 1199756045 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1199756046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :duh < 1199756049 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i pass prog to find-matching-paren < 1199756050 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not p < 1199756075 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void ul_func_2(void) { < 1199756076 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :} < 1199756076 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void ul_func_2(void) { < 1199756076 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :void (*ul_func_1)(); < 1199756076 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_push(ul_func_1, "" < 1199756077 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :multiple 2s! < 1199756126 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh, duh < 1199756193 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :grrr < 1199756715 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :this makes me angry >:( < 1199756745 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :"You wouldn't like me when I'm angry!" < 1199757430 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1199757431 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :zsh: segmentation fault ./out < 1199757677 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: < 1199757689 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((Hello, world!))(S)*^ ; equivilent to (Hello, world!)S < 1199757690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1199757729 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :would imagine so < 1199758213 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :blaahhhh < 1199758496 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my fp is being set to NULL somewhere. < 1199758497 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :WTF. < 1199758535 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric := vs. == ? :) < 1199758546 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1199758547 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(just a guess :D) < 1199758647 0 :Slereah-!n=Test4@ANantes-252-1-14-157.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1199758659 0 :Slereah-!unknown@unknown.invalid PRIVMSG #esoteric :NEVER HAVE I BEEN MORE ANGRY OR ORANGE < 1199758673 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ohhh DUHHH < 1199758678 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :BUT ARE YOU AGGRY? < 1199758685 0 :Slereah!unknown@unknown.invalid QUIT :Nick collision from services. < 1199758690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i am so dumb. < 1199758690 0 :Slereah-!unknown@unknown.invalid NICK :Slereah < 1199758694 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i do funcptr < 1199758695 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :s < 1199758700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :BUT NEVER, EVER ASSIGN TO THEM < 1199758701 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199758705 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :retardhird! < 1199758713 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Pointers are for squares dude. < 1199759425 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my compiler output is slow or: it's broken < 1199759450 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1199759452 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the bottles of beer works < 1199759462 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ill post the source tomorrow < 1199759463 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bye guys! < 1199759473 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :CU < 1199759562 0 :ehird`!unknown@unknown.invalid NICK :ehirdsleep < 1199760442 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1199760445 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1199760802 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Hm. Wonder if I could make a RUBE-like, but based on Lemmings. < 1199761404 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :ACTION slaps Slereah around a bit with a large trout < 1199761413 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Oops. < 1199761422 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I should play some Lemmings, for further reflexion. < 1199761453 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sidles carefully away from the lambdabot possessed one < 1199761474 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or perhaps that quote is even older, hm < 1199761495 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Wut? < 1199761502 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :* Slereah slaps Slereah around a bit with a large trout < 1199761523 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Apparently, there's a button that will cause the action! < 1199761524 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :last i saw it was with lambdabot's @slap command < 1199761537 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1199761546 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Well, when used on a nick, that is. < 1199761716 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1199761727 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1199761728 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Hm. Lemmings 95 won't run. < 1199761740 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I'd better find the original CD and use it on my old laptop < 1199762214 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Ah, it's working finally. < 1199765481 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Hm. Hello world! would be something like this : http://membres.lycos.fr/bewulf/Russell/Hello%20Lemming.txt < 1199765599 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Although, the A should be on the floor. < 1199765618 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :(Incidentally, this is exactly the first level of the first Lemming game) < 1199766091 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Would I be correct in assuming that you are going to design the spec so that that is true? < 1199766463 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Well, the O is the gate that drops the little lemmings (waiting in the brackets), and the A is the exit (to the output) < 1199766527 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Although the skills for the little buggers are going to be hard to implement. < 1199766713 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I'll probably have to make some sort of command for a lemming to destroy or create a new instruction on the path. < 1199770164 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1199770874 0 :Slereah-!n=Test4@ANantes-252-1-14-157.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1199771152 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1199771490 0 :immibis!n=immibis@125-236-169-77.broadband-telecom.global-gateway.net.nz JOIN :#esoteric < 1199771770 0 :oerjan!unknown@unknown.invalid QUIT :"Cheap Freudian slips here" < 1199771822 0 :immibis!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1199775201 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1199776012 0 :Jontte!n=joonas@dsl-hkibras1-ff0ac300-216.dhcp.inet.fi JOIN :#esoteric < 1199776055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hi! < 1199776060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just popping by to say nothing < 1199776061 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1199776128 0 :Slereah-!unknown@unknown.invalid PRIVMSG #esoteric :IT'S A QUINE! :o < 1199778994 0 :tesseracter!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1199779199 0 :clog!unknown@unknown.invalid QUIT :ended < 1199779200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1199780104 0 :tesseracter!n=tesserac@pool-71-127-8-66.spfdma.east.verizon.net JOIN :#esoteric < 1199782264 0 :helios24_!unknown@unknown.invalid QUIT :Read error: 101 (Network is unreachable) < 1199782842 0 :helios24!i=helios@tomakin.quasar-net.de JOIN :#esoteric < 1199783665 0 :helios24_!i=helios@tomakin.quasar-net.de JOIN :#esoteric < 1199783718 0 :helios24!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1199784303 0 :helios24_!unknown@unknown.invalid QUIT :Remote closed the connection < 1199784526 0 :sebbu!n=sebbu@ADijon-152-1-13-32.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1199784797 0 :helios24!i=helios@tomakin.quasar-net.de JOIN :#esoteric < 1199786484 0 :Slereah-!unknown@unknown.invalid NICK :Slereah < 1199789622 0 :JontteG!n=joonas@dsl-hkibras1-ff0ac300-216.dhcp.inet.fi JOIN :#esoteric < 1199789713 0 :JontteG!unknown@unknown.invalid QUIT :Remote closed the connection < 1199798316 0 :jix!n=jix@dyndsl-091-096-036-070.ewe-ip-backbone.de JOIN :#esoteric < 1199798671 0 :puzzlet_!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1199798676 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1199805182 0 :calamari!n=calamari@ip24-255-58-134.tc.ph.cox.net JOIN :#esoteric < 1199806185 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1199806196 0 :jix!n=jix@dyndsl-091-096-050-063.ewe-ip-backbone.de JOIN :#esoteric < 1199806249 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1199806468 0 :johnl!i=johnl@johnl.org JOIN :#esoteric < 1199807925 0 :tesseracter!unknown@unknown.invalid QUIT :Remote closed the connection < 1199807973 0 :ehirdsleep!unknown@unknown.invalid NICK :ehird` < 1199808067 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523 doesn't come here any more, after proving that the world is upside down and becoming filthy rich because of it :( < 1199808071 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :SO I CAN'T ASK HIM ABOUT UNDERLOAD. < 1199808157 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok i'll just ask people who know about underload. oklopol? maybe? pikhq? < 1199808159 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :whatever. < 1199808166 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which is the most common operation: * or ^ < 1199808167 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that is: < 1199808192 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can either have ^ potentially die if you use * a few hundred thousand times before using it, and have it relatively inefficient < 1199808197 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :OR, < 1199808205 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can have * O(n) < 1199808214 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :where n = the amount of times you've used * before < 1199808225 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because it uses a linked list, so it has to follow ->cdr < 1199808228 0 :sebbu2!n=sebbu@ADijon-152-1-21-21.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1199808682 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oooh, I hsould write a malbolge compiler < 1199808683 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Y/N < 1199809128 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1199809537 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is that even possible? < 1199809803 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1199811812 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i don't think it is < 1199812166 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :unlambda terminaology question: < 1199812172 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :in `xy, what is 'x' called and what is 'y'? < 1199812178 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :applicator and applicant? < 1199813486 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: are you just using the underload compiler for compiling unlambda->underload programs? < 1199813501 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(unlambda->underload)->C < 1199813502 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: hahaha XD < 1199813512 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no haha, just a question :\ < 1199813520 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't have c etc < 1199813521 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just ski < 1199813525 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...? < 1199813526 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :!= unlambda < 1199813530 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, your compiler < 1199813541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's underload->C right < 1199813541 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://www.esolangs.org/wiki/Underload look at the translations < 1199813545 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it isn't full unlambda < 1199813551 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what... < 1199813555 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: (unlambda->underload) is missing. < 1199813556 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just answer my question :\ < 1199813562 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i did. < 1199813612 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, if you're just doing unlambda->underload programs -> C, then optimizations will be very different from if you want to compile any underload program fast. < 1199813619 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, efficiently < 1199813624 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, into efficient code < 1199813690 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't coded much underload, but i don't think the best way to use it is to do unlambda->underload, and unlambda->underload programs converted using the instructions on the page probably are slower than programs written in 100% underload < 1199813728 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :.... < 1199813732 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what are you talking about. < 1199813765 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"which is the most common operation: * or ^" < 1199813867 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in case you aren't using your compiler for underload programs as such, but instead translating unlambda to underload to be able to compile unlambda to C < 1199813872 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that changes the answer. < 1199813887 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm compiling underload to C. < 1199813890 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :very simple. < 1199813920 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I can either make * very fast and ^ not guaranteed to always work if the program does an awful, awful lot, or i can make * very slow and ^ guaranteed to work < 1199814004 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so unlambda wasn't involved at all? < 1199814014 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i thought underload was just an intermediary step. < 1199814044 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway, i'd say just use a tree structure and have both ^ and * be fast < 1199814122 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :unl->c and ul->c are two entirely different programs < 1199814131 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul->c, underload->c, is the only non-vaporware one right now < 1199814143 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and, oklopol, that's the first option. but ^ then must be recursive. < 1199814154 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and recursion in C = lawl, thus what i say about it in my first option < 1199814210 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... why would ^ die? < 1199814213 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh, recursion < 1199814222 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't see why you'd need to use recursion. < 1199814237 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you mean when flattening the tree? < 1199814521 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :um, because < 1199814529 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if you have a cons-pair of the tree < 1199814534 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :where both the car and cdr were once cons'd < 1199814539 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then you have to recurse to call them both. < 1199814639 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: and in C, recursion is very shaky < 1199814642 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :vey very very shaky < 1199814687 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea what you mean by shake, and i don't see why you'd need recursion. < 1199814725 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i do know that's easiest to do via recursion, but it's not hard without it... < 1199814792 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if i don't have recursion, then i need to manually keep a stack < 1199814796 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which is inefficient < 1199814802 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :also, by shaky, i mean recursion in C /is a bad idea/ < 1199814806 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you never know when it might fuck up < 1199815013 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: question - does your filesystem support > in filenames < 1199815054 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't see why it might fuck up, but... err... i guess it does? < 1199815065 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's "my filesystem"? < 1199815129 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm, so basically what you are saying is you don't wanna use a tree-structure for efficiency because a tree-structure cannot be traversed efficiently? < 1199815149 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and yes < 1199815156 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but if ^ wasn't nearly as common as *, then ... < 1199815164 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :also, if i recurse in C then the call stack will run out *QUICKLY* < 1199815169 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's bizzare, really < 1199815175 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which is why most people avoid recursion in c < 1199815186 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :really? in my experience you can recurse as much as you like < 1199815247 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1199815255 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pff < 1199815260 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :try writing a recursive factorial in C < 1199815263 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then do fact(1000) < 1199815268 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :watch as you segfault < 1199815270 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, not 1000... < 1199815279 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but you'll never get a tree that high < 1199815293 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh yes i will < 1199815299 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :all unlambda programs cons like crazy < 1199815338 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :OK, tell me more about these programs doing over 10^300 catenations :-) < 1199815360 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(assuming perfect balancing, which of course isn't realistic.) < 1199815395 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :height grows logarithmically, recursiong depth will *not* be a problem, ever. < 1199815401 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION prepares to eat a hat. < 1199815423 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you bet: < 1199815425 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Underload < 1199815429 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(()(*))(~:^:S*a~^a~!~*~:(/)S^):^ < 1199815433 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that one does infinite conses. < 1199815478 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199815485 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess you pwned me bad < 1199815492 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yes i did < 1199815515 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :technicality hats are the best ones < 1199815519 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes a bite < 1199815650 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mmmmmmm < 1199815738 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: do you think i should have my fancy error messages? < 1199815741 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that tell you what went wrong < 1199815749 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i could remove all error checking and get super-fast-pwnage programs < 1199815795 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :error checking is for kids and women! < 1199815824 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you could perhaps have both, and like a #define to switch it on/off < 1199815831 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in case #define is still cool. < 1199815844 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'd make it a compile-time option < 1199815856 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :time to rewrite my compiler, I think < 1199815881 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :HEY, that isn't incremental coding!! < 1199815890 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199815905 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION kills the heathen < 1199815972 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my compiler arch is a bit broken < 1199816009 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the problem is: inside a compile, we may need to save some code for later compilation and have the function generated match a name that we can get at the first compile < 1199816012 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but they also may depend on others... < 1199816022 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right now, it's written in an imperative, global-using type of scheme. :-) < 1199816170 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: and i'm not sure what else i should do < 1199816323 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, currently you are more or less have a c interpreter for underload, and you are just injecting the code < 1199816329 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: no < 1199816332 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no i'm not < 1199816332 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1199816334 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you are totally wrong < 1199816336 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1199816351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :int main(void) { < 1199816351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ul_push(ul_func_0, "(:aSS):aSS"); < 1199816351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ul_call(); < 1199816351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :printf("\n"); < 1199816351 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :return 0; < 1199816352 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :} < 1199816358 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :aha, but < 1199816361 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_func_0 < 1199816362 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmmmm < 1199816365 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah! < 1199816366 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :has that compiled < 1199816369 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :look < 1199816373 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sorry, i didn't look carefully enough. < 1199816382 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty clever :-) < 1199816383 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(just looked at main.) < 1199816385 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's an old version of the output though < 1199816398 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but yeah i most certainly do compile < 1199816423 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: the thing is ul_func_0 may suddenly need to make a ul_func_1 < 1199816427 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i have an easy solution to this problem: < 1199816430 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pre-parse the code < 1199816497 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you indeed do compile it. < 1199816501 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :quite nice < 1199816504 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yes, yes i do < 1199816504 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199816514 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul_concat is perhaps a little bit cheating, but not really < 1199816530 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i still take all the instructions and compile them down to c code that performs those operations natively < 1199816849 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1199816875 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my architechture is fucked :P < 1199817009 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, to do * properly, you'd basically need to be able to make machine code at runtime. < 1199817053 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :exactly :) < 1199817057 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so i think mine is a nice trade-off < 1199817060 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ooh, wait < 1199817065 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i can make an O(1) *! < 1199817070 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just add a pointer to 'end' < 1199817072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :duuuuuuuh :) < 1199817109 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: now my compiler is truly awesome < 1199817118 0 :pikhq!n=pikhq@209.248.124.243 JOIN :#esoteric < 1199817268 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: MY COMPILER CAN HAVE O(1) *. < 1199817275 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AS WELL AS TAIL-RECURSIVE ^. < 1199817284 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric := best underload implementation yet < 1199817289 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not a bad idea < 1199817294 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the JS one is O(n) *, iirc < 1199817301 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :dunno, but whatever < 1199817304 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's compiled, too, so yay < 1199817358 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :now i just have to make the code functional. < 1199817359 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199817364 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :functional = non-imperative fubnctional < 1199818188 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :an underload parser parsing to a list is actually pretty non-trivial < 1199818190 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the idea is simple: < 1199818201 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((abc)def)ghi -> < 1199818219 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((1 ghi) (2 def) (abc)) < 1199818224 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :abc(def)ghi -> < 1199818233 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((abc 1 ghi) (def)) < 1199818380 0 :ais523!n=ais523@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1199818391 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I saw you were discussing Underload from the logs. How could I not join? < 1199818446 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : ais523 doesn't come here any more, after proving that the world is upside down and becoming filthy rich because of it :( < 1199818467 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't come here any more, due to being busy from the fallout... < 1199818477 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hahahaha < 1199818482 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I wrote an underload compiler! < 1199818484 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :It compiles to C. < 1199818495 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :And it runs all underload programs, and doesn't embed an interpreter. < 1199818504 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I'm now rewriting it so it isn't such a mess of hideous code! < 1199818505 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Impressive. I just finished posting my bf (without input) to Underload compiler < 1199818514 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199818539 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/847012 < 1199818570 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION continues to read the logs < 1199818662 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the main thing is that nested parens have to be unrolled < 1199818669 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :((abc)def)ghi -> three functions < 1199818679 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :with the 'ghi' containing a push of the (abc)def < 1199818683 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(abc)def pushing (abc) < 1199818690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and that's ugly in my current compiler < 1199818696 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm writing a parser that does most of that for me, so. < 1199818698 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to answer your question about ^ and *, * is more common, but ^ absolutely has to be tail-recursive so that infinite loops are possible < 1199818700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(it's written in Scheme) < 1199818716 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yep, i KO'd oklopol with that beforehand < 1199818722 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and i found a way to make * fast < 1199818726 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just keep a ptr to 'end' < 1199818741 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i know, ridiculously simple, why didn't i think of it before < 1199818771 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :How do you deal with memory allocation? < 1199818786 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably by reallocing the original string if it's too small before copying onto it? < 1199818792 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :KO'd me? < 1199818794 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1199818813 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and doesn't that leave * as O(n) anyway due to the need to copy each byte of the string that's being copied over < 1199818819 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or are you representing strings as linked lists? < 1199818892 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ul_print handles that < 1199818916 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :are you just referring to bits of the code I can't see or is the source online somewhere? < 1199818934 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yes, i am < 1199818953 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it cats them and wraps in parens at print-time < 1199818971 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so are you using linked lists as strings? < 1199818986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wrote an interpreter for some language that did that at one point. Can't remember which language, though < 1199819004 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no... < 1199819021 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :when you concat it appends to the linked list < 1199819024 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :an object is a linked list. < 1199819032 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :each has a 'str' which is as big as possible at compile time < 1199819035 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :print prints these out sequentially < 1199819041 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :linked list of strings is the best of both worlds, I suppose < 1199819121 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Underload really needs proper I/O extensions, I reckon, so that it's actually possible to do things like self-interpreters and to make it BF-complete < 1199819130 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no no no ais523!!! < 1199819132 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if you can do input then ^ < 1199819135 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then my compiler can't work < 1199819139 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1199819155 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it relies on having all the code that can ever possibly be reached at compile-time < 1199819162 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's why it's so efficient < 1199819176 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you're inputting as Church numerals, then all you need is zero and Church-increment < 1199819177 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if you can do input but that makes it un-^able though i guess that's ok :P < 1199819191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which are (!()) and (:)~*(*)* < 1199819198 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"if you can do input but that makes it un-^able though i guess that's ok :P" < 1199819200 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :see that < 1199819205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I saw that < 1199819214 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but how else could you determine what it was? < 1199819233 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :??? < 1199819236 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, if input is church numerals, then its behaviour on ^ing is defined; it just repeats the TOS the correct number of times < 1199819243 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :on input: < 1199819245 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's sort of the definition of Church numerals < 1199819247 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :.evalable=false; < 1199819252 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then ^ on it -> BLEEEEP < 1199819272 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what operations would be available on it other than cat, then? < 1199819292 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :none? < 1199819293 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's enough. < 1199819297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem with Underload is that everything has to be evaluated to be able to tell what it actually is... < 1199819301 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i think... < 1199819303 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1199819307 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then ... no input < 1199819310 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :please! :-) < 1199819315 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's no point allowing input to a program if all you could do is output it again < 1199819318 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1199819320 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :do you mean like: < 1199819322 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'abc' < 1199819324 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is < 1199819327 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :church numeral for ascii of a < 1199819328 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :thenb < 1199819330 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then c? < 1199819331 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's it < 1199819337 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if so, that's good, i can do that without having an interpreter < 1199819346 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's what I'd just realised < 1199819355 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :But. Yeah. I want my new compiler done first :| < 1199819356 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199819358 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you can just have a church-numeral function in the code < 1199819360 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :goddamn parser < 1199819381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's fine, any input extension would probably be a new language < 1199819392 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because it would spoil the beautiful tarpitness < 1199819487 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523! write my parser for me < 1199819503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd better get clear on the spec first, then < 1199819515 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you just know I'll write it in some completely unacceptable language < 1199819518 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i understand the spec fine < 1199819519 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199819525 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1199819525 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I don't... < 1199819527 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1199819529 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Write it in scheme! < 1199819532 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because my compiler's in scheme! :P < 1199819533 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1199819539 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :naw i'm sure i can figure it out ;) < 1199819541 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure if I have a scheme interpreter just here < 1199819555 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe I should write it in elisp, that shouldn't be too hard to translate from... < 1199819600 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :now, as for implementing the rest of the Unlambda operations in Underload... < 1199819601 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :aieee :D < 1199819609 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hahaha < 1199819611 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :`cx < 1199819619 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :-> simple translations,say bye bye < 1199819623 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has forgotten what x does < 1199819655 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but as for c, all you need to write is something that can save and restore the current stack < 1199819657 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :er, it doesn't < 1199819662 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i meant `cPLACEHOLDER < 1199819665 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and yeah < 1199819695 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so if you have some way to recognise the bottom of the stack, say by inserting a dummy entry between every stack entry, it shouldn't be too hard < 1199819709 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: re: scheme interpreter, I reccomend Chicken Scheme < 1199819714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :d may be harder, though, as I find it a bit hard to get my head round < 1199819715 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, it's a compiler. But it includes an interpreter. < 1199819728 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://www.call-with-current-continuation.org/ There are windows binaries, too. < 1199819732 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is currently using a computer on which they can't install software < 1199819738 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :aww < 1199819742 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why else do you think I'd be using this aeons-old IRC client? < 1199819742 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ooh, that inspires me < 1199819747 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I should write a scheme in javascript < 1199819787 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but first. < 1199819792 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :make this damn parser < 1199819834 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :d is actually very hard to translate into reverse-Polish < 1199819847 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you have to know the second argument to ` before determining whether to evaluate the first one... < 1199819868 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/`/^/ < 1199819873 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: parse unlambda program, THEN do conversion < 1199819886 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ignore everything I just said, I was confused < 1199819903 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what you have to do is not to do evaluation while there's a d on top of the stack < 1199819903 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199819996 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not just on top of the stack, what you have to do is not to do evaluating while there's a d anywhere in the stack < 1199820026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but a `promise' is fine to have in the stack, and evaluating it should lazily evaluate the original code < 1199820137 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :of course, v is easy, it's ((a(:^)*):^) < 1199820163 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, that needs a pop... (!(a(:^)*):^) < 1199820202 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ul (is this still working?)S < 1199820207 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1199820226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, EgoBot isn't here < 1199820396 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199820440 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is trying to figure out what happens when a construct like ```kdi`.xi is run through an Unlambda interpreter < 1199820463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the ``kdi translates to d, thus preventing the `.xi being run < 1199820696 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, when there's a d anywhere in the stack, ~^ should instead do *(~^)*a rather than what it normally does, to preserve the semantics of d < 1199820702 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and d itself should be a no-op < 1199820717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :correction: when there's a d anywhere in the stack below the top element < 1199821070 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Maybe I should pre-parse some programs first. < 1199821126 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is to change subnodes into pointers, by the look of it < 1199821142 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that would likely be pretty easy with a parser-generator like yacc < 1199821237 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :parser-generators are for wimps < 1199821286 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yacc for... scheme. < 1199821288 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i seeeeeeeeeeeeeeeeeeeeeeee. < 1199821301 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's probably some version knocking around somewhere < 1199821304 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hey, fun idea < 1199821307 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeewd < 1199821311 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so fun it must exist < 1199821328 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no thanks ais523 < 1199821329 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199821707 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i should write a scheme->underload < 1199821722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :possibly easier than unlambda->underload, I suppose... < 1199821737 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and easier still than scheme->malbolge < 1199822122 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean full scheme < 1199822125 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :100% R5RS scheme. < 1199822126 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199822129 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well, sans IO < 1199822135 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably harder, in that case < 1199822141 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that includes dynamic-wind < 1199822143 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :dynamic-effing-wind < 1199822489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION had better go < 1199822493 0 :ais523!unknown@unknown.invalid QUIT : < 1199822550 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :dmanit < 1199822569 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199823856 0 :timotiis_!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1199824094 0 :bsmntbombdood_!unknown@unknown.invalid NICK :bsmntbombdood < 1199824736 0 :timotiis!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1199824977 0 :Jontte!unknown@unknown.invalid QUIT :Remote closed the connection < 1199826075 0 :Hiato!n=Hiato@dsl-245-0-48.telkomadsl.co.za JOIN :#esoteric < 1199826081 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :Gues who's back :P < 1199826089 0 :tejeez!unknown@unknown.invalid PRIVMSG #esoteric :you < 1199826097 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :how'd you know ;) < 1199826216 0 :tejeez!unknown@unknown.invalid PRIVMSG #esoteric :i've got a crystall ball that tells me everything! < 1199826242 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :can it solve the halting problem, I've got some code here... :P < 1199826261 0 :tejeez!unknown@unknown.invalid PRIVMSG #esoteric :at least some very obvious things.. well.. it actually doesn't work with buggy code very well :( < 1199826284 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :gee, thanks ;) < 1199826356 0 :timotiis_!unknown@unknown.invalid NICK :timotiis < 1199826518 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if GregorR is even still alive.... < 1199826676 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i bet he's been playing hydra for 2 weeks straight and is soon the world champuon < 1199826679 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :champion < 1199826693 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :what's Hydra? < 1199826706 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :depends < 1199826713 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :when did you first join this channel? < 1199826721 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :isn't it the IRC thingy < 1199826725 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :hrmm < 1199826733 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :november ish < 1199826734 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1199826736 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :GregorR's card game < 1199826740 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :oh, I see < 1199826755 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i don't like telling people things they *should've* read from the logs! < 1199826756 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :it is also an IRC client (or was) < 1199826760 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1199826763 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1199826781 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not fair just me and oerjan waste our time doing that :) < 1199826801 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or then oerjan just checks for highlights. < 1199826819 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :haha, no don't worry, I bothered reading yesterday and the day beofre's logs (kinda) beofre I came ;) < 1199826857 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i kinda wish i was less addicted to irc < 1199826885 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :heh, join the club, or should I say IRC channel :P < 1199826927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION joins #club < 1199826941 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :roflol :D < 1199827139 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :I wish I could use Ogre3D ... :( < 1199827432 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i joined here sometime in 2006 < 1199827441 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nov 06? < 1199827443 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :sounds about right < 1199827455 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wow, have i really been here a year? < 1199827460 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that can't be right... < 1199827554 0 :GreaseMonkey!n=saru@219-89-58-122.dialup.xtra.co.nz JOIN :#esoteric < 1199827593 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :http://it.youtube.com/watch?v=Jd3-eiid-Uw < 1199827604 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :this guy is a genius :D :D :D < 1199827618 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :can't wait till games turn like this :D < 1199827852 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :watch it, please < 1199827856 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :so that you also go wow < 1199827858 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1199827871 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :don't know why it's italian < 1199827877 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :but hey, who cares :D < 1199827886 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :(PS: It's in english) < 1199827956 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Hiato: that's actually not that hard to do < 1199827982 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :Awesome, but anyway, it is COOL to do ;) < 1199827998 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :can't wait until Crytek incorporates this ) or valve or whoever :P < 1199828006 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if you have a way to do 3d graphics, you will have a virtual camera direction vector and position anyway < 1199828028 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so you basically just have to set the virtual cam to move as the real cam moves < 1199828032 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :yes, but the idea of tracking a players head makes it that much more interesting < 1199828042 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :yes, I understand how it works < 1199828051 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :I would just like to see it in commercial games < 1199828055 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :that's all ;) < 1199828069 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it's awesome < 1199828088 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wouldn't like seeing it in commercial games, since it'd just suck like every other game. < 1199828107 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'd like to see it in a game i've made myself < 1199828111 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :say waa? I like my games :) < 1199828114 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :Yeah < 1199828115 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :have i mentioned my games are awesome < 1199828132 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :that would be nice, but the camera code in Irrlicht is so screwy, It would never work... < 1199828137 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :oh, really.. < 1199828139 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1199828150 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :My game is pretty much grouned < 1199828167 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :shuuure < 1199828172 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :until I re-write the camera object, which will probably never happen... < 1199828237 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you do games? < 1199828273 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :Yes, I do. Making 2D ones in delphi, I have done a lot. But 3D ones, with Irrlicht < 1199828277 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :is very difficult < 1199828283 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :because my C group sucks < 1199828295 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :and I also don't like the C group of languages < 1199828300 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :in terms of playing < 1199828308 0 :Hiato!unknown@unknown.invalid PRIVMSG #esoteric :I'm a serious gamer :D < 1199829404 0 :Hiato!unknown@unknown.invalid PART #esoteric :? < 1199830345 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1199833360 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :stack-based lambda calculus: < 1199833372 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(:`)(:`)` < 1199833408 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :0 = (<) < 1199833434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :1 = ((`)) < 1199833525 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: Nice. < 1199833607 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1199833610 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :with currying, it's hard < 1199833623 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :essentially the stack becomes useless. < 1199833682 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: since you're alive: < 1199833688 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :can you name a few languages that people haven't compiled yet? < 1199833708 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :e.g. when i compiled underload, most people would give it a cursory glance and say that a compiler would be impossible < 1199833710 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because of ^ and * and a < 1199833718 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i want something like that so i can prove them wrong :D < 1199833798 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Dimensifuck. < 1199833983 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :link < 1199834069 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ooh i know what i should do < 1199834075 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :write a Brainhype interpreter in Scheme-omega! < 1199834143 0 :timotiis!unknown@unknown.invalid QUIT :"leaving" < 1199834579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Dimensifuck= < 1199834594 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1199834597 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you made it < 1199834598 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199834621 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm pikhq that makes no sense < 1199834621 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1199834799 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199835486 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there should be an esolang X which has a 'wimpmode' X-1. X reads a program, constructs a number from how 'line-noise/random-typing' the program looks, then uses that as a godel number for an X-1 program, which is then run. < 1199835569 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I like. < 1199835627 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199835628 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Comment, alive person! < 1199835647 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Um, that's fuckin' *evil*? < 1199835649 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Good, go write a spec. < 1199835668 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Yes, I know it's evil that I'm making you do my labours. < 1199835679 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :But I didn't ask for your opinion, spec-writing slave! < 1199835744 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I am writing a Glass->C compiler. < 1199835756 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Now Glass can run faster than ever! < 1199835774 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Try a Glass->C++ compiler. Might be easier. < 1199835910 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: But even better, of course, since it optimizes away the base classes. < 1199835910 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Think it'd be worth writing it in Glass? Might be a bit painful :P < 1199835943 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Glass is actually not that painful. < 1199835953 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's *remarkably* terse, but fairly feature-filled. < 1199835973 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :C++ is evil < 1199835980 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :C is far cooler to compile to, also :D < 1199835988 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I guess, but for the parser... < 1199836027 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Are there any glass programs apart from beer/bf/fibonacci/hello_world/rand? < 1199836044 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ask Gregor. < 1199836054 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: Ask. < 1199836075 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :There is an upside to writing the compiler in glass: metacircularness < 1199836166 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Even so, parsing Glass isn't like your typical trivial esolang... < 1199836182 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Plus I'd have to write parsetree objects.. < 1199836227 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: OK, you decide for me. :P Should I write the compiler in Glass or something else? < 1199836250 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The term is "self-hosting". < 1199836307 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Glass. < 1199836332 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Actually I object to the term 'self-hosting' < 1199836340 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it implies that you 'stack up' compilers < 1199836342 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :whereas it's more like tail recursion. < 1199836350 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Then you object to computer science. < 1199836351 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Got a glass-mode.el? :P < 1199836355 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Nope. < 1199836360 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you have one, please let me know. < 1199836364 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1199836384 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hell, a plof-mode.el would be damned spiffy. < 1199836387 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Yeah, so maybe I do. < 1199836402 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Oh, I still have to write Calculus/pebble.bfm don't I? < 1199836419 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If you're insane, yes. < 1199836425 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(you sure may. ;)) < 1199836454 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: When I write pebble.bfm, should I write the C backend or the BF backend first? < 1199836487 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Either one; your choice. < 1199836497 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Although the BF backend is certainly amusing. < 1199836509 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :'amusing'? More like 'the main use' < 1199836518 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :True, true. < 1199836524 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :You can see it seeping through every part of PEBBLE, from the tempvars to everything else < 1199836543 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The C backend is basically just a really fancy Brainfuck optimiser. ;) < 1199836637 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1199836645 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you can use PFUCK for that if you desire < 1199836652 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :actually I might make an ultra-PFUCK sometime < 1199836667 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that has many backends (i guess: C, machine code, and for laughs PEBBLE) and optimizes to hell :P < 1199836678 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just for the novelty of having it be brainfuck < 1199836692 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and also for compiling itself to brainfuck, then uncompiling that to PEBBLE with itself < 1199836693 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1199836786 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Oh by the way, pikhq, does the reference Glass interpreter gc?