< 1207180952 0 :ais523|busy!unknown@unknown.invalid QUIT :"(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"" < 1207183184 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :PLEASE ABSTAIN FROM INTERCAL SIGS! < 1207183193 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it burns! < 1207186062 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1207186205 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: No it doesn't. < 1207186225 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, unless you mean in the sense that sufficient levels of radiation burn. < 1207186246 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :"burn" is used somewhat figuratively < 1207186269 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1207186598 0 :boily!n=boily@bas2-quebec14-1167941152.dsl.bell.ca JOIN :#esoteric < 1207186630 0 :boily!unknown@unknown.invalid QUIT :Client Quit < 1207187395 0 :wildhalcyon!n=chatzill@c-69-243-94-185.hsd1.md.comcast.net JOIN :#esoteric < 1207187590 0 :wildhalcyon!unknown@unknown.invalid PRIVMSG #esoteric :Why is our topic in arabic? < 1207187840 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Because someone insisted upon it. < 1207187850 0 :pikhq!unknown@unknown.invalid TOPIC #esoteric :It's all Arabic to me! < 1207187919 0 :wildhalcyon!unknown@unknown.invalid PRIVMSG #esoteric :Well, that works < 1207188350 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is astounded < 1207188371 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :One of the guys in the Fantasy Rules Comission had a metalogic class. . . Taught by Suber. < 1207188413 0 :ehird_!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1207188413 0 :ehird!unknown@unknown.invalid QUIT : < 1207189566 0 :Tritonio_!unknown@unknown.invalid QUIT :Remote closed the connection < 1207189619 0 :Tritonio_!n=Tritonio@150.140.229.252 JOIN :#esoteric < 1207192439 0 :wildhalcyon!unknown@unknown.invalid PART #esoteric :? < 1207192600 0 :calamari!n=calamari@ip24-255-58-177.tc.ph.cox.net JOIN :#esoteric < 1207192978 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I've come to the conclusion that all of the opcodes in JSMIPS are implemented correctly to the best of my ability, and so the problem with malloc() is in another part of the design. < 1207193085 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :However, I'm still loathe to suspect that the error is in newlib's implementation of malloc. That seems extremely unlikely. < 1207193671 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Newlib's malloc, last I checked, was a fairly simple and bog-standard algorithm. . . And a fairly reliable one at that. < 1207193720 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I haven't a clue why this doesn't work D-8 < 1207193742 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I'm in an infinite loop of (basically) while ((a & b) == 0) { a <<= 1; } < 1207193766 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Shockingly, that doesn't accomplish much. < 1207193939 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I suspect that a is either 0x00 or 0xFF. < 1207193969 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Or malloc is *really* fucked up. :p < 1207194000 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Both a and b are 0x00 < 1207194005 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hence the infinite loop. < 1207194027 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to publish the latest state of things. < 1207194385 0 :CakeProphet!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1207194458 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1207194610 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1207194646 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :http://www.codu.org/jsmips/ < 1207194663 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I have it switching into debug mode when _malloc_r is called and then dying in 100 ops. < 1207194675 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :You can see it go into the loop, but everything is right except for the actual functionality. < 1207194838 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Uh, test.html is a test program, in case you couldn't guess :P < 1207194915 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...what exactly is the output supposed to mean < 1207194934 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It's the pre- and post- of every operation after it goes into _malloc_r. < 1207194973 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and the address of every operation :P < 1207194984 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :more importantly... wtf does this program do. I kind of arrived late I suppose. < 1207195002 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :http://www.codu.org/jsmips/test.c < 1207195007 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :^ that, in theory < 1207195134 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, it's that, compiled. < 1207195151 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :In fact, if you watch carefully, the first thing it outputs is the result of that syscall - but that's before it goes into debug mode. < 1207195187 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...something in assembly? < 1207195419 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I made a syscall that just outputs its argument in hex - I was testing strlen, which worked fine. < 1207196018 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION makes a syscall that forks the processor. < 1207196028 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I think I'll call that syscall 'infinity'. < 1207196088 0 :CakeProphet!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1207196162 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1207196173 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :How 'bout you figure out why malloc doesn't work for me! :P < 1207196245 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I uploaded the binutils/gcc/newlib patches too. < 1207197494 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Bye all < 1207197547 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Is there something geeky about going to the prom with an SCA member? < 1207197547 0 :shinkuzin!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1207197611 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1207199308 0 :sebbu2!n=sebbu@ADijon-152-1-18-90.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1207199583 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hey everyone, I reorganized my code page! http://rodger.nonlogic.org/code.php < 1207199617 0 :EgoBot!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1207199646 0 :EgoBot!n=EgoBot@71.237.179.105 JOIN :#esoteric < 1207199971 0 :GreaseMonkey!n=saru@219-89-58-116.dialup.xtra.co.nz JOIN :#esoteric < 1207199993 0 :EgoBot!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1207200041 0 :EgoBot!n=EgoBot@71.237.179.105 JOIN :#esoteric < 1207200338 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :there are neat things there, honest! < 1207200389 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1207200390 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1207200814 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sees firmware for a fembot.  < 1207200817 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Liar. < 1207200817 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1207200829 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1207200872 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :closest thing I ever did to that was the abandoned "botlogic" project: http://rodger.nonlogic.org/botlogic/ < 1207200910 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You going to get more people in on The Abyss? < 1207200911 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :>:D < 1207200924 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that would be fun, to be certain < 1207200934 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still proud of being the first person to finish the last puzzle without a hint < 1207200943 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :as well you should be < 1207200966 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hell, if there's enough interest I might spend some time putting together another level for the Abyss. < 1207200970 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :w00ts. < 1207202159 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ARGH < 1207202161 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION smashes something. < 1207202174 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :malloc fails before even getting to sbrk() 8-O < 1207202193 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :8-O < 1207202199 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Try mmap? :p < 1207202211 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: check out the new area on my site! http://rodger.nonlogic.org/code < 1207202216 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(yeah, I know, I know: sbrk() is much easier. . .) < 1207202224 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I mean http://rodger.nonlogic.org/code.php < 1207202611 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: did you appreciate the fact that the "screenshot" for Abyss highlights the most devious puzzle in the entire game? < 1207203032 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That I did. :) < 1207204467 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Grrf < 1207204479 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: ? < 1207204484 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :You people are shockingly useless, do you know that? < 1207204500 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :"malloc fails in my implementation I'm trying to make work properly." "Use mmap!" < 1207204502 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :*slap* < 1207204505 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :sorry, I don't think I'd be of much assistance debugging your malloc routine < 1207204515 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I was referring to pikhq :P < 1207204538 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: I was *kidding*. < 1207204544 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :YOUR MOM < 1207204550 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :WAS KIDDING < 1207204557 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :So anyway, I made malloc "work" by disabling -O2 (:( ) < 1207204564 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :First you start with mmap, then you take the leap into memory space randomization. < 1207204570 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :But printf still doesn't work (not a clue why) < 1207204580 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And soon, you're running OpenBSD. < 1207204589 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :lol - but in your web browser :P < 1207204621 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Touche. < 1207204726 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, if we are to believe the "blogosphere", "web 2.0" heralded the evolution of a web-browser from a program to a huge, bloated program referred to as a "platform". < 1207204744 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's about damn time it started ACTING like a proper platform and running BSD. < 1207204839 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's about damn time it started *ACTING* like a proper platform and support multitasking. < 1207204846 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(tabs and windows don't count.) < 1207204886 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :good night everyone < 1207204889 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I WANT VIM IN MY BROWSER DAMN IT < 1207204900 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1207204907 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :(If somebody who isn't me could write a vt100 simulator in JS, that'd rool) < 1207204913 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I want more than just that. < 1207204930 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I WANT MY BROWSER TO HAVE A SANE LANGUAGE IN IT. < 1207204937 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :HTML? Not sane. < 1207204949 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://pikhq.nonlogic.org/test.html Does that *look* sane to you? < 1207204967 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(view source; most browsers can't handle the features of HTML used there) < 1207205081 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :JavaScript has a nice design, but a poor design. < 1207205154 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, SOME instruction is horribly wrong, as fflush is jumping off into the ether >_> < 1207205617 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh, I love the W3 validator's response for that page. < 1207205631 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Basically: "Well, yeah, it's correct, I guess, but you really shouldn't be doing this ..." < 1207205752 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah; ain't it wonderful? < 1207205887 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :With luck, HTML5 will be a lot cleaner < 1207205895 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Funny. < 1207205910 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: not feeling lucky? :-) < 1207205910 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :In the same way that Perl6 should be cleaner than Perl5 (haw haw haw) < 1207205922 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And the same way that C++ should be cleaner than C. < 1207205943 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Here's how to make HTML5 cleaner. < 1207205949 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Step 1: NEW SYNTAX. < 1207205956 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Break backwards compatibility. < 1207205968 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Step 2: Get someone with some sanity on the project. < 1207205977 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :already exists, it's called JSON/YAML/sexps/whathaveyou. < 1207205985 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :sexps would be ideal. < 1207205996 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :SEXPEES < 1207206775 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1207207585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sexps? < 1207207591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :S-Expressions? < 1207207606 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ^ < 1207207894 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: almost certainly < 1207207904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :k < 1207209599 0 :clog!unknown@unknown.invalid QUIT :ended < 1207209600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1207210972 0 :Iskr!n=i@host58-18-dynamic.56-82-r.retail.telecomitalia.it JOIN :#esoteric < 1207212407 0 :ais523!n=ais523@147.188.254.202 JOIN :#esoteric < 1207212576 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1207213276 0 :oklopol!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1207213296 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh shit < 1207213346 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was just idly coding at the uni... and a religious freak started talking loudly in his cell phone about how merciful god can be < 1207213369 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :also every 5 seconds mirc tells me i cannot connect < 1207213377 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in a pop-up window < 1207213381 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :life can be so cruel. < 1207213435 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"david lived a year in sin before god killed him" < 1207213484 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wonder if it would be too impolite if i told this guy he's ruining my day < 1207214836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, FIXP's N is mostly useless isn't it? you could do the same by 0\- I think? < 1207215257 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: well, it manages it in one character < 1207215280 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :many other fingerprints, such as ROMA, are trivial to expand the individual instructions into multi-character code < 1207215282 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but you got to load the fingerprint first < 1207215296 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, but only once < 1207215302 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then you can use N as much as you like < 1207215308 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, not if you want to load some other that also define N < 1207215312 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(unless you load another fingerprint that defines N) < 1207215341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, or if you unload another fingerprint defining N ;P < 1207215353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, yes... < 1207216069 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"/me is creating a telnet version of mafia - stay tuned" < 1207216545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I'm adding FIXP fingerprint < 1207216556 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which one's that? < 1207216586 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :rcfunge one, some fixed point math stuff < 1207216611 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION was using fixed point a while ago in some DSP programming < 1207216622 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's the one with the assembly language opcode with about 6 parameters < 1207216638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I looked at how ccbi does it, and it just cast to floating point and then rounds < 1207216640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the assembly language also implemented Fortran's DO instruction < 1207216644 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so *shrug* did the same there < 1207216656 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the one where you specify the line label of the end of the loop < 1207216660 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's very COME FROM-like < 1207216676 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I got no clue how do do cos without using the cos from libm < 1207216681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I just cast and round < 1207216699 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I implemented cos in MediaWiki once < 1207216704 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh? < 1207216710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean? in php? < 1207216717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no < 1207216720 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in MediaWiki markup < 1207216724 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um wtf < 1207216726 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Special:Search?go=Go&search=User:ais523/Sandbox/cos < 1207216727 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is it turing complete?! < 1207216731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no < 1207216736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you can't write an infinite loop < 1207216751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so what computational class? < 1207216754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you remove the arbitrary anti-loop restriction, or allow loops to be restarted by hand, then it's TC < 1207216773 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, you can write a finite loop of almost any size with enough repetition < 1207216799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh you are an admin on wikipedia? < 1207216802 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes < 1207216813 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as for computational class, it's below FSM because it can't infinite-loop < 1207216827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm < 1207216849 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(clearly, infinitely looping wikimarkup would be a nightmare for the servers, which is why it isn't allowed) < 1207216856 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, your user page is.... fancy.... < 1207216895 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the clock was one of my first serious markup projects < 1207216922 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, BTW, the cos function is only accurate in about the range -pi to pi, because I used the Taylor series, but you can correct that with mod easily enough < 1207216924 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so mediawiki will let you draw images? < 1207216933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's not an image < 1207216940 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :try dragging your mouse over it < 1207216950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does not select anything < 1207216958 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you're not accurate enough, then < 1207216963 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the dots are all bullet points < 1207216970 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :positioned using CSS < 1207216973 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ouch < 1207216991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :clearly, mediawiki markup should have an entry on esolang < 1207216992 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1207216995 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, so I was showing off < 1207217007 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: look at Wiki Cyclic Tag on Esolang < 1207217020 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's proof that MediaWiki markup is TC when you allow loop-restarting by hand < 1207217063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that would allow DoS though < 1207217109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: a restart-by-hand infinite loop is DOS even without the infinite loop bit < 1207217125 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because someone's making a huge number of edits (or at least previews) < 1207217126 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well but much more rate limited < 1207217142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there will be delay due to network < 1207217173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh well, there's always the pre-expand include limit < 1207217187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm? < 1207217190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's an anti-DOS measure that has been known to confuse the hell out of people < 1207217200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you write a page that's too complicated, bits near the end just stop working < 1207217207 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh? < 1207217209 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's an error message, but it's in HTML comments in the output < 1207217242 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well that is stupid < 1207217247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(an overly-complex page has to fail /somehow/, so as not to DOS the servers, but the avoid-error-messages-at-all-costs philosophy strikes me as being slightly counterproductive) < 1207217265 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207217349 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : Deewiant, oh btw I found some new nifty functions to microoptimize with, mostly to irritate ehird really < 1207217356 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1207217356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, I was logreading and that just jumped out at me < 1207217374 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, :) < 1207217380 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tools/fuzz-test.sh: line 109: 30792 Floating point exception( ./cfunge -S fuzz.tmp ) < 1207217381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207217392 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :division by zero, probably < 1207217408 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that produced NaN before when I tried < 1207217409 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1207217443 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, posix_fadvice is so obscure Google can't figure out what it does < 1207217462 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and in my experience division by zero is NaN in floats, but a floating point exception when done with integers. Go figure... < 1207217489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and the fuzz program got ? in it, can't figure reproduce due to them < 1207217557 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :try running it again maybe 4 times to see if you get the same result < 1207217627 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no I don't because there are quite a few ? in it < 1207217633 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh dear < 1207217653 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you need something like C-INTERCAL's +printflow < 1207217675 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just print out the coordinates at every step and save to a logfile, so that when it errors you can go back and see what route was taken < 1207217681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah at last I got it < 1207217702 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I got trace yes, but wasn't enabled in fuzz testing because it tends to spam with like 200 threads that fuzz sometimes cause < 1207217727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(+printflow is weirder; it does static compile-time analysis to figure out what line is executed after each other line (which is far from perfect), and then after each line is executed prints the line it predicted would be executed next) < 1207217736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what was the problem < 1207217753 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, not sure yet, trying to follow program flow < 1207217770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1207217777 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not div by zero, mod by zero < 1207217780 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : StackPush(ip->stack, (FUNGEDATATYPE)random() % StackPop(ip->stack)); < 1207217783 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or maybe negative? < 1207217797 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mod by negative doesn't SIGFPE, I think < 1207217803 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207217805 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but mod by zero probably does < 1207217885 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to get lunch < 1207217889 0 :ais523!unknown@unknown.invalid QUIT :"will be back after lunch" < 1207218392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ccbi crashes on "PXIF"4( 0D @ < 1207218400 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with a "floating point exception < 1207220222 0 :ais523!n=ais523@147.188.254.202 JOIN :#esoteric < 1207220557 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: "mostly useless" is up to you, Befunge-98 is turing complete even without fingerprints so you can do whatever however in any case ;-) < 1207220585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, was just noting that it was unusually useless < 1207220599 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's one instruction to replace 3 < 1207220605 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :can be handy if you need it a lot < 1207220617 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1207220673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, fixed the crash in ccbi? < 1207220685 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, div by zero < 1207220714 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fuzz testing is useful for such basic things < 1207220767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :quad tree looks very useful, but there are of course issues with it < 1207220774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like quite complex to implement < 1207220793 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think befunge98 used some kind of octree < 1207220803 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :!befunge or? < 1207220806 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1207220807 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :befunge98 < 1207220810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207220823 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but it didn't work < 1207220826 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but octree would be for 3D? < 1207220836 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it crashed loading mycology, so he just made the initial size bigger ;-) < 1207220841 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :might have fixed it since < 1207220845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah I can make quadtree work, would just be painful to do it < 1207220855 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and probably have a lot of bugs < 1207220858 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: works for 2D fine, too, you can keep the diagonals for each cell as well < 1207220877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a lot of references to update on changes, say new cell added < 1207220921 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :might still be less work than hashing + inserting < 1207220923 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know < 1207220927 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207220939 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, and ehird, after all your complaints about Debian's speed: < 1207220940 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : Accepted intercal 28:0.28-1 (source i386) Thu 03/04/2008 04:36 < 1207220946 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so split into 128x128? well it would allow some nice things < 1207220950 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that came in my inbox this morning < 1207220961 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(ehird: I know you're not in the channel right now but I'm assuming you logread) < 1207220971 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, for single ip it would be easy to use it to optimize say strings < 1207220981 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and JIT < 1207220986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie store a faster way to do it < 1207221001 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for multiple IPs that would be "bloody hard" < 1207221133 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh btw the fingerprint testing bit my my fuzz testing script is quite nice, it looks up in the source what instructions are implemented by the fingerprint it is told to test < 1207221148 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to reduce useless bounce on not implemented < 1207221183 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1207221204 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :depends on this format of lines in manager.c: < 1207221205 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :{ .fprint = 0x544f5953, .loader = &FingerTOYSload, .opcodes = "ABCDEFGHIJKLMNOPQRSTUVXYZ", < 1207221226 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie, looks for the correct Finger.*load, then finds opcodes on same line < 1207221228 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1207221241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually no, it just find everything between "" on same line < 1207221271 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still, as long as it works < 1207221342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION imagines TRDS being fuzz-tested < 1207221374 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, and a quadtree would be a pain if you had a flying IP < 1207221375 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and I won't implement TRDS so... < 1207221383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, true < 1207221393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but most time the ip doesn't fly < 1207221399 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not very efficient if you do a lot of p and g instructions either < 1207221410 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that can be dealt with by space partitioning < 1207221444 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :i.e. you can lookup a certain 'area' quickly < 1207221458 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and a hash table for storing references to cells recently accesses < 1207221461 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :accessed* < 1207221476 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what you could do would be to make a quadruply linked list < 1207221495 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and have a 2D array of pointers pointing to it < 1207221497 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however, there is one issue, linked list would destroy locality of reference < 1207221514 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that would optimise many common cases < 1207221524 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and would use up huge amounts of memory, but be speed-efficient < 1207221532 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah, but you forgot negative funge space and so on < 1207221544 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could use the 2D array of pointers near the centre, and some sort of tree system outside < 1207221559 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because most programs are going to have most non-32 values at small positive locations < 1207221568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that funge space is two vectors that are signed x-bit integers < 1207221572 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where x is 32 or 64 < 1207221576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207221577 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I know < 1207221595 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but an array is still fastest in the cases where it works, you just need something to supplement it in the cases where it doesn't < 1207221602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207221605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sounds complex < 1207221610 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in general, if people use pg, it's probably within everything that can be accessed quickly, i.e. up to (15,15) < 1207221628 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, profiling shows that searching in bucket in hash table is the slowest part < 1207221634 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: apart from that Befunge sieve-of-eratosthenes program < 1207221635 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I guess I need a better hash function? < 1207221653 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: where's it then < 1207221655 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :currently I think some standard crc is used < 1207221662 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: can't remember < 1207221671 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it probably uses only a few cells which are close by, anyway < 1207221680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it worked by writing 234567890234567890234567890, etc in an commented-part of Funge space < 1207221688 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and obliterated all the complex numbers in it < 1207221694 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/complex/composite/ < 1207221701 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so once you find that pos, which only takes time the first time, you can cache a pointer to it and after that all accesses are quick < 1207221714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: yes, agreed < 1207221725 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207221738 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which is why I think a tree is good, since it optimizes the common case of just an IP moving < 1207221750 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, actually if you know a good hash for two 64-bit integers that generate few collisions < 1207221755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think that would help a lot < 1207221766 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and you can use such caching to take care of 90% of pg use < 1207221768 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: mingle from INTERCAL < 1207221772 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :alternate bits in the two integers < 1207221773 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because currently I get a lot of linear search into buckets < 1207221787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, um? < 1207221788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :typedef struct s_fungeVector { < 1207221788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : FUNGEVECTORTYPE x; < 1207221788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : FUNGEVECTORTYPE y; < 1207221788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :} fungeVector; < 1207221791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is what I need to hash < 1207221797 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although a faster method would be to take the bottom few bits of each of x and y and preserve those literally < 1207221799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where FUNGEVECTORTYPE is either 32-bit or 64-bit < 1207221821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. to hash into 1024 buckets, take ((x & 32) << 5) + (y & 32) < 1207221829 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I use murmurhash, seems decent < 1207221835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, link? < 1207221838 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :totally insecure, but will spread the typical rectangular program out < 1207221841 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :google.com < 1207221860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bah < 1207221864 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you want to optimise for Unefungish programs too, you can do that with a small modification < 1207221884 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(((x + y/32) & 32) << 5) + ((y + x/32) & 32) < 1207221926 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you could modify it slightly so that you can sort a Befunge-93 program into 2000 different buckets out of 2048 < 1207221930 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not sure how useful that would be < 1207221997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, where is your implementation of it? < 1207222007 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :space.d < 1207222024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :must have an old source code version < 1207222197 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, your looks 32-bit specific? < 1207222209 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :what do you think the static assert's for < 1207222217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1207222649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what is hash_t? < 1207222670 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :beats me, probably uint < 1207222687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, also do you do one hash for x and then one for y or? < 1207222706 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :eh? only one hash is returned < 1207222713 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207222726 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :0x_c6a4_a793 < 1207222729 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf is that number? < 1207222730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :_? < 1207222733 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you do one hash for x and one for y, then as long as small integers hash to different things then you're likely to end up with few collisions < 1207222739 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :_ is just for readability < 1207222742 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :doesn't affect value < 1207222753 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Perl does that too AFAIR < 1207222799 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :gcc didn't like it < 1207222800 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it hashes together the x and y as though they're a block of data < 1207222816 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ? < 1207223016 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no difference for speed really it seems, hrrm < 1207223090 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, in fact it is worse than the current crc < 1207223112 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: for me it was much faster, shows just how crap the builtin D hashtable is :-) < 1207223112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for 32-bit values, I have not yet tried for 64-bit < 1207223149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it is faster than CRC, but generates more collisions here < 1207223163 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I have no way of counting them so I don't know < 1207223234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well mine is based on a simple trick of making the search_in_bucket call another function for each comparing of item, and prevent gcc from inlineing it < 1207223241 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and then look at result of profiling < 1207223615 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :307859 vs. 201398? < 1207223616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hn < 1207223617 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm* < 1207223630 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it seems crc gets more collisons, yet it is faster overall < 1207223632 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1207223652 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so maybe a binary tree instead of a hash table would be faster :-) < 1207223662 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :(assuming the fallback is a bintree) < 1207223672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1207223699 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :i.e. maybe whatever the hash table uses to resolve collisions would be faster overall < 1207223720 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most hash tables I know just use a linear linked list to resolve collisions < 1207223727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on the basis that they don't happen very often < 1207223730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway why use a different constant m than the the "upstream" murmur does? < 1207223741 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, true < 1207223750 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't think I do, maybe it changed since < 1207223760 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, murmur2 or murmur1? < 1207223762 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the D one uses a binary tree < 1207223763 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 2 < 1207223766 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207223771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well this is 2 < 1207223782 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : const unsigned int m = 0x5bd1e995; < 1207223782 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :vs < 1207223784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : const hash_t m = 0x_c6a4_a793; < 1207223820 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh wait you got fixed seed? < 1207223841 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : unsigned int h = seed ^ len; < 1207223843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :vs < 1207223844 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hash_t h = 0x7fd6_52ad ^ (8 * m) < 1207224606 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :130574 vs 109371 for 64-bit hm < 1207224648 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it seems even with IO disabled and fingerprints disabled the main mycology uses something random? < 1207224656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait, that would probably be time from y? < 1207224882 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1397330 vs 868481 < 1207224886 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, that is for the scheme thing < 1207224889 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the latter is crc < 1207224928 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so on mycology murmur is better but on the fib in scheme converted to befunge thing, crc is way better < 1207224929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1207225045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :4331048 vs. 4330944, almost even, again crc slightly better < 1207225138 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, looks 4330944 4364795, it looses for 32-bit too hm < 1207225161 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in fact it is only better for mycology it seems < 1207225208 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, wow, posix_fadvice is so obscure Google can't figure out what it does <-- try the man page, it knows < 1207225227 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :$ man posix_fadvice < 1207225227 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :No manual entry for posix_fadvice < 1207225229 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :posix_fadvise < 1207225231 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :typoed it < 1207225232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the name < 1207225247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, that explains why I couldn't find it < 1207225255 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as man posix_fad would tell you < 1207225255 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1207225265 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :assuming you got completion of that set up < 1207225312 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also one hint may have been that google said: "Did you mean: posix_fadvise" < 1207225313 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, it does tab-complete, although man tabcompletion takes sufficiently long that I can sense the hesitation < 1207225316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right at the top < 1207225328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, but I assumed that it was just trying to fix typoes in programmer words again... < 1207225349 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the tabcompletion over here is pretty good; it can tab-complete subversion and make too < 1207225356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so can mine < 1207225361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :gentoo :) < 1207225373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(make is particularly interesting because it has to dive into the makefile to find out what make targets are available) < 1207225387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1207225397 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, fails at included makefiles however < 1207225422 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/MURI6z45.html < 1207225426 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pity, otherwise it might have been possible to prove tab-completion Turing-complete < 1207225430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, the ones marked with star are enabled < 1207225443 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very nitfy gentoo tool eselect < 1207225446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when it works < 1207225459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it is turing complete in fact < 1207225466 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is just a bash function < 1207225474 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that returns a result < 1207225496 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean without writing extensions for it < 1207225496 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so you could make it handle included make files < 1207225503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, is the 'in the wild' version of tabcompletion TC? < 1207225505 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1207225519 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well if you make a patch and send it upstream? < 1207225527 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that would be cheating < 1207225535 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can make any program TC like that < 1207225537 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even /bin/true < 1207225541 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1207225542 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you can somehow get the patch accepted < 1207225560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well no, just "look at included makefiles" patch < 1207225565 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it would be an useful feature < 1207226101 0 :ais523!unknown@unknown.invalid QUIT :"leaving for a while, will be back later" < 1207227519 0 :ais523!n=ais523@147.188.254.202 JOIN :#esoteric < 1207227962 0 :Tritonio_!unknown@unknown.invalid QUIT :Remote closed the connection < 1207228018 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm is the C-INTERCAL website down? < 1207228054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Firefox can't establish a connection to the server at intercal.freeshell.org. < 1207228197 0 :Tritonio_!n=Tritonio@150.140.229.252 JOIN :#esoteric < 1207228255 0 :ais523_!n=ais523@147.188.254.202 JOIN :#esoteric < 1207228271 0 :ais523!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1207228277 0 :ais523_!unknown@unknown.invalid NICK :ais523 < 1207228294 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry, my wireless dropped for a while < 1207228296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ais523, hm is the C-INTERCAL website down? Firefox can't establish a connection to the server at intercal.freeshell.org. < 1207228311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it is, because I can't get a connection either < 1207228318 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird's mirror is up, though < 1207228331 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(and that's the CLC-INTERCAL website, it just happens to host C-INTERCAL too) < 1207228396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, wikipedia refers to C-INTERCAL on ESR's website, hm? < 1207228403 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think so < 1207228427 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mentioned intercal.freeshell.org on the talk page, but nobody answered, and I don't want to add it myself because I have a conflict of interest with respect to ir < 1207228428 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :he stopped maintaining it I see, but why not provide info to new source it < 1207228429 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/ir/it < 1207228435 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/$/\// < 1207228449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh? so ESR still thinks he is maintaining it? < 1207228461 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not sure < 1207228472 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but if he reads alt.lang.intercal, then he'd know about the newer versions < 1207228479 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the catb site hasn't been updated in ages AFAICT < 1207228500 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does intercal have any PLEASE MAKE THIS WORK? < 1207228510 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not exactly < 1207228512 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1207228512 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what isn't working? < 1207228528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anything anyone try to write in intercal ;) < 1207228535 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not true < 1207228537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well apart from you < 1207228542 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and a few more < 1207228546 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hey, lots of people get INTERCAL programs to work! < 1207228554 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, nowadays I think they work more often than not, on average < 1207228564 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207228566 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mostly because people tend to be conservative and stick to the J-INTERCAL command set < 1207228578 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I didn't mean compiler bugs < 1207228579 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(i.e. INTERCAL-72 + COME FROM label) < 1207228584 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: neither did I < 1207228598 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about LOLINTERCAL? < 1207228602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lolcode + intercal < 1207228603 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm < 1207228614 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :PLEASE -> PLZ < 1207228616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1207228631 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's a worrying thought < 1207228633 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably not worth it < 1207228637 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1207228878 0 :Tritonio_!unknown@unknown.invalid QUIT :"Bye..." < 1207228894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, in fact lolintercal would be much easier than lolC < 1207228901 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes < 1207228908 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because INTERCAL has so many keywords < 1207228922 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I find DO and V are the hardest to avoid when CREATING new statements, though < 1207228989 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1207228993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CREATING new statements? < 1207229000 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's new in 0.28 < 1207229003 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a CREATE command < 1207229006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :are you saying you can create new keywords? < 1207229011 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: new commands < 1207229012 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sounds like forth < 1207229019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is not exactly the same as creating new keywords < 1207229023 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1207229031 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it took a while to figure out how to do it in a compiled language, though < 1207229053 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(CLC-INTERCAL is interpreted, and the INTERCAL code itself is implemented entirely using its own version of CREATE) < 1207229079 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but C-INTERCAL has to compile invalid commands speculatively in case they gain a meaning later < 1207229138 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, is C-INTERCAL slow or? < 1207229152 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's pretty fast for an INTERCAL compiler < 1207229156 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :considering it seems to love function pointers < 1207229164 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in some cases you can convert C to INTERCAL, and get back what's almost the original C < 1207229179 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207229188 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the function pointers are used to implement operand overloading; if you don't specify -a and don't use the / operator, they aren't used < 1207229205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :likewise, if you don't use -m or -e, it does everything entirely without longjmp < 1207229221 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the general rule is that things that could slow it down have their own command line option < 1207229240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(correction: if you don't use -m, -e, or variants on computed COME FROM, it does everything entirely without longjmp) < 1207229268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except that things don't have a command line option if they can easily be autodetected < 1207229276 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207229324 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whoops, sorry, -v also turns on operand overloading, but it's rare to need that switch because it allows you to assign to constants, which tends not to lead to maintainable programs < 1207229473 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207229504 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :here's a simple example < 1207229518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :suppose I compile the following program, with optimisation and debugging enabled: < 1207229524 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3 < 1207229530 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um < 1207229533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what does that do? < 1207229534 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can then type e 1 into the debugger < 1207229544 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it tells me what the line does (which is what it optimised to): < 1207229551 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yuk007 e 1 < 1207229551 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C1: Expression is (0x2 - ((:2 > (:5 ^ :2)) & (! (! :5)))) < 1207229565 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok that is nifty, that it can tell that < 1207229571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still what is that useful for? < 1207229573 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it's part of a test for greater-than, which is not at all obvious by looking at the original INTERCAL < 1207229600 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it was part of the original division routine in the system library < 1207229605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(arithmetic generally requires a loop) < 1207229607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, to me it looks like more than "greater than"? < 1207229638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a greater-than-and-not-equal-to test, showing that the syslib's designers didn't really understand their own code themselves < 1207229642 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : it was part of the original division routine in the system library <-- well you could implement divide directly into the compiler, something like gcc's __builtin__ < 1207229643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1207229647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the and-not-equal-to is redundant < 1207229649 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I did < 1207229673 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and INTERCAL used to use 1 and 2 as logic levels because they were easier to do conditional branches with < 1207229711 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thus the 0x2 - at the start < 1207229733 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, compiled with -Os and then stripped cfunge is 51 kb btw < 1207229762 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ick is 409 kb with -O2 and not stripped < 1207229764 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the debug binary is around 986K heh < 1207229784 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it has lots of libraries that compiled programs link with, which are just as much a part of C-INTERCAL as the compiler is < 1207229787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway I seen far worse < 1207229793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :do you know of the game supertux? < 1207229809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :compile with plain -g, not even -ggdb3, the binary is over 50 MB! < 1207229819 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't know of supertux < 1207229820 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stripped the same binary is around 3 MB iirc < 1207229838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it is a mario like platform jumping 2D game, staring Tux < 1207229850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :-rw-r--r-- 1 root root 106704 2008-04-03 11:35 /usr/local/lib/libick.a < 1207229850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :-rw-r--r-- 1 root root 121872 2008-04-03 11:35 /usr/local/lib/libickec.a < 1207229850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :-rw-r--r-- 1 root root 127390 2008-04-03 11:35 /usr/local/lib/libickmt.a < 1207229856 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the libraries aren't too bad < 1207229861 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm... what about the debugger? < 1207229872 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :-rw-r--r-- 1 root root 29128 2008-04-03 11:35 /usr/local/lib/libyuk.a < 1207229879 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, it's smaller than yours < 1207229894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well that is not a binary < 1207229897 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(again, you probably don't want to know why the debugger is stored in object code form, although you can probably guess) < 1207229908 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no I'm happy I can't guess it < 1207229929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand, supertux is in C++, so that can explain the huge size of debugging data < 1207229997 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, C++ is hard to debug naively < 1207230014 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm... I wonder how much extra space in the executable C-INTERCAL debugging data takes up? < 1207230028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, strip will take away symbol table too < 1207230038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and in C++ again that is rather large < 1207230045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :consider long mangled names < 1207230069 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :when compiling with -y C-INTERCAL stores a line number map, explanations for each expression in the program, and the entire program source code in the executable < 1207230074 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that has to take up some space < 1207230113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(that's how to avoid problems with list commands not finding files, or finding the wrong version; you just store the original source in the executable) < 1207230118 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, btw the 986 KB for cfunge with debug info is for -O0 -ggdb3 < 1207230141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it makes a big difference sizewise < 1207230147 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, is there any intercal quine? < 1207230157 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes < 1207230162 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :amazing < 1207230163 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's pit/quine.i in the C-INTERCAL distribution < 1207230177 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it looks like the standard quinish stuff < 1207230191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lots of data in a predictable format that represents the rest of the code, followed by the code itself < 1207230262 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :normally using PLEASE on every fourth line is a copout (varying it is more aesthetic), but in the case of a quine program I can understand it < 1207230338 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, a large risk with the befunge bridge thing would be that all someone wrote in intercal was "invoke befunge" basically < 1207230352 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm happy with that < 1207230356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because befunge seems way easier to program in ;P < 1207230365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: they're good for different things < 1207230377 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just try to write an 8-bit bit-reverse in Befunge, for instance < 1207230378 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : DO .5 <- '?"'&"':2~:5'~'"'?"'?":5~:5"~"#65535$#65535"'~'#65535$#0'"$#32768'~'#0$#65535'"$"'?":5~:5"~"#65535$#65535"'~'#0$#65535'"'"$"':5~:5'~#1"'~#1"$#2'~#3 < 1207230382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not comparing numbers < 1207230389 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :agreed < 1207230390 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very simple to do that in befunge < 1207230396 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : just try to write an 8-bit bit-reverse in Befunge, for instance < 1207230396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :INTERCAL is bad at the ordinary sorts of arithmetic < 1207230397 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207230400 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :good question < 1207230407 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's very good at bitwise stuff, though < 1207230423 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, there are fingerprints for bitwise and/or/xor < 1207230427 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so not that hard < 1207230447 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, but it's just 3 lines of INTERCAL < 1207230450 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and they're all the same line < 1207230461 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :here's the shortest addition I know of, by the way: < 1207230461 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1207230463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1 < 1207230471 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :22+ < 1207230472 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207230488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that line describes how to do long addition using the old school method < 1207230507 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :add corresponding bits, store the carries separately, left shift the carries and add to the result, repeat until the carry is 0 < 1207230519 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but why does it have a 2 there? I thought it used TWO for 2? < 1207230529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's on input < 1207230533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207230537 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :#2 is the constant 2, unless/until you assign to it < 1207230543 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :.2 is a 16-bit variable < 1207230548 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is not the same variable as .1 or .3 < 1207230548 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so you can't read strings from input? < 1207230559 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes you can, you just use a different input instruction < 1207230572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you get the differences between consecutive characters < 1207230576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh god < 1207230579 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rather than the characters themselves < 1207230586 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well the first one... < 1207230589 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it could be worse, CLC-INTERCAL inputs in Baudot < 1207230596 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is Baudot? < 1207230607 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :5-bit communication system with shift codes < 1207230613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :dates back to the days of teletypewriters < 1207230622 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1207230642 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : yes, but it's just 3 lines of INTERCAL < 1207230642 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207230646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for reversing bits? < 1207230648 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207230667 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what data type? < 1207230678 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :8-bit integer < 1207230681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207230687 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's 4 lines for a 16-bit integer, 5 for a 32-bit integer < 1207230692 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :simple in C I think < 1207230700 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I would say 'and so on' but there are no larger integers unless you simulate them yourself < 1207230709 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: C uses a similar looking method that differs in the details < 1207230747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in C you swap blocks of 4 bits, then 2 bits, then 1 bit < 1207230767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :something like char in = 2, out = 0; for(i=0; i < 8; i++) { in <<= out < 1 } < 1207230770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something like that < 1207230776 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's terribly inefficient < 1207230780 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is true < 1207230785 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Or you just table-lookup. < 1207230797 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, for 8 bit values certainly that would work < 1207230806 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually I would need < 1207230810 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : { in <<= out > 1 } < 1207230814 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1207230816 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : c = (c & 0x0f) << 4 | (c & 0xf0) >> 4; < 1207230816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : { in <<= out >> 1 } < 1207230816 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : c = (c & 0x33) << 2 | (c & 0xcc) >> 2; < 1207230816 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : c = (c & 0x55) << 1 | (c & 0xaa) >> 1; < 1207230817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even < 1207230826 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's an 8-bit-reverse directly from cesspool.c < 1207230826 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ok < 1207230840 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, now: what do you use 8-bit-reverse for? < 1207230854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, character output has to be bit-reversed < 1207230857 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1207230858 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1207230859 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but its main use is for Fourier transforms < 1207230862 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :For 16-, 32- and 64-bit values you can use the 256-element table and swap the bytes while looking-up. < 1207230862 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207230864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and why the name "cesspool.c"? < 1207230871 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm true < 1207230876 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's the runtime library, the name predates me < 1207230881 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but most of the source files have names like that < 1207230884 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I see....... < 1207230889 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except the ones designed to include in other people's programs < 1207230892 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure this link has been mentioned, but for C bit-twiddling, there's http://graphics.stanford.edu/~seander/bithacks.html < 1207230894 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like ick_ec.h, which is sensible < 1207230897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does ick compile with -Wall -Werror? < 1207230900 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : DO .1 <- !1~#255'$!1~#65280' < 1207230900 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : DO .1 <- !1~#255'$!1~#65280' < 1207230900 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : DO .1 <- !1~#255'$!1~#65280' < 1207230900 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : DO .1 <- !1~#255'$!1~#65280' < 1207230901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :-ansi too btw < 1207230909 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and -pedantic < 1207230910 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I already use -Wall < 1207230919 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no warnings? < 1207230920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's one warning, which is caused by the output from flex < 1207230926 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :For example, reversing a single byte with b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023; < 1207230928 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :-ansi makes it fail because it uses POSIX stuff < 1207230929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fair enough < 1207230949 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, -std=c99 -pedantic -Wall -Wextra? < 1207230956 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: that's slow unless your system has a fast 64-bit multiply < 1207230959 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, or the set of warnings used by cfunge? < 1207230962 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that still excludes POSIX stuff < 1207230981 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, not from headers no < 1207230984 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but let me put it this way: I've personally reviewed all 8000 warnings that Splint came up with < 1207230998 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there are 2 valid ones left < 1207231003 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, just -D_POSIX_SOURCE or whatever < 1207231009 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't want gnu extensions < 1207231017 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : fizzie: that's slow unless your system has a fast 64-bit multiply <-- well.... mine does I think < 1207231019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't use them < 1207231047 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The few benchmarks I've seen seem to have looked like small table-lookups would be "fast enough", and they have the (dis)advantage of being very readable code. < 1207231051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, splint is more or less crap due to needing stupid annotation IMO < 1207231056 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except occasionally ({ ... }) to solve a preprocessing problem, but that was in the bit that needed gcc anyway < 1207231057 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and the (void)puts thing < 1207231060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I added the annotations < 1207231082 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I would never to my code, they make the code harder to read and therefore maintain < 1207231084 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :many of them are useful to humans too, because wherever I added a warning-suppress annotation I explained why my code was actually correct < 1207231107 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and things like /*@null@*/ aren't too hard to read, and document the input taken by a function quite well < 1207231109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh and splint fails on cfunge with parser error < 1207231112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :due to C99 stuff < 1207231128 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it fails on some of the INTERCAL files like that for no apparent reason < 1207231131 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I don't run it on those < 1207231145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well virtually all files for cfunge < 1207231152 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as it fails on a global header < 1207231179 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : return (fungeVector) { .x = x, .y = y }; < 1207231180 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :BTW, the external calls code - which can be made standalone to allow COME FROM, etc., to be used in C programs - is as far as I can tell standard strictly conforming freestanding-legal C89 < 1207231183 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fails on that for example < 1207231186 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :apart from a few calls to printf < 1207231190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I mailed the author of splint a test case < 1207231206 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the use of stdint.h for uint16_t and uint32_t, which are easily typedefed in C89 < 1207231210 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, who would want COME FROM in C? :( < 1207231229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not sure, but the ability to do computed COME FROMs is an interesting one < 1207231238 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, unreadable code < 1207231243 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for C < 1207231251 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for intercal it is fine < 1207231253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in C, though, they clobber your procedure's return address and all your auto variables, so you have no way to escape except by doing still more COME FROMs < 1207231255 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but for normal C... < 1207231283 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well -fstack-protector would HATE that < 1207231288 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(you can also use NEXT/RESUME to encapsulate them, which are call/return from function in INTERCAL, with some INTERCAL-like twists as usual) < 1207231296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it checks that return address wasn't overwritten iirc < 1207231303 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: are you sure? I implemented it in standard strictly-conforming freestanding-legal C89 < 1207231308 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't overwrite the return address < 1207231317 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I longjmp out of the function and recall it from elsewhere < 1207231318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well, you said it "clobber your procedure's return address" < 1207231325 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm < 1207231326 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thus the return address ends up wrong < 1207231326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1207231343 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this also explains why the auto variables go missing < 1207231354 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with auto you mean? < 1207231368 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, auto's the default < 1207231381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :non-register non-volatile? < 1207231383 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a completely useless keyword, because it's illegal everywhere it isn't the default < 1207231398 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: register variables get lost too, and volatile makes no difference < 1207231407 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :static is fine, as is malloced storage and global storage < 1207231413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well that is what auto is "compiler selects" < 1207231462 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, just don't do that in cfunge code please < 1207231478 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nowhere apart from the interface functions, if I can avoid it < 1207231500 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, write my own functions that COME FROM the INTERCAL program and then call cfunge < 1207231511 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, if you make it so you can only return between instructions, and that doesn't include k, that must execute in one go, but as in main loop instruction < 1207231515 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it should probably work fine < 1207231526 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207231539 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although kNEXT ought to be able to work < 1207231540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just need to replace main loop code then with something else < 1207231556 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :kNEXT? that would iterate over kN only < 1207231591 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I meant NEXT as in (whatever character represents NEXT) < 1207231605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which would be a single character in the fingerprint, presumably < 1207231607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, you are on your own there < 1207231622 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless... unless you have to spell out COMEFROM in some direction in the Befunge code to do a COME FROM < 1207231622 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :making k work over t was a pain < 1207231629 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ewww < 1207231642 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that would be against the philosophy of funge < 1207231647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1207231654 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that one char = one instruction < 1207231655 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but somewhat within the philosophy of INTERCAL < 1207231666 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is where to draw the boundaries when linking the two languages < 1207231672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm true < 1207231676 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I think it's best if each language keeps its own philopsophy < 1207231679 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :maybe an RPC interface? XD < 1207231689 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except for INTERCAL flow control to link the two languages, whatever they are < 1207231694 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207231701 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that way, if you link INTERCAL, C, and Befunge, the Befunge can COME FROM the C, etc < 1207231709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in either case, doing it as a fingerprint will have problems with unloading, but I guess you can just let ppl load it again < 1207231724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, that would be the plan < 1207231757 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also, how would you specify what thread to come from in? < 1207231763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or would it create a new ip each time? < 1207231779 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :multithreading doesn't mix well with external calls < 1207231779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :new ip can only be created by duplicating an existing ip as it is now < 1207231798 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :INTERCAL multithreading (-m) conflicts with INTERCAL external calls (-e), for instance < 1207231801 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah skip -DCONCURRENT_FUNGE then iirc < 1207231802 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so each program may only use one or the other < 1207231813 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something like that < 1207231817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cmake knows better :9 < 1207231818 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::)* < 1207231846 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm... an INTERCAL fork bomb works correctly < 1207231856 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(1) DO COME FROM (1) WHILE COME FROM (1) < 1207231870 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :of course, they don't break your computer because all the threads share one process < 1207231873 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just like in Befunge < 1207231891 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh and patches are welcome as long as they are not intercal interface specific and 1) follow current coding style 2) gives no new valgrind error 3) works fine both with boehm-gc and without < 1207231892 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(that's the closest I could get to the effect of kt, but it doesn't terminate) < 1207231910 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm a bit busy at the moment, but I'll look into it sometime < 1207231915 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also how would you handle q in befuge? < 1207231918 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :befunge* < 1207231931 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: the same as an exit() command in C < 1207231934 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :all programs exit < 1207231936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and with your C bridge, how do you handle _exit() < 1207231942 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I exit < 1207231944 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is a "fast down" iirc < 1207231948 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :_exit != exit < 1207231950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in C < 1207231959 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, I exit without deallocating memory or closing filehandles, then < 1207231967 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the OS has to clean up < 1207231976 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most OSs should be able to handle it < 1207231986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :DOS couldn't, but you don't write _exit in DOS unless you know what you're doing < 1207232003 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you wouldn't use DOS IF you know what you were doing ;P < 1207232019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: some people like a challenge ;-) < 1207232041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yes... but not write a OS from scratch instead < 1207232041 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1207232066 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no computers I dare to run it on < 1207232076 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :qemu < 1207232083 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I have one program (the MiniMAX interp) written in machine code, but I've never dared run that either < 1207232093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, again, qemu < 1207232104 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sounds like an interesting idea, I may install it < 1207232115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, or vmware or something similar < 1207232136 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, for decent performance with qemu you want kqemu too iirc < 1207232143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :some kernel module for speeding things up a bit < 1207232374 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, would depending on complex.h be an issue for you? < 1207232383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :considering CPLI fingerprint < 1207232387 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably not < 1207232387 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1207232394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I think even in recent versions gcc got issues with it < 1207232412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in "not exactly the way C99 says it should be" < 1207232422 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but well you could take a fingerprint out if you didn't like it < 1207232423 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the only points of contact between your program and mine when I'm using the external calls system are ick_ec.h and my own linker < 1207232450 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which basically just looks through the output of cpp and changes special predefined tokens into labels which point to each other in the right way < 1207232467 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :./src/ick_ec.h < 1207232467 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :./include/ick_ec.h < 1207232467 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :?? < 1207232529 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, before you include it into cfunge fork thing, please make it stop depending on tab == 8 spaces < 1207232530 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1207232536 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it doesn't < 1207232537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is unreadable when tabstop is set at 4 < 1207232545 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, that < 1207232546 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or two < 1207232551 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can M-x untabify if you like < 1207232558 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but tab=8 is pretty much a standard for new code < 1207232560 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well astyle is a great tool < 1207232570 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, see my tab standard in cfunge :) < 1207232574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is way better IMO < 1207232576 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :tabs vs. spaces vs. tab=8, spaces for 2/4/6 is a matter of personal preference < 1207232585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what a lot of modern code does < 1207232591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tab for each indent level < 1207232602 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but sometimes I indent more than 8 levels < 1207232604 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :space to adjust to line up at parentheses after that < 1207232606 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/8/10/ < 1207232612 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so that would be unreadable on an 80-character screen < 1207232638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm? well just change tab stop then? < 1207232638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in the editor < 1207232650 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: tab set to anything other than 8 is evil < 1207232662 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :3 here \o < 1207232664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well in cfunge code you will have to live with that < 1207232669 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because then other people's code will break at your end, and vice versa < 1207232678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed and 4 here, yet your code is perfectly readable < 1207232679 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's fine to indent by smaller amounts, and I usually do < 1207232681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no it won't < 1207232683 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nothing will break if you use tabs correctly < 1207232693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tab for each indent level < 1207232694 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :as in, "indent by one level" instead of "go to next offset of N spaces" < 1207232705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then spaces after that to line up at parentheses < 1207232716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :do not use tab after any non-whitespace on a line < 1207232728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that works perfectly < 1207232731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: most INTERCAL code is written as a tab followed by a line < 1207232737 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or a line label, then a tab, then the line < 1207232747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you'll have a hard time reading it if tab != 8 < 1207232750 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, we were discussing C here I think? < 1207232765 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you mean your editor has different tab-stop settings for different types of input? < 1207232775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure, very easy in emacs < 1207232778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so if you copy/paste a fragment of INTERCAL into a comment in a C file, it'll look different? < 1207232785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :-*- mode: C; coding: utf-8; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- < 1207232792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is what I put at the top of every file < 1207232810 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why does that not allow indent-style too? < 1207232817 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, eh? < 1207232821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I have to use eval to set the c-indent-style in the mode line < 1207232829 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because writing c-indent-style:bsd doesn't work < 1207232832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah well no idea < 1207232841 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway I use my own indent style < 1207232844 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not bsd at all < 1207232860 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bsd's the best approximation to the one I use in Emacs' menus < 1207232863 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from the kdevelop project file: < 1207232864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : < 1207232866 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207232871 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I generally just let it autoindent like that, fixing it myself if needed < 1207232882 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, see the astyle stuff from kdevelop < 1207232885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is how I do it < 1207232896 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I have indent installed, but it isn't very good < 1207232905 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, astyle is way better than indent < 1207232911 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I guessed < 1207233038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl food < 1207233591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back < 1207234459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it seems those kdevelop options match astyle --indent-preprocessor --indent-namespaces --indent-labels --indent=tab=4 --max-instatement-indent=40 --brackets=linux --min-conditional-indent=1 --unpad=paren --indent-switches --pad=oper < 1207234463 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not prefectly < 1207234468 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but almost < 1207234476 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to find what is missing < 1207234478 0 :RedDak!n=dak@87.16.89.143 JOIN :#esoteric < 1207234954 0 :shinkuzin!n=r0x@189.13.95.51 JOIN :#esoteric < 1207235243 0 :RodgerTheGreat!n=Rodger@wads-5-233-27.resnet.mtu.edu JOIN :#esoteric < 1207235614 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: astyle badly messes up some of the INTERCAL source files < 1207235640 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea about that < 1207235660 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it works for cfunge apart from a few cases < 1207235681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :code compiles in both cases < 1207235686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :see http://filebin.ca/mxyxwt/perpet.c < 1207235695 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the indentation doesn't even finish at the left margin < 1207235703 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(that was using your settings, by the way) < 1207235709 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and all the comments are badly messed up < 1207235717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least, the multi-line ones < 1207235734 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I'd say that file is pretty messed up before < 1207235740 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no it wasn't < 1207235763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : if (tp->exechance != 100 && tp->exechance != -100) { /* AIS: The double-oh-seven operator prevents < 1207235764 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : coopt working. However, syslib contains a < 1207235764 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1207235775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :having a comment at the end of the line like that is bad style < 1207235779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since it is multiline < 1207235780 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :see http://elliotthird.org/mirror/c-intercal/ick-0.28/src/perpet.c < 1207235787 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it wasn't on the end of the line before < 1207235801 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it was presumably on the same line as a { which was /below/ the IF < 1207235802 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, probably too many #ifdef confused it < 1207235804 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/IF/if/ < 1207235813 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's not the ifdefs that confuse it AFAICT < 1207235818 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the indentation is sane near them < 1207235826 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well if you want the style where if and { are on different lines just change the options < 1207235848 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :having a comment after a { is pretty bad IMO < 1207235859 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and why does it put seven spaces before the final }? < 1207235901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no clue < 1207235911 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, things like #ifdef are sometimes indented and sometimes aren't < 1207235913 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it obviously failed at some construct in that file < 1207235949 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, about ifdef indention, astyle doesn't do that at all < 1207235955 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so look in the original source for that < 1207235957 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes it does < 1207235962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :--indent-preprocessor is only for: < 1207235966 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :--min-conditional-indent=1 < 1207235969 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :#define foo(a,b) \ < 1207235972 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : blah blah < 1207235979 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no --min-conditional-indent=1 is for normal if < 1207235980 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like: < 1207235991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if (very long line blah blah && < 1207235995 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : here goes more < 1207236012 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, the bit starting with remspace -= strlen(" -lickec"); is completely screwed up < 1207236022 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it looks completely fine to me < 1207236028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe astyle doesn't like -=? < 1207236044 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I'm quite sure it didn't cause issues for me < 1207236053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so probably it got confused somewhere before there < 1207236358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does it work on other source files? < 1207236369 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :feh2.c breaks slightly, but isn't too bad < 1207236383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and most "clean" source files < 1207236385 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :let me try unravel.c; I wrote that one entirely myself so its indentation was consistent beforehand < 1207236415 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I don't think it got an issue with existing indention really, but it *does* with very very complex #ifdef < 1207236433 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie, where there is a { inside *one* #ifdef #else #endif < 1207236435 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but not in the other < 1207236489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't do that normally (although there's one example in ick-wrap.c) < 1207236504 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I do it with ( in order to use snprintf if available and sprintf otherwise < 1207236521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is very likely to confuse it < 1207236528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'd use a varadic macro instead < 1207236532 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it seemed to handle that bit fine < 1207236533 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but then you would have C99 anyway < 1207236538 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so wouldn't really help heh < 1207236540 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but got confused later on < 1207236564 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, it's really hard to read code with { on the same line as the if < 1207236568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also sometimes when {-nesting is not the same at the start of #ifdef and the end of the block < 1207236574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm, change that < 1207236574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :easy < 1207236580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just select another style < 1207236583 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I know < 1207236591 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I was seeing how it worked on your style < 1207236602 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :--brackets=break maybe < 1207236607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I prefer --brackets=linux < 1207236627 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I find it easier to read < 1207236640 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lots of line with a single { on just confuses < 1207236645 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :locality of reading ;) < 1207236647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, when I was experimenting with my own styles I used --brackets=break < 1207236658 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and anyway, astyle got lots of options < 1207236665 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's hard to tell between a multiline if and a single-line if when the { is hidden at the end of the preceding line < 1207236673 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you have to look down a couple more lines to tell what the scope of the if is < 1207236679 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it's worse if there are comments in between < 1207236682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207236735 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I work at 1400x1050, 20", something like Courier New, font size 10 < 1207236754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that would explain why you got away with so much indentation < 1207236760 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I tend to stick to 80-char lines < 1207236760 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :slight antialias, with the patent encumbered hinting on < 1207236777 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I try to not go above 80 chars in README and such < 1207236778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's full screen in DOS, but one typical-sized Emacs window on Linux < 1207236791 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it loads at 80 chars wide unless/until I resize it) < 1207236798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you can change default size in .emacs iirc < 1207236806 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, but I like this default < 1207236809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think I display around 120 chars wide < 1207236829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but, in kate I got a think grey vertical line at column 80 < 1207236837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't know if that is possible in emacs < 1207236846 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it probably is < 1207236854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I find that sort of setting very hard to find < 1207236862 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because it doesn't seem to be in Customize for some reason < 1207236864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah and wouldn't work in non-X mode < 1207236885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I use both text mode and X mode < 1207236887 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :quite a lot < 1207236902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway with tab stop 4 my code doesn't look bad < 1207236920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for bash I even use tab stop 2 < 1207236921 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207236925 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I prefer 2 for C because I'm horizontal-space-challenged < 1207236931 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've been known to use 1 for Brainfuck < 1207236997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1207237008 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well then just set tab stop 2 < 1207237010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :very easy < 1207237026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, changing indentation size is rarely a problem < 1207237080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway I checked with tab stop 4 in interpreter.c, of a total of 607 lines, just 13 lines are wider than 80 chars < 1207237085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and those are mostly long strings < 1207237086 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like < 1207237095 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : fprintf(stderr, < 1207237095 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : "WARN: Unknown instruction at x=%" FUNGEVECTORPRI " y=%" FUNGEVECTORPRI ": %c (%" FUNGEDATAPRI ")\n", < 1207237095 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ip->position.x, ip->position.y, (char)opcode, opcode); < 1207237112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hard to break such up, breaking a string up is not something I like < 1207237178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I don't know if astyle can do it, but I know indent can: put the return type on a different line from the rest < 1207237179 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like: < 1207237188 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :static inline void < 1207237189 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :PrintUnknownInstrWarn(FUNGEDATATYPE opcode, instructionPointer * restrict ip) < 1207237191 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :{ < 1207237191 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :code < 1207237192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :} < 1207237195 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ^ < 1207237209 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't think astyle will change current such line break < 1207237215 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :gnu indent can do it < 1207237225 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :astyle doesn't mess with line breaks at all, apart from at { } and ; < 1207237235 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indent goes further than astyle does in terms of messing around with the code < 1207237246 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well it can be set to add newlines on stuff like: < 1207237254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :foo(x); bar(y); < 1207237261 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or { blah blah } < 1207237270 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah yes that's what you said < 1207237277 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should read properly first heh < 1207237297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is running their Brainfuck reindenter on Lost Kingdoms to see if it works < 1207237310 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I spotted one bug already: blank lines in the source break it < 1207237320 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh? link to that reindenter? < 1207237342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I pasted it once, but it'll be easier to paste it again than to find the link < 1207237344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well lost kingdoms will be a mess < 1207237351 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a part of my collection of esolang modes for Emacs < 1207237357 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it was auto generated after all < 1207237365 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from basic I think < 1207237373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I know < 1207237382 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it'll be a good test case, I hope < 1207237391 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1207237392 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :torture-test case, if nothing else < 1207237400 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hahah < 1207237403 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've had the idea of converting it to Fugue at some point < 1207237414 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that would last several years in terms of the generated music < 1207237427 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'll need to come up with a portable way to do it < 1207237427 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well brainfuck already lacks very much context info < 1207237432 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it would expand even more < 1207237444 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :basic to befunge directly would probably work better < 1207237445 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Prelude is normally shorter than BF because you can optimise constants < 1207237455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Prelude? < 1207237461 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :some IDS isn't it? < 1207237463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Prelude converts to Fugue < 1207237471 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, you misread Fugue as Funge < 1207237479 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah yes I did < 1207237482 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a music-based programming language < 1207237486 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah I see < 1207237499 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wrote a hello world in it, compiled from BF < 1207237509 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1207237521 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I managed to make a compiler system, but it was sufficiently nonportable that I don't think it would run on any computer other than the one it ran on < 1207237531 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1207237539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, not posix then? < 1207237554 0 :shinkuzin!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1207237562 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I generated output in a Fugue precursor output, then used VBA on Word to generate a stream of keystrokes that would type the output into a proprietary MIDI editor that happened to be on that computer < 1207237577 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I had to heavily customise its keymappings first to avoid needing to use control or alt < 1207237580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eww < 1207237593 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to find a better way < 1207237599 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, why not just generate midi using some library for it? < 1207237611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think there are libraries for midi < 1207237613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: this was back in my Windows days < 1207237618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207237620 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the concept of using external libraries was a joke, more or less < 1207237633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah dll is a joke < 1207237638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :apart from system dlls < 1207237645 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, they're jokes too < 1207237650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well ppl use them < 1207237661 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only because they have no choice < 1207237665 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207237695 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well rosegarden or timidity must have midi parsing code < 1207237708 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :one is a editor for midi (rosegarden, KDE based) < 1207237718 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I have both installed < 1207237720 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and the other is a software midi player < 1207237731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :anyway, here it is: http://pastebin.ca/969225 < 1207237736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's still a little buggy, though < 1207237750 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well timidity is certainly buggy yes < 1207237756 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I use hardware based midi :) < 1207237772 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it wasn't timidity I was referring to, which I'm pretty fond of < 1207237777 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but to esolangs.el, which I just pasted < 1207237780 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# < 1207237781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ("(:\\*)" . font-lock-constant-face) < 1207237781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# < 1207237781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ("(::\\*\\*)" . font-lock-constant-face) < 1207237781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# < 1207237781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ("(:::\\*\\*\\*)" . font-lock-constant-face) < 1207237783 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :# < 1207237785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : ("(::::\\*\\*\\*\\*)" . font-lock-constant-face) < 1207237787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1207237791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it goes on like that < 1207237850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: because Emacs regexps aren't very powerful < 1207237856 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so they can't recognise Underload constants < 1207237862 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207237887 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, are you sure there are no pcre bindings or such for emacs? < 1207237900 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I seem to recall that there are python bindings < 1207237904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pymacs or something < 1207237913 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably, but they don't hook into Font Lock AFAIK < 1207237931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok true < 1207237972 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :how much Emacs-lisp do you know? < 1207237975 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not very good at it < 1207238013 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I have resorted to evil tricks in the past, like doing string processing on numbers because Emacs couldn't handle them as numbers due to it not supporting a full 32-bit range for integers < 1207238091 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : how much Emacs-lisp do you know? < 1207238093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not much < 1207238107 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just coded a bit for erc < 1207238113 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so not very much indeed < 1207238121 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pity, I was hoping someone who knew more than me could go through it and say "you're doing it all wrong! you should be doing it like this!" < 1207238132 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tried #emacs ? < 1207238156 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not really worth bothering them with something as pointless as esolangs.el until the code is a bit more mature < 1207238172 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(e.g. the BF indenter failing on blank lines problem, but I think I know what's causing that) < 1207238198 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't support GNU-style indentation, though, just the equivalents of K&R and BSD, and any mix between them < 1207238228 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it preserves newlines and doesn't add new ones, at the moment, so they determine what sort of indentation is wanted < 1207238267 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I'm planning to add an auto-indenter that sorts out newlines: remove existing newlines, change [ and ] to \n[\n and \n]\n, change \n[\n-\n]\n to [-], and reindent < 1207238468 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :BTW, C-g seems to fail as an interrupt key on GTK Emacs on Ubuntu, which is annoying < 1207238513 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :typedef int bigint_t __attribute__ ((__mode__ (__TI__))); <-- seems that give 128 bit integers, a gcc hack of course < 1207238515 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm... < 1207238576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no idea about gtk emacs < 1207238601 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: gcc should support 2^n bit integers for all n >= 3 < 1207238606 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I doubt it does, though < 1207238608 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :__int128_t hm __uint128_t < 1207238618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, "should"? < 1207238624 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what should the types be called? < 1207238625 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in my opinion < 1207238631 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and why not just use int128_t? < 1207238638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's reserved by C99 for that purpose < 1207238644 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no clue < 1207238649 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :an implementation is allowed to define intanything_t < 1207238664 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for any positive integral value of anything that's a multiple of CHAR_BIT < 1207238669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :int12_and_a_half_t? < 1207238682 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait that sounds like TURKY BOMB < 1207238684 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the _least and _fast versions can have any positive integral value because padding is allowed < 1207238699 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I still want an "_most" < 1207238707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to define not bigger than this < 1207238746 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :int_most16_t would therefore be int on DOS, short on Linux, and not implementable at all on some 32 bit DSPs? < 1207238748 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway I lack any clue about printf modifier for int128_t < 1207238761 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, aye that would be the case < 1207238769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it could be char too < 1207238772 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if they had used int128_t, then they would have put a relevant printf modifier in stdint.h < 1207238774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as I said at most < 1207238784 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CHAR_BIT is 32 on some DSps < 1207238790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ouch < 1207238809 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so a byte there is 32 bits XD < 1207238812 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207238821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they can't sensibly address anything smaller without using bitwise arithmetic < 1207238822 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is a DSP exactly < 1207238827 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :digital signal processor < 1207238842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207238842 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a bit of hardware designed to do numerical computations that are useful for processing signals < 1207238854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so they're really good at doing Fourier Transforms, for instance < 1207238867 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :generally speaking they have some ridiculously specific asm instructions < 1207238889 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And fancy addressing modes, like hardware-based circular buffer access. < 1207238901 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, and I've actually used bit-reversed addressing < 1207238910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ grep -R int128 /usr/include/ < 1207238910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :/usr/include/valgrind/libvex_ir.h: Ijk_Sys_int128, /* amd64/x86 'int $0x80' */ < 1207238911 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is all < 1207238915 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1207238933 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that one is not even related < 1207238954 0 :jix!n=jix@host-091-096-144-024.ewe-ip-backbone.de JOIN :#esoteric < 1207238963 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I got exactly the same results as you on that grep < 1207238992 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ grep -R int128 /usr/x86_64-pc-linux-gnu/ < 1207238997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hits some binary matches < 1207239009 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ strings /usr/x86_64-pc-linux-gnu/bin/strip | grep int128 < 1207239010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :unsigned __int128 < 1207239011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nice < 1207239091 0 :tejeez!unknown@unknown.invalid PRIVMSG #esoteric :dsp can also mean digital signal processing in general, not necessarily hardware < 1207239109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :heh, when I run strings on ick I get the error message Failed! almost at the end < 1207239115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : generally speaking they have some ridiculously specific asm instructions < 1207239116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like? < 1207239127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hahah < 1207239143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(rnd >= 0) && (rnd <= 3) < 1207239149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :debugging data < 1207239175 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :multiply together two registers and add the result to an accumulator, then load those two registers from memory through two pointers which are then incremented, then optionally store the value of another accumulator into memory < 1207239184 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, nice on a stripped binary I get a list of fingerprints at the end < 1207239185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but < 1207239187 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they are reversed < 1207239188 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a single asm instruction < 1207239194 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in SYOT < 1207239195 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for TOYS < 1207239208 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and the source doesn't have reversed fingerprint names anywhere < 1207239230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ok that is crazy < 1207239233 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, you can also subtract from the accumulator instead of add, and you can add or subtract 1, 2, or 3 words from the pointers rather than just incrementing < 1207239238 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what is the use for such an instruction? < 1207239245 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it actually has lots of uses < 1207239250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh? < 1207239255 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :generally speaking you run it in a loop < 1207239262 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see and? < 1207239264 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to do things like multiplying matrices < 1207239281 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and lots of calculations can be written in terms of multiplying matrices < 1207239281 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207239302 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've also seen it be used to take the squared magnitude of all complex numbers in a vector < 1207239306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why have you programmed for DSPs? < 1207239313 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :university project < 1207239316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207239331 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I did get a stripped-down version of INTERCAL running on PICs < 1207239335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so can a DSP do normal stuff? < 1207239335 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which are even less powerful < 1207239340 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, but not very well < 1207239346 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I know what a PIC is yes, < 1207239347 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because they tend not to have much memory < 1207239352 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I used one very simple once < 1207239355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :12Fsomething < 1207239356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :say a few kilobytes of RAM at once < 1207239361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :12F6*? < 1207239368 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I generally use the 16F series < 1207239380 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :12F would be even more primitive < 1207239381 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway I remember the serial port interrupt routine *shudder* < 1207239389 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it was, 32 instructions I think < 1207239401 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that sort of thing is enough to make me write the serial port routines in software < 1207239413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I did write one, in asm yes < 1207239427 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the university has a C to PIC compiler < 1207239435 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it was buggy and I preferred to write in asm < 1207239436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well with 1 kb ram... < 1207239444 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1207239448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1 kb program memory < 1207239451 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even less ram < 1207239453 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on a PIC, the RAM is measured in tens of bytes, normally < 1207239464 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I vaguely remember that one version I used had 56 bytes memory < 1207239467 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but most of them have more < 1207239469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah, don't remember exactly < 1207239494 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this explains why in PIC-INTERCAL, the NEXT stack has only 16 entries, and STASHes are limited to one member < 1207239496 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :12F629 it seems < 1207239510 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I store abstention statuses in 1-bit integers to save space < 1207239529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there is no such thing in C unless you use a bitfield, but some PIC C compilers support them anyway because they're so useful < 1207239546 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1207239566 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but you can't adress on bit-basis in pic iirc? < 1207239568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or can you? < 1207239575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can < 1207239575 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think it was using bytes of some size < 1207239578 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :using bitwise instructions < 1207239578 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207239583 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207239588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a 'skip if bit n of register r is 0' instruction < 1207239593 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can on anything with bitwise < 1207239600 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is bitwise addressing, but only for literal addresses < 1207239603 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I mean, you can't take a pointer to a bit < 1207239603 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can't have bitwise pointers < 1207239632 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I think you could on some historical systems heh < 1207239637 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but INDF is a bit of a tricky way to emulate pointers anyway, especially if they're nested < 1207239646 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. a->b->c < 1207239649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1207239663 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's useful for accessing things in the wrong bank, though; that's often faster than bank switching < 1207239664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway it was years ago I coded for PIC < 1207239674 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't even remember most of the asm opcodes < 1207239683 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can still remember many of them < 1207239697 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :PIC asm is much better than x86 asm < 1207239703 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yes < 1207239705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is RISC < 1207239710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :x86 is CISC < 1207239719 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so so much more to keep track of on x86 < 1207239781 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, x86 isn't nearly as CISC as DSPs can be < 1207239789 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's more a medium instruction set computer < 1207239795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207239813 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, where is the source of PIC-INTERCAL? < 1207239822 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's in the C-INTERCAL compiler < 1207239823 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ick -P < 1207239834 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but most of the advanced features are disabled if you do that < 1207239836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207239871 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(INTERCAL parsing is sufficiently bad that other dialects of INTERCAL tend to get bolted onto something that has an INTERCAL parser built-in already) < 1207239887 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hahah < 1207239903 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Incidentally, I've done an university project DSP programming thing too, for our "Digital Signal Processors and Audio Signal Processing" course. < 1207239911 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, isn't it just a case of a bison/lex/yacc/whatever file < 1207239917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I can't remember which does what of them < 1207239922 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: have you /read/ it? < 1207239935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, nop I haven't looked at ick source < 1207239944 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the parsing takes place both in the flex file and in the bison file < 1207239967 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well what exactly is the difference between flex, bison and yacc? < 1207239970 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there are interactions both ways for various complicated reasons < 1207239976 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :flex generates lexical analysers < 1207239986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you give it a stream of characters, and it generates tokens < 1207239990 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah ok < 1207239995 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bison takes the tokens and gives you a parse tree from them < 1207240006 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yacc is the program that bison was based on, and is older < 1207240012 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207240038 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I have seen programs that bison fail at, and only byacc can handle < 1207240055 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, the two languages are slightly different < 1207240066 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but hopefully parser.y works in both bison and yacc < 1207240098 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well the file in question didn't work under normal yacc either, it needed byacc < 1207240109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a bit like writing files that are valid C and also valid C++; you can /almost/ do it just by writing C, but there are pitfalls to watch out for < 1207240131 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I can sort of imagine how to write a file like that, but it's hard to see how one would go about doing it accidentally < 1207240146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no clue, it was from some shell < 1207240161 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :netbsd mksh or something unusal like that < 1207240165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't remember exactly < 1207240176 0 :oklopol!n=nnscript@a91-152-141-232.elisa-laajakaista.fi JOIN :#esoteric < 1207240178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I have a collections of shells with an automated building system for them < 1207240190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, the build system unpacks and so on, written in bash < 1207240207 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :have you seen dd/sh? < 1207240217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I do have a few called sh < 1207240223 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ ls /home/arvid/shells/ < 1207240223 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :README akanga bash ccsh dash fish ksh93 oksh pdksh psh sash sh shellbuild-lib tcsh < 1207240223 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :STATUS ash build compile-tools es ftsh mksh osh posh rc scsh shellbuild shish zsh < 1207240247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://intercal.freeshell.org/ talks about what's effectively an esolang that they call dd/sh, which is basically POSIX sh + its builtins + dd < 1207240257 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah it was some ash variant that needed byacc < 1207240268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the result is Turing-complete and bf-complete, although they recommend that you also use rm to avoid a tempfile leak < 1207240307 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway you can code lots of things with just shell built ins < 1207240316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :at least if you use bash or ksh or some other modern shell < 1207240337 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :zsh you can even do a irc *client* in pure zsh < 1207240350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :may be possible in bash but I wouldn't know how < 1207240360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bash has no way to select AFAIK < 1207240364 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :zsh was always better at piping < 1207240367 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah < 1207240374 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There's at least one IRC client in bash. < 1207240375 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you can do loadables in bash however < 1207240382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, pure bash? < 1207240387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and irc client, not bot < 1207240392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wrote an irc bot in bash < 1207240393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :works fine < 1207240398 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bots are easier < 1207240402 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1207240426 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I got ThutuBot to connect to freenode on several occasions, but I never managed to get it to join a channel < 1207240447 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it was confused by spurious control chars coming out of telnet, but am not sure < 1207240468 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm quite sure it was pure bash; and a client, yes; I used it because it was the smallest binary to download with a GPRS link. I just can't seem to remember the name. < 1207240487 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a file written in pure bash isn't exactly a 'binary' < 1207240503 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you should have used netcat < 1207240513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I probably should < 1207240521 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :how do you use netcat to get a two-way link going? < 1207240536 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, see how envbot does it? < 1207240552 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :where's the link to envbot source? < 1207240565 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://envbot.org/trac/browser/anmaster-trunk/transport < 1207240571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :select the netcat module I guess < 1207240585 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it does use some named fifos < 1207240588 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :don't worry about it < 1207240599 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, I was using them too < 1207240610 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I did make a named fifo alternative script for a University project < 1207240626 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh? < 1207240627 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that was a wrapper around a shell command that opened various pipes and told it the file descriptors of the ends < 1207240655 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as you can see from the comment, I recommend other tools < 1207240675 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :According to my irclogs I had to port the bash IRC client to use netcat instead of the /dev/tcp/foo pseudo-files because Debian's bash is compiled without those. But I _still_ haven't mentioned the name of the client in that conversation. < 1207240694 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: that's pretty impressive < 1207240729 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well yes, I know debian is stupid < 1207240740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there are various rants in envbot source about it < 1207240790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :42 dev-tcp: < 1207240790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :43 The bash you use must support the pseudo device /dev/tcp. Debian is known < 1207240790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :44 to disable this. Most other distros are sane and have it on. < 1207240793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://envbot.org/trac/browser/anmaster-trunk/README < 1207240796 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just one example < 1207240820 0 :ais523_!n=ais523_@147.188.254.202 JOIN :#esoteric < 1207240830 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :OK, this is me online using netcat < 1207240836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1207240842 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Heh, I've been trying to find the client name earlier, too; my irclogs have something like (translated) "I wonder what was the name of that bash irc client. Can only find discussion about it, not the name of the thing." < 1207240843 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :backspace may not work < 1207240846 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :doesn't strike me as being very different from telnet < 1207240860 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :let me test: b < 1207240869 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :said b yes? < 1207240876 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :yes, it works, I think it's reading from stdin < 1207240885 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :I typed a backspace b < 1207240893 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207240901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, of course it reads from stdin < 1207240903 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :and I'm benefitting from stdin's line-buffering < 1207240906 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where else would it read from? < 1207240929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if you can do ctcp here? < 1207240934 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ^ < 1207240961 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets annoyed at AnMaster for sending them lots of CTCPs < 1207240968 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :two= < 1207240971 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that isn't lots < 1207240977 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :three < 1207240985 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nah the first was a /me < 1207240986 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :you did an ACTION immediately beforehand < 1207240989 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207240999 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but most real clients doesn't show it as ctcp < 1207241003 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :and it arrived here, therefore you sent me three CTCPs < 1207241015 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, servers with channel modes that block ctcps, does not block /me < 1207241047 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :maybe they should if they're sent to an individual user rather than a channel < 1207241064 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nop they don't < 1207241076 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :but I suppose that blocking messages like VERSION sent to a channel would be even more important than blocking them against individual users < 1207241083 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yeah < 1207241100 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :the CTCP spec says that I'm meant to be able to put a CTCP in the middle of a line! Why did nobody respond? < 1207241101 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they do block ctcp (anything but ACTION) < 1207241114 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, because most clients do not understand that < 1207241127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mine showed a small box with \001 in it < 1207241129 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :this is as bad as that technically-correct-SGML website that someone, I think maybe pikhq, linked to a while ago < 1207241141 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh? link? < 1207241153 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :http://pikhq.nonlogic.org/test.html < 1207241153 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :it validated, but with lots of warnings about most browsers not understanding it < 1207241167 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://pikhq.nonlogic.org/test.html < 1207241180 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, as Deewiant just said < 1207241199 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :yes, messages can cross quite effectively on IRC < 1207241214 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :especially when I'm not paying attention in an effort to finish typing my message < 1207241225 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :or in this case copy/pasting < 1207241266 0 :ais523_!unknown@unknown.invalid PART #esoteric :? < 1207241321 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, of the browsers I tried only lynx could show that page < 1207241342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that single line deserves to be qdb'd < 1207241344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I tried: firefox, konqueor, links2, w3m and lynx < 1207241358 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think the client might've been this one, but the code really isn't very impressive. It seems to just sort-of alternate between reading the stdin and the IRC fd. http://www.darkwired.org/~dodo/code/junk/pre/bairc/releases/bairc-1.3.bash < 1207241363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, haha < 1207241377 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, don't have elinks installed < 1207241524 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :elinks doesn't seem to like it. < 1207241535 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1207241538 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lynx is best < 1207241545 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Firefox just shows a blank page with no title < 1207241558 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, same as all the others did basically < 1207241569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :except lynx < 1207241577 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Elinks shows "" as the title, a ""-labeled link to http://pikhq.nonlogic.org/foo and the text " ". < 1207241612 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the link works in lynx < 1207241645 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I actually visited that link in fizzie's comment, and started laughing < 1207241671 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :My version of lynx makes the whole "This stuff doesn't show at all, but only because HTML renderers suck." text the link, and the "Valid link" text isn't shown. Not quite sure how it's supposed to work, though. < 1207241687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, ah true < 1207241695 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207241696 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, but way better than the others < 1207241699 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yay! < 1207241711 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :now I just have to remember which commands I programmed into it < 1207241712 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, fizzie someone should file a bug to mozilla about that page breaking ;) < 1207241714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\hello < 1207241714 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, ais523! < 1207241717 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :\helop < 1207241719 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :\help < 1207241722 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :\hello < 1207241723 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, AnMaster! < 1207241728 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it's just got \hello and \quit at the moment < 1207241732 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :\quit < 1207241732 0 :thutubot!unknown@unknown.invalid QUIT :Client Quit < 1207241735 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah yes it does < 1207241736 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :What, no "!list"? < 1207241738 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(sorry) < 1207241754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :now I have to come up with something useful to do with the world's first IRC bot written in Thutu < 1207241772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, is it same as thue? < 1207241774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or? < 1207241779 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, it's my own language < 1207241786 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :think of it as Thue with regular expressions and flow control < 1207241789 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/Thutu < 1207241873 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, isn't Thue turing complete? < 1207241881 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so you could write a irc bot in thue? < 1207241886 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's Turing-complete < 1207241890 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I'm not sure about BF-complete < 1207241894 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1207241895 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because its I/O is somewhat primitive < 1207241908 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Thutu is nicer to work with, anyway < 1207241921 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :btw it would be possible to do a irc bot in befunge without any external tool < 1207241923 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just painful < 1207241938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is the SOCK fingerprint < 1207242424 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207242435 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul (:aSS):aSS < 1207242435 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :(:aSS):aSS < 1207242446 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul (x):::::*****S < 1207242447 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :xxxxxx < 1207242463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :be careful with it, though, it'll go into an infinite loop on most invalid input < 1207242467 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to \ul, that is < 1207242530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, I'm not sure, maybe it'll just reply with garbage < 1207242538 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul (((unbalanced < 1207242548 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul (did I break it?)S < 1207242557 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, it goes into an infinite loop < 1207242561 0 :thutubot!unknown@unknown.invalid QUIT :Remote closed the connection < 1207242572 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207242641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon ul bf http://pastebin.ca/raw/367774 < 1207242686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul ((!ul )Sa(\ul )~*aS(:^)S):^ < 1207242687 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (\ul ((!ul )Sa(\ul )~*aS(:^)S)):^ < 1207242701 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ul (EgoBot, are you working?)S < 1207242703 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot, are you working? < 1207242716 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, there must have been a mistake in the input I gave to ThutuBot < 1207242726 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, of course < 1207242765 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^ < 1207242765 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (\ul ((!ul )Sa(\ul )~*(:^)*aS(S)S):^)S < 1207242767 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :ul ((!ul )Sa(ul )~*(:^)*aS(S)S):^ < 1207242794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, Egobot's mishandling backslashes. That could be bad for this... < 1207242809 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :escape it? < 1207242824 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :writing a quine that escapes backslashes in itself is harder < 1207242833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because all characters are given literally in Underload < 1207242845 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe I should just switch thutubot to a different escape character < 1207242847 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\quit < 1207242847 0 :thutubot!unknown@unknown.invalid QUIT :Client Quit < 1207242931 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207242935 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+hello < 1207242935 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, ais523! < 1207242943 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242944 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242947 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242947 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242949 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242949 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242951 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242951 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242952 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :\quit < 1207242953 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :spam < 1207242953 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242953 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242955 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242955 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :!ul (+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^)S < 1207242957 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :+quit < 1207242957 0 :thutubot!unknown@unknown.invalid QUIT :Client Quit < 1207242957 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :+ul ((!ul )Sa(+ul )~*(:^)*aS(S)S):^ < 1207242958 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+quit < 1207242971 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, it works, anyway < 1207242989 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207242999 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's the first time I've done a bot loop in pure Underload, I think < 1207243028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it's meta-esolangy because the thutubot Underload interp's written in Thutu, and the EgoBot Underload interp's written in Brainfuck (by Keymaker) < 1207243379 0 :CakeProphet!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1207243424 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, CakeProphet! < 1207243438 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yay, oklotalk has a parse < 1207243439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :r < 1207243443 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207243444 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1207243446 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207243447 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1207243450 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Hello you bastards. < 1207243460 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has written an IRC bot in Thutu < 1207243462 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :even CakeProphet may have heard about oklotalk, it's just taken me that long. < 1207243465 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which runs Underload programs < 1207243471 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ais523: cewl :D < 1207243477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: I'm vaguely aware of it < 1207243483 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but can't remember much about what it does < 1207243487 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk? < 1207243488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+ul (:aSS):aSS < 1207243488 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :(:aSS):aSS < 1207243493 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: yes < 1207243500 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well it's a fairly large thing < 1207243515 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :currently, i just have a prefix-kinda parser for it < 1207243523 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because the actual parsing is not that easy < 1207243525 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :....no. no I have not. < 1207243546 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :does anyone want to start a life insurance company with me? I have a brilliant idea to defeat all competition. < 1207243547 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :current factorial (= fact {(-> 1 1) (-> n (* n (out (' (- n 1)))))}) (fact 4) < 1207243578 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with actual oklotalk parsing it would be,,, < 1207243596 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :looks like demented Lisp. < 1207243604 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fact={1->1;N->N*out'(n-1)};fact 4 < 1207243617 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: it's sexps, so, duh < 1207243635 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :rofl... sexps. What a dirty phrase. < 1207243643 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I have a massive lang project which is about 2/3 of a spec and a parser at the moment < 1207243649 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Did you know Christianity has a lot of sects? < 1207243658 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so probably at the same stage as oklotalk < 1207243660 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk doesn't have much to do with lisps < 1207243674 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's just sexps are trivial to parse < 1207243696 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207243703 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suppose that Underload uses sexps in theory < 1207243722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's really just that balanced parens are the only things in the syntax that don't parse as single characters < 1207243749 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well then it has nested structures, that's not really sexps automatically < 1207243762 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sexps = balanced parens, mostly, in my view < 1207243764 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think sexp implies (verb object object*) < 1207243770 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :so... when I start a life insurance company. < 1207243771 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I'm sure that a Lisper would tell me that I was wrong on that < 1207243771 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is that so? < 1207243779 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I am going to hire assassins to murder people who use other company's plans. < 1207243787 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :until the company's go out of business from having to pay out so much < 1207243787 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, then i'd say almost every language uses sexps < 1207243795 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: as a loss-leader kind of thing? < 1207243796 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(oklotalk doesn't, still) < 1207243803 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...yes. < 1207243837 0 :RedDak!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1207243849 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :the same concept could be applied to auto insurance. Simply sabotage people's vehicles in order to cause accidents. < 1207243875 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...but not flood insurance. Unless you can bomb some kind of dam or levi. < 1207243888 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: or control the weather < 1207243894 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :that also < 1207243894 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that would affect you too < 1207243902 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless you did it in areas far from where your customers were < 1207243971 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :though it would be hard to get away with repeated murder. Perhaps the auto sabotage is more feasible. < 1207243996 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: doing it one at a time would be too small-scale to make any differences < 1207244019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :break into a company that makes cars, and alter the firmware so you can cause large-scale accidents remotely < 1207244023 0 :Sgeo[College]!i=897d6896@gateway/web/ajax/mibbit.com/x-81f9f33f10131bde JOIN :#esoteric < 1207244048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+ul (Hello, Sgeo!)S < 1207244048 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, Sgeo! < 1207244062 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...haha. We are demented geniuses. < 1207244071 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Hi all < 1207244073 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hm? < 1207244094 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thutubot's a Thutu program double-piped to netcat < 1207244098 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that runs Underload programs < 1207244108 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it also has a +hello command which was just a test < 1207244109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+hello < 1207244109 0 :thutubot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, ais523! < 1207244122 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :+gtfo < 1207244132 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :IT'S NOT WORKING < 1207244144 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: I don't know that abbrev, so it's unlikely that my bot will < 1207244150 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Can Underload support PSOX? >.> < 1207244159 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :gtfo == get the f*** out < 1207244174 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ais523, gtfo = "get the fuck off" or "get the fuck out" depending on the context. < 1207244184 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: you'd have to embed literal \0s into strings < 1207244187 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and most interps couldn't handle that < 1207244190 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :it's a... 4chanism < 1207244194 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :oh :( < 1207244215 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\0 is a very inconvenient character to type < 1207244226 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :I guess maybe PSOX should support some way to work with clients that can't just send nulls < 1207244243 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :In the magic, I guess < 1207244244 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :besides, Underload doesn't have any input < 1207244258 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it's not going to be able to communicate very well with PSOX anyway < 1207244262 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well,... wait, how can there be a bot with no input? < 1207244266 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Oh, n/m < 1207244268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the bot's running on Thutu < 1207244292 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I do like the idea of a bot that would send out random messages every now and then < 1207244311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back < 1207244319 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that way, it wouldn't need input < 1207244409 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :rofl. nice. It's like how I deal with annoying people. < 1207244418 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :ignore them. < 1207244440 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: wha? < 1207244455 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric : it could also send out regular PINGs to Freenode; if you ping a server often enough, it doesn't ping you back < 1207244473 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :client: "ping ping ping ping ping ping ping" server: "stfu I'm ignoring you." < 1207244479 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :What ab... oh n/m < 1207244489 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :I thought you felt insulted about something someone said < 1207244498 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... < 1207244499 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1207244502 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: no, it PONGs you back instead < 1207244542 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :........... < 1207244549 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I don't think I have ever < 1207244563 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :willingly talked to a more pedantic crowd than you guys. < 1207244590 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, I've been on comp.lang.c, and I think that they're slightly more pedantic than #esoteric, but they're an exception < 1207244599 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they basically all make their living out of being pedantic < 1207244616 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...well yeah. But I don't talk to those people. All complang communication channels are like that. < 1207244617 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Am I pedantic? < 1207244624 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: no, just persistent < 1207244631 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I don't mind it all that much < 1207244631 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :>.> < 1207244642 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...#esoteric is more like... theoretical pedantic. < 1207244660 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we refuse to be bound by the mundane shackles of common sense and efficiency < 1207244669 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Am I ever persistent about things other than PSOX? < 1207244671 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :lol ais523 < 1207244688 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: not sure, you're so persistent about PSOX we haven't had the chance to check < 1207244702 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but of course, that sort of persistence leads to a better program overall < 1207244711 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can get in that sort of mood over INTERCAL sometimes < 1207244716 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'm sort of in that mood at the moment < 1207244764 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I'm pretty non-pedantic. for a programmer. I consider it a good thing. < 1207244803 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :many languages need pedantry to work properly < 1207244812 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can't be sloppy with Malbolge, for instance < 1207244821 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...yeah. They do. But people don't. < 1207244832 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I suppose that makes sense < 1207244845 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :thereis a difference in communicating with people and machines. < 1207244862 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :my guess is that people who stay in complang channels are so used to getting into a pedantic frame of mind for talking to computers that it boils over into their interaction with humans < 1207244870 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :...yeah. < 1207244884 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, I'm naturally pedantic anyway, which is maybe why I got into computer programming < 1207244890 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :-shrug- it's not bad. Just slightly annoying. < 1207245158 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION saw no pedantry < 1207245173 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : yay, oklotalk has a parse < 1207245174 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where? < 1207245181 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :on my computer < 1207245189 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i will put it on an irc bot once it can do anything < 1207245193 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1207245197 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :once there's something it can do. < 1207245211 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because the code isn't really meant for reading < 1207245215 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's not my style < 1207245230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, can you give an example of a oklotalk program? < 1207245230 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i did use multiple files this time, though! < 1207245230 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: what do you mean by 'meant for reading' < 1207245239 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :guess i'm growing up or something < 1207245241 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :do you mean 'nicely commented so that others can follow' < 1207245244 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207245245 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and list some key features of it < 1207245260 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or 'full of idioms, in-jokes, and other things that make the program harder to read but are a fun challenge'? < 1207245271 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: well, the fact i use lisp syntax currently kinda ruins explaining it < 1207245275 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because the syntax is part of the fun < 1207245287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so have an example or not? < 1207245294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and key features < 1207245295 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll make a rational number class once i get a few things working < 1207245299 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. when I wrote clc-cset.c, which handles CLC-INTERCAL character sets, I filled my C code with Perl idioms, because CLC-INTERCAL is written in Perl < 1207245318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so no example then? sigh < 1207245326 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: well i can show the factorial... < 1207245331 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, paste < 1207245338 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(= fact {(-> 1 (outn 1)) (-> n (outn (* n (' (- n 1)))))}) (fact 4) < 1207245343 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is a simpel recursive one < 1207245345 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :explain? < 1207245347 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*simple < 1207245357 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, explain it < 1207245357 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well that's sexps, so (function arg arg arg...) < 1207245363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric := ? < 1207245365 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(= < 1207245366 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1207245368 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :list: [elem elem elem ...] < 1207245383 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lambda: {expression expression expression ...} < 1207245385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ok, doesn't seem too hard to parse < 1207245396 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: this is the simple lisp syntax < 1207245404 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which has nothing to do with oklotalk's actual syntax < 1207245412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so same with the oklotalk syntax? < 1207245416 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :care to show it? < 1207245428 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's just so simple to parse i made a parser for it to be able to code stuff without parsing manually < 1207245430 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1207245437 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can show the factorial again < 1207245439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait a sex < 1207245451 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um you mean sec < 1207245452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :... < 1207245465 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Fact={1->1;N->N*out'(n-1)};fact 4 < 1207245471 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean sex, but by that i mean sec. < 1207245488 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :basically, just a simple pattern matching < 1207245496 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :+quit < 1207245496 0 :thutubot!unknown@unknown.invalid QUIT :"ThutuBot quitting" < 1207245498 0 :ais523!unknown@unknown.invalid QUIT :"(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"" < 1207245502 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well the second expression in the lambda may be a bit complicated < 1207245515 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: look, you made ais523 leave < 1207245518 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :GOOD JOB < 1207245529 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Fact={1->1;N->N*out'(n-1)};fact 4... N*out'(n-1) means N * (out (' (n - 1))) < 1207245535 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :where out and ' are unary functions < 1207245535 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207245536 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::<< < 1207245541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk was too much for them < 1207245542 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but that syntax doesn't seem too hard? < 1207245554 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it is not *that* hard < 1207245565 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but it does have quite a few quirks < 1207245571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like? < 1207245571 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for instance, it's 100% robust < 1207245574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1207245579 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :any string is a legal program < 1207245580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you mean no side effects? sure < 1207245586 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1207245595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so cat /dev/urandom is? < 1207245598 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even non-ascii chars? < 1207245617 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, in theory, but they will be nops, mostly < 1207245630 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because an unknown character means a one-character variable < 1207245635 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :#vt"drwolH">:#,_ @ < 1207245635 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : >"lo le">:#,_a,@ < 1207245641 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what would that program do? < 1207245646 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is befunge < 1207245651 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait a mo < 1207245652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but what would it to in oklotalk < 1207245663 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :do you know of any programming languages besides Perl that can evaluate undefined variables to null values? < 1207245664 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it will take me a minute to parse that < 1207245677 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: oklotalk does variable -> atom(its name) < 1207245680 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, hm bash evaluates them to empty strings < 1207245697 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so yes empty or unset < 1207245711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, string and arrays being the only data types of bash < 1207245712 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :I ask because I am looking for a new language to write poems in. I have been using Python lately... but I might switch to Perl or something else. < 1207245714 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is because 5 + 2 actually sends the message [+ 2] to 5 < 1207245741 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, however you need $ at the start of variable names of course < 1207245748 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet, also not sure if awk would do it < 1207245755 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207245773 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: i'll tackle your program now, wait a mo -> < 1207245785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : this is because 5 + 2 actually sends the message [+ 2] to 5 < 1207245786 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm.... < 1207245791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that sounds like smalltalk? < 1207245803 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure, if "sending a message" sounds like smalltalk < 1207245808 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it does < 1207245811 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to me ;P < 1207245813 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1207245827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or objc < 1207245833 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :every OO-based language and functional language is about messages, though < 1207245837 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's justt terminology < 1207245839 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*jsut < 1207245841 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*just < 1207245868 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :most OO-based languages and functional languages don't have messages < 1207245871 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well what does my program do? < 1207245878 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, indeed C++ doesn't < 1207245885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :objc and smaltalk does < 1207245888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :smalltalk* < 1207245893 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, indeed, oklotalk and smalltalk have a lot in common, which is quite ironic, because i had no idea what smalltalk was when i came up with the name and the semantics for oklotalk < 1207245918 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lament: they pass information around < 1207245937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, or want a harder program: < 1207245938 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :#vtf2*2+"olleH">:#,_'>11p><"dlrow">:#,_'>fb+0p@ < 1207245941 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :any high-level language will be about sending messages, if you want to think that way < 1207245941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about that one? < 1207245948 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: i haven't started yet < 1207245969 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: "passing information around" is more general than "sending messages" < 1207245985 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...except for the fact smalltalk *did* inspire the *name* < 1207245988 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lament: okay < 1207246003 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :how so? < 1207246015 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know any exact definition for message-passing < 1207246015 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :... -facepalm- I don't like where this is heading. < 1207246016 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :because it's up to the object to dispatch on the messages < 1207246017 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, tell me when you are done, I may be afk < 1207246069 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so the dispatch happens at runtime at the discretion of the object < 1207246077 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :late binding < 1207246084 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1207246098 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, all i meant was passing information around < 1207246101 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :"I got this message, let's see what i can do with it" < 1207246120 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... sounds like lament is talking about the difference between static and dynamic typing. < 1207246129 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is he? < 1207246129 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :sort of. < 1207246142 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i would say binding < 1207246146 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which is a bit different < 1207246163 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :-shrug- whatever. my patience with comp terminology is growing thin. < 1207246167 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207246168 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :lately. < 1207246195 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :take it easy, man, you seem goddamn tense. < 1207246220 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, result? < 1207246227 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: with dynamic typing it is still not clear who performs the dispatch < 1207246250 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: the interpreter could tell the object "hey, you got this message '+', figure out what you can do with it" < 1207246255 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: haven't started, sorry, people keep talking. < 1207246262 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, that sounds like objc < 1207246270 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :an object can pass it on to someone else < 1207246281 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :CakeProphet: or, it could look at the object and say "hmmm, this object doesn't look like it can add stuff, so i'll just die with an error" < 1207246282 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, just ignore convos on irc and do it? < 1207246287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1207246340 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: almost done < 1207246378 0 :Tritonio_!n=Tritonio@150.140.229.252 JOIN :#esoteric < 1207246387 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does the exercises on the professor's slides and goes back to chat < 1207246391 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[(> [#vt "drwolH"] (: #)) (@ _ _)] < 1207246391 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[(> (> "lo le") (: #)) _a @] < 1207246400 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: would become these two lists < 1207246419 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :also a few evaluations would take place, most of which make not much sense < 1207246445 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1207246451 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, but what would it output or whatever? < 1207246459 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1207246463 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll evaluate through < 1207246468 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you just asked for the parse tree, iirc < 1207246468 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, anyway there were two lines to eeach < 1207246470 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :each* < 1207246482 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is the... first one i think < 1207246486 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ah ok < 1207246487 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1207246519 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[(> (> "lo le") (: #)) _a @] ==> [(> #t (: #)) _a @] ==> [#t #_a _@] < 1207246531 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so second line would evaluate to #t #_a #@ < 1207246537 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(not _@) < 1207246541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is a list of atoms < 1207246555 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if the first line has no side-effects, this will be the result as well < 1207246573 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it doesn't, unless you've given new semantics to the operations < 1207246610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :umm wait, actually [#t $_a $@] < 1207246638 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk currently has two kinds of atoms, the name atom policy is a bit obscure atm < 1207246681 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*-name < 1207246728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, I see < 1207246739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and what would the second program evaluate as? < 1207246747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lessee < 1207246779 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, after what, what about mycology ;) < 1207246887 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[#vtf 2] * 2 + "olleH" > (: #), _ ' (> 11) p (> (< a)), 0 q _ < 1207246888 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(> (< "dlrow")) > (: #), _ ' (> (fb (+ 0))) p (@ _) < 1207246896 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: just two uninteresting lists again < 1207246899 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i can evaluate... < 1207246904 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1207246918 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't actually chosen semantics for everything < 1207246925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1207246925 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :unary < for a string < 1207246933 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wonder what that would do... < 1207246951 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk generally tries to ensure every application, with primitives, means something < 1207246969 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why? oklotalk generally doesn't answer that. < 1207246969 0 :Judofyr!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1207246982 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Turn the string into anumber, then do < on that number? < 1207246990 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's unary < for a number? < 1207246993 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(< 5) < 1207247004 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :curry "<" with 5 as left parameter? < 1207247006 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1207247027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so what about a string zzzzzzzzzzzzzzzzzzzzzzzzzz just? < 1207247027 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ACTION was thinking it meant "subtract one" < 1207247027 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that wouldn't be very oklotalky, because currying isn't really supported < 1207247032 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :But currying might be better < 1207247032 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Although if nothing comes after it.. < 1207247033 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: a lowercase string is a function application < 1207247060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :zzzz... would be parsed as (zzzzz... _), meaning "evaluate function zzzzz... with _ as param" < 1207247065 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :< string means subtract one from string < 1207247066 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, lower case == a-z? what about åäö? < 1207247068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :_ is what it is in peröl < 1207247069 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*perl < 1207247073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and utf8 or not? < 1207247080 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric : number will never happen automarically in oklotalk < 1207247134 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*automatically < 1207247139 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if yes, then åäö as I sent them would be several codes < 1207247143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because they are utf8 < 1207247150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: char is a number with #chr type-tagged < 1207247153 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's a bignum < 1207247156 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207247163 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207247171 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, string -> number, subtract one, number ->string < 1207247172 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :there's just lists, atoms and bignums in oklotalk < 1207247175 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, what would ascii \1 do? < 1207247177 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or \4? < 1207247182 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :operator characters < 1207247187 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :meaning (< string) would return a string < 1207247189 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :apply function \1 to param < 1207247189 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and they do what? < 1207247200 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well they will evaluate to the corresponding atom < 1207247204 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :$\1 < 1207247204 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sigh < 1207247219 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so what is a ¤? < 1207247229 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: strings will never be automatically converted to numbers in that fashion < 1207247237 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, up for this one? < 1207247238 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :except perhaps as like base 256 < 1207247240 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :" raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@ < 1207247246 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, :) < 1207247250 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what character is that? < 1207247259 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, the last one is a string < 1207247266 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :two characters? < 1207247266 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, the ¤ was a char < 1207247280 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ¤ is one char < 1207247280 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :...... < 1207247283 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :get utf8 < 1207247283 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :duh < 1207247286 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207247289 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(mirc) < 1207247305 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, it is the generic currency symbol < 1207247309 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :do it again < 1207247313 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i may have utf on now < 1207247313 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :¤ < 1207247317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :darn :P < 1207247328 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :¤ < 1207247330 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1207247333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, an x with a o on, the o is filled so you don't see the x behind < 1207247340 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know what it is < 1207247344 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but it won't show < 1207247344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just the bits sticking out < 1207247356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ok, what does the program: " raey eht ni nettirw saw elpmaxe sihT" >:#,_ "AMOR"4#@(MM+IIX\-\-+.)a,@ < 1207247362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :evaluate to in oklotalk < 1207247368 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and tried a real OS? < 1207247373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Linux, or *BSD < 1207247375 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll parse it... < 1207247379 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've tried em < 1207247385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, err wait < 1207247388 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mispaste < 1207247391 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on no < 1207247393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it was correct < 1207247406 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just line broken by irc client made me confused < 1207247465 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :" raey eht ni nettirw saw elpmaxe sihT" > (: #), _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @ < 1207247470 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :an uninteresting list < 1207247480 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :" raey eht ni nettirw saw elpmaxe sihT" > (: #) <<< first element < 1207247482 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's evaluate < 1207247495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1207247502 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :" raey eht ni nettirw saw elpmaxe sihT" > "" << tailed an atom -> converted to string, tailed string < 1207247507 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :"You ask this question after class" < 1207247510 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this evaluates to true < 1207247512 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or #t < 1207247514 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College], ? < 1207247539 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what my professor just told me after I asked something < 1207247545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College], what did you ask? < 1207247549 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so #t, _ "AMOR" 4 #@ (MM + IIX \ _ \ - + . _) a _, @ _ <<< cannot be evaluated without knowing _ < 1207247549 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, hm interesting < 1207247557 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and what does _ do? < 1207247562 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's what it is in perl < 1207247572 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which, btw, is another re-invention < 1207247575 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, I don't know perl < 1207247578 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :How does Access define the table on the left and the table on the right, because it's not based on what it looks like in the Query Design view < 1207247580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tell me what _ does < 1207247582 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's function params < 1207247594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so it will give a syntax error then that program? < 1207247597 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :F = { _ * 8 }; f 7 ====> 56 < 1207247610 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: syntax errors do not exist < 1207247618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so what will the program do? < 1207247634 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you can do errors, with continuations, but they will generally not be automatically created for you if you do something silly < 1207247642 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: depends on _ < 1207247650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, a simple one then, a bit of C code: k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m; < 1207247656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from a hash function < 1207247657 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because you are applying stuff to it that cannot be applied stuff to < 1207247661 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so _ will be applied to it < 1207247671 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk has a very weird set of rules for application.. < 1207247676 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, assuming it was the whole program I pasted, what would happen? < 1207247680 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha :D < 1207247685 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that might actually do something < 1207247690 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1207247717 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmmm.... < 1207247765 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait, i have a girl stuck to me < 1207247770 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i'll continue < 1207247773 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh? < 1207247777 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a child? < 1207247779 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nm :D < 1207247784 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no more like a woman < 1207247798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so esolangs are more interesting heh < 1207247809 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k = p_key -> p_key; <<< actually i don't recall what i desided to do in this situation < 1207247835 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :could be (k = p_key) -> p_key, which matches _ into both k and p_key, and returns (p_key _) < 1207247838 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :asd'fkl < 1207247841 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my cell phone... < 1207247842 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1207247845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, you want something else? more C code? http://rafb.net/p/DRWbPE18.html would that do anything in oklotalk? < 1207247854 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a simple crc function < 1207247943 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay got rid of that too < 1207247950 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the phone call that is < 1207247954 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :let's think < 1207247961 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, that c example with p_key < 1207247971 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1207247973 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1207247991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, want the whole function it came from? < 1207248009 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/DenLGQ36.html < 1207248017 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k = (p_key -> p_key); was the other possibility, i'm fairly sure (p_key -> p_key) would be a lambda, because you cannot do -> in a normal expression < 1207248025 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or... can you 8D < 1207248031 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :why not, why not... < 1207248035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is ->? < 1207248041 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-> pattern matches < 1207248042 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :on _ < 1207248050 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well... < 1207248075 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Bye all < 1207248085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I start to realize why you haven't coded an interpreter for it yet < 1207248087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College], cya < 1207248092 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :let alone a compiler < 1207248104 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :{[$Init N] -> Val = N; [$+ N] -> Val <- Val + N;} would be a simple number class with just incrementation implemented < 1207248116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, um is that what it does? < 1207248121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the line I mean < 1207248125 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh no < 1207248129 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just en example of -> < 1207248139 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :an < 1207248140 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1207248150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[$Init N] matches a list of that form < 1207248154 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :N can match anything < 1207248166 0 :Sgeo[College]!unknown@unknown.invalid QUIT :"http://www.mibbit.com ajax IRC Client" < 1207248182 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm, perhaps i should try getting that to work < 1207248185 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that number < 1207248187 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :class < 1207248189 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"class" < 1207248209 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i usually call oklotalk functions "things", they're a bit... weird < 1207248211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so what IS k = p_key->p_key.x; k *= m; k ^= k >> 16; k *= m; h += k; h *= m; < 1207248218 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :would be wrong to call them functions or objects of classes < 1207248225 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1207248238 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll parse, as i think i've specified it < 1207248250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :good idea < 1207248265 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :usually you don't do multiple high-level operators without explicit precedencing. < 1207248271 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric := and -> are high-level ones < 1207248280 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well it is C really heh < 1207248304 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yarr, just explaining why i'm not sure how that should be parsed < 1207248362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, you need to add a sandbox mode that doesn't allow file IO and such so ppl can test the interpreter on anything just to see what happens < 1207248363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1207248375 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1207248386 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, i don't have the parser yet... < 1207248386 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : while (p < p_end) < 1207248386 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : crc = (crc << 8) ^ crc32_table[(crc >> 24) ^ *(p++)]; < 1207248386 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : return ~crc; /* transmit complement, per CRC-32 spec */ < 1207248395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about that one then? < 1207248405 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the problem is, stuff like *= just doesn't mean anything, even though it's valid code < 1207248414 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so they are no-ops? < 1207248422 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, unless you give them a meaning < 1207248430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the code above? < 1207248431 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which can be done at runtime, and usually will be < 1207248434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is from another hash < 1207248497 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k = {p_key -> p_key . x _}; < 1207248499 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k * = m _; < 1207248501 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k ^ = k > > 16; < 1207248503 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k * = m _; < 1207248505 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :h + = k _; < 1207248507 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :h * = m _; < 1207248508 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is almost parsed as it is in C < 1207248516 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ok < 1207248522 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what would it output or such? < 1207248525 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well... would be, if you had >>, and X=-operators < 1207248546 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1207248553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :k is set to that weird lambda < 1207248579 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and then? < 1207248591 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then, the k and * are set to whatever two things calling m with _ as param evaluates into < 1207248607 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if just one thing is returned, the second line is a nop < 1207248610 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, but if there is nothing called m? < 1207248614 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if it is the whole program < 1207248661 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well then it means $m, and calling $m with _ as param means calling _ with [#uo $m], or reversed call to _ with the atom m as param < 1207248666 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whatever this does depends on _ < 1207248671 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the parameter for the program < 1207248717 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if _ is something like the empty list, $m is *forced* to evaluate with _ as argument < 1207248724 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1207248731 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, oh and then what about this then: size_t len = sizeof(fungeSpaceHashKey); return (fungeSpaceHashKey*)memcpy(newobj, oldobj, len); < 1207248737 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :an atom, when forced into a function, just returns itself. < 1207248753 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in which case the line is a nop < 1207248759 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because k * cannot be matched on $m < 1207248764 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course it makes no sense to use a temp variable in C but just to complicate it < 1207248785 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can parse, but this is the last one :D < 1207248793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heheh < 1207248920 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len]; < 1207248921 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :slightly more interesting. < 1207248921 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait a mo < 1207248921 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have to think < 1207248922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eh I said () not [] < 1207248922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but whatever < 1207248922 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes but it's already been paesed a bit < 1207248922 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*parsed < 1207248922 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :they evaluated into lists of functions < 1207248922 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because they were expressions containing functions only < 1207248922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, then what would actual [] evaluate to? like myarray[3] ? < 1207248925 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[] -> [] < 1207248927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the empty list < 1207248934 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it got a 3 in it < 1207248942 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so [ ] is list? < 1207248943 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1207248944 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :myarray [3] means call myarray with [3] as argument < 1207248949 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's myarray, depends on that < 1207248958 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :[3] is a list with just 3 in i < 1207248959 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :t < 1207248969 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, char * myarray; ;P < 1207248970 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1207248980 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1207248990 0 :jix!n=jix@dyndsl-091-096-044-010.ewe-ip-backbone.de JOIN :#esoteric < 1207248991 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :char * myarray is just a list of functions < 1207248994 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207248995 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't do anything < 1207248998 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :back to size_t len = sizeof(fungeSpaceHashKey); return [fungeSpaceHashKey *] memcpy [newobj oldobj len]; < 1207249013 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1207249034 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :return *may* be what it is in x < 1207249035 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :C < 1207249043 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :x? < 1207249052 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm just not sure if you can grab the continuation of the upper level like that < 1207249054 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :x -> C < 1207249054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is no x or C in that line < 1207249055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i failed < 1207249068 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is no C either < 1207249074 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :C is a language < 1207249077 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207249100 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, that line might evaluate to the list [fungeSpaceHashKey *] < 1207249119 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but depends on return's capability to use the return continuation of whatever calls it < 1207249119 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207249134 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I thought you meant variable C < 1207249137 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or such < 1207249137 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've removed uplevel lambdas from oklotalk to simplify scoping a bit < 1207249141 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so.... < 1207249149 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :uplevel, as in thin functions < 1207249155 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :something like what plof ha < 1207249156 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :has < 1207249158 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or had < 1207249168 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, so is oklotalk functional, object orientated or what? < 1207249171 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not sure what plof3 does < 1207249179 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1207249180 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wtf is plof? < 1207249187 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :plof is GregorR's language < 1207249192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1207249201 0 :CakeProphet!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1207249234 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, you know fuzz testing with random program code will be absolutely hilarious with your language < 1207249260 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I use something like that for befunge < 1207249263 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess oklotalk is multiparadignm < 1207249270 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1207249275 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : cat /dev/urandom | tr -Cd -- '-[:lower:][:digit:]\n\\/ ;",.+*[]{}^<>@`_|?:%$#!'\'"${FPRINTINSTRS}" | tr -d 'mhlior' | head -n 100 >> fuzz.tmp < 1207249280 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think befunge is more interesting for that < 1207249282 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, useful for crash stuff < 1207249297 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :catched a few bugs with it so far < 1207249311 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah, interp should never crash? < 1207249311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :several valgrind errors and some SIGSEGV < 1207249314 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and one SIGFPE < 1207249323 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hehe, fun < 1207249341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, I aim for it to never crash except on something like perror("aiee! out of memory!"); abort(); < 1207249345 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure what exactly to do for the oklotalk charset, i''m already using a few characters over ascii. < 1207249348 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*i'm < 1207249355 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :which isn't good, because i wasn't intending to < 1207249364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, and even with out of memory I do some ulimit testing to make sure it detects it < 1207249371 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1207249385 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but well, on out of memory there isn't much I can do when stuff fails < 1207249393 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ofc < 1207249412 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll start tackling on the rational number class < 1207249416 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, also I can't test file IO really with fuzz, I'm too lazy to set up a chroot < 1207249422 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I don't dare do it elsewhere < 1207249430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so it runs in sandbox mode < 1207249440 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so even if a p creates a o it will just reflect < 1207249485 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, of course this doesn't guarantee it is acting sensibly < 1207249489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or anything like that < 1207249519 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed, but you can prolly look at it as it goes < 1207249530 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i tend to be overcareful when writing test programs < 1207249530 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I can't parse 100 lines or random chars < 1207249537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for the fuzz testing < 1207249545 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and yes I have done some unit testing < 1207249554 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but well mycology handles most of the correctness bit < 1207249569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it does pass mycology < 1207249574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I make sure it does at each revision < 1207249588 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :rational -> < 1207249590 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't commit if it doesn't pass mycology and valgrind < 1207249607 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, ? < 1207249645 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, oh and I gpg sign each revision of course, not that anyone would care < 1207249662 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I use the bzr version control system < 1207249668 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it supports signing revisions < 1207249707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from within function "MediaWikiBagOStuff::_doquery". MySQL returned error "1030: Got error 127 from storage engine (localhost)". < 1207249709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :gah < 1207249713 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I hate that bug < 1207249727 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on esolang < 1207250094 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: rational numbers < 1207250099 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :gotta try making them < 1207250103 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1207250109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, in oklotalk? < 1207250111 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207250118 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well you mean like 1/3? < 1207250125 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :to test its extendability in itself < 1207250129 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or 1/10? < 1207250132 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1207250135 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's a rational number < 1207250139 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1207250149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a pitty about pi heh < 1207250164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, why not do symbolic algebra? < 1207250165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;D < 1207250180 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well the actual types i was thinking for oklotalk were number and list < 1207250193 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :number being any number < 1207250201 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, all you need to do is write a common lisp interpreter in oklotalk, then run maxima under that interpreter < 1207250203 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1207250208 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wuz maxima < 1207250221 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oklotalk isn't really an algebra language < 1207250222 0 :Judofyr!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1207250224 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[I] sci-mathematics/maxima < 1207250225 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Available versions: 5.13.0-r1 ~5.14.0 {X clisp cmucl emacs gcl latex linguas_es linguas_pt linguas_pt_BR nls sbcl tk unicode xemacs} < 1207250225 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Installed versions: 5.13.0-r1(14.00.50 2008-03-27)(clisp emacs latex nls tk unicode -cmucl -gcl -linguas_es -linguas_pt -linguas_pt_BR -sbcl) < 1207250225 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Homepage: http://maxima.sourceforge.net/ < 1207250225 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Description: Free computer algebra environment based on Macsyma < 1207250248 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, very useful thing < 1207250248 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have a lot of ideas for something with algebra < 1207250256 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :most likelt < 1207250258 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1207250258 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :likely < 1207250260 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is coded in lisp < 1207250276 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, see first paragraph on http://maxima.sourceforge.net/ < 1207250317 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sounds like it knows its stuff < 1207250323 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is good yes < 1207250325 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Maxima is to Mathematica what Octave is to Matlab. :p < 1207250340 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, yeah, "a lot cheaper" < 1207250357 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :zuffancezdroty is to mathematica what gnazzlewimber is to matlab < 1207250364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklopol, eh? < 1207250377 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :== i don't get the reference < 1207250385 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Mathematica's student license isn't bad as far as absolute price is concerned, though. There are the... ethical objections to non-free software. < 1207250414 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, Octave's a free Matlab "clone". It goes so far as to have a more-or-less-compatible-sometimes-maybe syntax in the programming language. < 1207250422 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1207250476 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that always makes me a sad panda < 1207250493 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well maxima does what I need < 1207250498 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is the main point for me < 1207250499 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(taking a commercial product and making a free version of it) < 1207250505 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and it can generate fortran code < 1207250548 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :yay (?) < 1207250568 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Fortran has a certain charm. < 1207250627 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, quite fast < 1207250678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"For calculations which use floating point and arrays heavily, Maxima offers the possibility of generating code in other programming languages (notably Fortran) which may execute it more efficiently." < 1207250681 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :from wikipedia page < 1207250921 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :"Fortran 2003 has extensible types, inheritance, polymorphic variables, and type-bound procedures" < 1207250924 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1207251305 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That sounds somehow wrong. < 1207251383 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Have they done away with the line length limits and "these columns are reserved for line numbers" thing and stuff? < 1207251446 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It all seems so... so tame. Wikipedia article tells me that in Fortran-90 and newer you can use stuff like <= instead of .LE. and all. < 1207252835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hahahaha < 1207253394 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1207254539 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1207254622 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Apparently, if you pass both -O2 and -O0 to (mips) GCC, it produces f***ed-up code :P < 1207254675 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I was wondering why it subtracted 8 from sp (the stack pointer) then proceeded to store into 20(sp) X-P < 1207254776 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :news news on the unusal html4 page of pikhq < 1207254782 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it seems safari will handle it < 1207254784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ^ < 1207254790 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :O_O < 1207254795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I talked to someone who said it worked in safari < 1207254799 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders if Konq4 would. < 1207254814 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, konq3 doesn't < 1207255000 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I'd like to see somebody take the MIPS instruction set and reduce it to a minimal TC set without overloading. (i.e. no subtract-and-branch-if-) < 1207255012 0 :Tritonio_!unknown@unknown.invalid QUIT :Remote closed the connection < 1207255121 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Can't you just take SUB and, say, BLTZ to get the effect of having subtract-and-branch-if-negative. < 1207255163 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :SUB would be load, load, subtract, store at best (assuming you can't just treat memory as registers) < 1207255185 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :SUBLEQ is load, load, subtract, compare, store, branch < 1207255454 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Is there a 'compare' mips instruction? I didn't think it had any flags, really. < 1207255487 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :set-if- sets one register to 1 if < 1207255520 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :But there's also branch-if-less-than, etc :P < 1207255520 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, but isn't that pretty useless if you have a branch-if-condition. < 1207255550 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :GCC uses it in some conditions, just depends on whether you still need that flag I guess *shrugs* < 1207255616 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sure it might be useful, but if you wanted a minimum set of instructions. (Haven't been doing MIPS since that one silly course about it.) < 1207255856 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't look like the PC in MIPS is one of them general-purpose registers. A pity. < 1207255870 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yuh :( < 1207256207 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1207257283 0 :Tritonio_!n=Tritonio@150.140.229.252 JOIN :#esoteric < 1207257747 0 :ais523!n=ais523@147.188.254.202 JOIN :#esoteric < 1207257757 0 :ais523!unknown@unknown.invalid NICK :ais523|busy < 1207257810 0 :thutubot!n=thutubot@147.188.254.202 JOIN :#esoteric < 1207258033 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I fixed JSMIPS 8-D < 1207258075 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, what's my next target past Hello, world? < 1207258354 0 :RedDak!n=dak@87.19.82.209 JOIN :#esoteric < 1207258547 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hm, how about tackling this next failure :( < 1207258568 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :printf("Hello, world!\n"); // works < 1207258570 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :printf("Hello, %d!\n", 3); // does not < 1207258929 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :printf("Hello, %d!\n", 3); // jumps to address 0 (wtf) < 1207259380 0 :shinkuzin!n=r0x@189.13.95.51 JOIN :#esoteric < 1207259400 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: is there anything interesting at address 0? < 1207260711 0 :Iskr!unknown@unknown.invalid QUIT :"Leaving" < 1207261515 0 :shinkuzin!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1207263710 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1207263838 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ais523|busy: Only a segfault waiting to not be caught :P < 1207263978 0 :Tritonio_!unknown@unknown.invalid QUIT :Remote closed the connection < 1207264121 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: I take it you're just running executables, rather than trying to virtualise an entire OS? < 1207264916 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Uh, running executables with no syscall infrastructure is somewhat pointless :P < 1207264933 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I do in fact provide a syscall layer, and so an OS in a manner of speaking, but yeah, it's not an OS in the conventional sense. < 1207264978 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :it's a stripped-down OS specifically for the purpose of running single executables < 1207264987 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Right :) < 1207265003 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :ACTION remembers writing a minimal window manager that could only show one window at a time, and even then it had to be fullscreen < 1207265023 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :we didn't need any more than that for the project we were working on < 1207265062 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :http://www.codu.org/jsmips/ // yay, hello, world! < 1207265063 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :hmm... if you allow fork() and exec() as syscalls, you could almost make that into a real OS by starting with some version of init, and adding a filesystem < 1207265097 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :The problem is, fork() is extremely difficult, perhaps impossible, because JavaScript has no real support for threads ... < 1207265113 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :not exactly < 1207265131 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :setTimeout is something, but it never actually runs two things concurrently >_< < 1207265134 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :although I've achieved a similar effect to cooperative multithreading by serialising internal state and using setTimeout instructions < 1207265158 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Actually, I'm doing nearly that just to make the MIPS emulator not stall out the browser and get killed. < 1207265165 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :So maybe I'm more on track than I realize :P < 1207265181 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :I tend to do that in lengthy JS programs just so I can see them run < 1207265199 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :although if it's an AJAX program, waiting for an XHR response serves a similar purpose < 1207265220 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I suppose AJAX might be a way to go with the filesystem. < 1207265261 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :mutltithreading is really easy if you use CPS < 1207265275 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :you just alternate around a ring of continuations < 1207265287 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :however, that's not very good for JavaScript emulators of processors < 1207265318 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :(I just realised that the reason why multithreading is so easy to simulate in BackFlip is that the entire language is CPS more or less by definition) < 1207265332 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :(pity that it isn't TC, although there are several suggestions to solve that problem) < 1207265584 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :hmm... the main issue with BackFlip was that flow control constructs were easy, but everything else was either difficult or impossible < 1207265598 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh, that's weird. < 1207265598 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :that and the FSMness and reversibility, neither of which make it easy to write a program < 1207265662 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/BackFlip (I've added a typing shortcut for Esolang to my IRC client, and want to show it off) < 1207265926 0 :ais523|busy!unknown@unknown.invalid PRIVMSG #esoteric :anyway, if multithreading is too hard for you, you could still have an OS, you'd just end up with something like DOS < 1207266054 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1207266461 0 :timotiis!unknown@unknown.invalid QUIT :"leaving" < 1207266790 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1207266917 0 :wildhalcyon!n=chatzill@c-69-243-94-185.hsd1.md.comcast.net JOIN :#esoteric