< 1208304226 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Ahah! < 1208304228 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Gato works. < 1208304236 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I can write the Andrei Machine 9000! < 1208304250 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: zgoshmgz < 1208304349 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I am full of hope. < 1208304361 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I really don't want to write it in Python. < 1208304373 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: whuts gato < 1208304406 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://gato.sourceforge.net/http://gato.sourceforge.net/? < 1208304409 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :It's a program to write algorithms on graphs. < 1208304415 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Yes, that one. < 1208304419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: im sorry but that code is python < 1208304421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they just embed it < 1208304425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and add their own functions < 1208304445 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1208304457 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :But what I mean is, I don't want to build everything < 1208304477 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I am terrible at coding, so I really don't want to write the whole graph gestion myself < 1208304507 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Plus, all my interpreters have some way of seeing what happens to the machine, and I don't want to make an exception. < 1208304559 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: Cool. < 1208304857 0 :timotiis!unknown@unknown.invalid QUIT :"rebloodybooting! They said I wouldn't have to do this on linux!" < 1208304867 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1208305001 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1208305100 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :timotiis: sorry < 1208305125 0 :timotiis!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1208306386 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/dUgDuS45.html < 1208306393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :looks like ccbi is broken Deewiant ^ < 1208307003 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1208307194 0 :timotiis!unknown@unknown.invalid QUIT :Connection timed out < 1208307718 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1208307920 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1208308625 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :On Fark: < 1208308626 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :"There are actually people named null, and yes, I've actually seen this cause problems in production database code. 'Null' was the last name where I saw it however." < 1208309191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1208309230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :public class Closure { public Closure(Object... vars); public U apply(T arg); } < 1208309235 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :e.g. < 1208309265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :new Closure(a, b, c) { public Integer apply(Integer n) { return n + (Integer)this.vars[0]; } } < 1208309271 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this.vars={a,b,c} < 1208309281 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe nice if you are compiling a language to jvm < 1208310914 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hah! ehird: i was not there! < 1208310925 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*here < 1208310929 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: heh < 1208311033 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: but ... yeah < 1208311042 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's also why you shouldnt compile oklotalk-- to the jvm, btw < 1208311045 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't like closures < 1208311210 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i would probably make the compilation at a bit lower level < 1208311229 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :but python bytecode might be nicer < 1208311247 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :also, as i don't really like java, i don't really wanna use it's bytecode < 1208311248 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1208311255 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway, /me goes back < 1208311264 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :before you start asking again :-) < 1208311266 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1208312825 0 :Quendus!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1208312862 0 :Quendus!n=Quendion@145.175.adsl.brightview.com JOIN :#esoteric < 1208313010 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :quendus < 1208313012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haven't seen that name < 1208313013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1208318807 0 :ehird!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1208319902 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The Security Manager is vetoing my using Firebug in Fx3.. < 1208319926 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :>>> 2+2 < 1208319926 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :commandLine.evaluate FAILS: [Exception... "Security Manager vetoed action" nsresult: "0x80570027 (NS_ERROR_XPC_SECURITY_MANAGER_VETO)" location: "JS frame :: chrome://firebug/content/commandLine.js :: :: line 100" data: no] < 1208319995 0 :fizzie!unknown@unknown.invalid QUIT :Remote closed the connection < 1208319999 0 :fizzie!n=fis@sesefras.zem.fi JOIN :#esoteric < 1208320736 0 :adu!n=andrew@pool-71-178-14-80.washdc.fios.verizon.net JOIN :#esoteric < 1208322034 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :lol at http://youtube.com/watch?v=g3KufmUlF5M < 1208322039 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :(I'm commented SJGster) < 1208324325 0 :calamari!n=calamari@ip24-255-58-177.tc.ph.cox.net JOIN :#esoteric < 1208324330 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1208324376 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Hi calamari < 1208324381 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://youtube.com/watch?v=g3KufmUlF5M == fail < 1208324677 0 :adu!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1208326858 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1208327921 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: cheers, I'll take a look tonight < 1208328344 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1208328462 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1208330041 0 :GregorR-L!n=gregor@71.237.179.105 JOIN :#esoteric < 1208330043 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :http://www.cafepress.com/bizarregeek.255291006 < 1208330095 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(For those who like CAs :P ) < 1208331766 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, not that mine works perfectly either so far < 1208331788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it fails when using garbage collector for unknown reason < 1208332799 0 :clog!unknown@unknown.invalid QUIT :ended < 1208332800 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1208333435 0 :adu!unknown@unknown.invalid QUIT :"Bye" < 1208334852 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1208334960 0 :Iskr!n=i@host19-56-dynamic.6-87-r.retail.telecomitalia.it JOIN :#esoteric < 1208336565 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, actually the issue seems to depend on how you interpret the PERL fingerprint docs... hm... < 1208336609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"-e print 'A',eval(%s)" or "-e print 'A';eval(%s)" < 1208336614 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where %s is the popped string < 1208341002 0 :GregorR-L!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1208341248 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okokoko < 1208341251 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1208344010 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1208345289 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: okay, so we want the Perl program to be able to use the std streams as normal, but how do we get the eval result out then? < 1208345316 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm confused as to how that would be possible < 1208345555 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :would just "$x = eval(%s); print 'A',$x" work? can the %s mess with a variable called $x in some way? (I'm unaware of the limitations of eval in Perl) < 1208346203 0 :dbc!n=daniel@130-94-161-238-dsl.hevanet.com JOIN :#esoteric < 1208347017 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and hmm, even that wouldn't work, since %s might print A and $x might contain A < 1208347337 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1208347357 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm no perl expert either < 1208347360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :far from < 1208347404 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1208347407 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd say the simplest solution here is to say that accessing stdout is undefined < 1208347417 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alternatively make it stderr for more convenience < 1208347669 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1208349373 0 :jix!n=jix@dyndsl-091-096-034-014.ewe-ip-backbone.de JOIN :#esoteric < 1208350772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I capture both stdout and stderr < 1208350774 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that isn't hard < 1208350828 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes, but how do you get the eval result < 1208350902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, just int fds[2]; pipe(fds); pid = fork() if (pid == 0) { /* in child */ dup2(fds[1], 1); dup2(fds[1], 2); .... execvp("perl", arguments); } else { ... read(fds[0], ...) ... } < 1208350914 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, capturing stderr is trivial < 1208350915 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I know this < 1208350916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well a good question < 1208350936 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the specs are unclear on what to exactly capture I think? < 1208350941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what exactly to* < 1208350944 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no, I think it's clear < 1208350948 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208350953 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's the value of the expression evaled < 1208350961 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208350972 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :e.g. eval 2+2 and get 4. < 1208350974 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about loading libperl.so, I think you can do something like tht < 1208350976 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that* < 1208351020 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :possibly... but it shouldn't be necessary < 1208351031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1208351034 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :based on what the docs say, as well < 1208351045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway then S would get a lot more complex < 1208351049 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"It pushes a 1 on the stack otherwise, indicating that the Perl language will be shelled when needed. < 1208351051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say "isn't loaded yet" < 1208351065 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm true < 1208351080 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that speaks explicitly of shelling, so libperl.so is a no-go ;-) < 1208351098 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I haven't read the whole discussion, but based on what I've seen: no-one says you need to limit yourself to STDOUT and STDERR, why not just open a pipe for file descriptor 3, and in Perl do open FD3, ">&3"; print FD3 eval(...); < 1208351111 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway, now I really understand why ppl don't use read() but use fread() instead < 1208351127 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it a lot easier to work with < 1208351154 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, interesting < 1208351168 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: isn't it possible for the perl code to always be using FD3 itself, though < 1208351186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, that would print both the result of the eval as well as any print statements inside the eval? < 1208351189 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :not very likely, but possible? < 1208351236 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and hmm, I wonder if that's possible on windows < 1208351252 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, you'd get stdout, stderr and that eval result via three different pipes. But sure, the Perl code could use file descriptor 3 for something. < 1208351266 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208351433 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also I wonder why I get a segfault with boehm-gc if I use execlp after fork(), execvp works < 1208351449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it makes no sense to me < 1208351699 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :even more interesting is using valgrind (GC disabled then) < 1208351716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :using --trace-children=yes cause things to fail if I use execvp, but they work with execlp < 1208351722 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only under valgrind that is < 1208351856 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw, does windows have vfork()? < 1208351863 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :windows doesn't have fork < 1208351864 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :of any kind < 1208351888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so how do you start another process without replacing the current one < 1208351902 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :CreateProcessA/CreateProcessW < 1208351907 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :don't ask me about the details < 1208351915 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I just use what Tango provides < 1208351947 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as far as I can see you need to fork() then { in child: dup2 and exec } { in parent: waitpid and read } < 1208351954 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208351962 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :windows doesn't use the fork/exec model < 1208351970 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I see < 1208351993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm actually I spend most code at doing read and trying to handle all the error conditions/results from it < 1208352005 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yep, same here < 1208352006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie, "do we need to realloc and read some more or are we done yet" < 1208352009 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just running the program is 2 lines :-P < 1208352024 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well a bit more for building arguments and such here < 1208352036 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but the read code is really a mess < 1208352133 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think doing read into same buffer and keeping extending it may be the wrong way, read and then append the buffer to another buffer would be way easier, and, due to \0 termination, faster < 1208352137 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think it'd be fair to just disallow stderr for PERL < 1208352146 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :there's no way to write to stderr in Befunge otherwise either < 1208352149 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? well capturing it isn't an issue < 1208352158 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no < 1208352163 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but then you can reserve it for the eval result < 1208352171 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway I use a perror() after forking < 1208352172 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :i.e. print stderr eval(%s) < 1208352188 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in case of exec fails < 1208352202 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then you can pass the perl script's stdout through to the interpreter's stdout < 1208352211 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :whilst capturing the stderr and reading the eval result from it < 1208352232 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm and what about print stderr eval(print stdout "foo")? < 1208352238 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208352241 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :2008-04-16 15:23:21 ( Deewiant) and then you can pass the perl script's stdout through to the interpreter's stdout < 1208352249 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, not sure if that is a good thing or not < 1208352259 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think it's the least error prone option < 1208352266 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :+ simple to implement :-P < 1208352343 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because it allows the PERL script to do output if it so wishes < 1208352358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, btw where do you close the fd in eval in perl.d < 1208352366 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or is D handling that for you? < 1208352372 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Tango does it < 1208352386 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in p.execute(); I would guess < 1208352410 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :read = p.stdout.input.read(buf); < 1208352412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208352417 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stdout.input? < 1208352433 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the input stream of the process's stdout < 1208352452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err, stdout is just output, it isn't bi-directional < 1208352470 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but if another program is writing to it what are you going to do < 1208352474 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you are going to read from it, no? < 1208352475 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so it's input < 1208352488 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :similarly stdin is an output stream < 1208352489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm... yeah < 1208352499 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, but then is stdout.output invalid? < 1208352508 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when done on another process < 1208352512 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, I think so < 1208352542 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :You could also in Perl do something like: open(REALERR, ">&STDERR); open(STDERR, ">&STDOUT); print REALERR eval(...); if you wanted to have all the eval'd piece outputs (both stdout and stderr) mixed in the stdout of the executed process, leaving the real stderr for the eval result. Of course the eval'd code could still get to the real stderr if it really wanted to. < 1208352550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, what is the print A bit about really btw < 1208352565 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it took me a while to figure out, too ;-) < 1208352580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well you do it, I don't see why thoug < 1208352581 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: the idea being that if %s prints to stdout, we take only the eval result. < 1208352581 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :though < 1208352586 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think. < 1208352589 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah I see < 1208352599 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, heh < 1208352600 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but of course that doesn't work if the eval result contains A so it's crap. :-P < 1208352626 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, I know about 0 perl, I do know hello world in perl and I do know PCRE (by libpcre) < 1208352629 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but that's about it < 1208352633 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: hm, that might be a good idea actually. < 1208352659 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, so forgive me if I'm ignorant, but the quotes seem mismatched? < 1208352672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :open(REALERR, ">&STDERR); <-- as in that < 1208352684 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, there's two "s missing. I was about to metion it, but then didn't bother. Should be ">&STDERR". < 1208352690 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1208352711 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: and then just tell the eval'd code not to mess with a stream called REALERR? Or is there another way it can subvert the whole thing? < 1208352748 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, the eval'd code could use open(WHATEVER, ">&2"); and use WHATEVER to print to the real stderr file descriptor. < 1208352777 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Darn. There's no way to hide the real stderr completely? < 1208352800 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I don't think there is, except of course closing it, but that kind-of defeats the purpose. < 1208352844 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Alright. Hmh. < 1208352898 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Perl might have some sandbox-y functions (probably as CPAN modules) for limiting the things the eval'd code can do. And it might be possible to hook into Perl's "open" call behaviour somehow, but that would mean even more Perl-guts. < 1208352941 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ugh. < 1208353019 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208353025 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :killall perl? ;) < 1208353082 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, would calling it say, CFUNGE_REALERR work < 1208353097 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then I could just say "your own fault, cfunge is my namespace" < 1208353099 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: unless the code uses something called CFUNGE_REALERR. < 1208353106 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: or opens ">&2". < 1208353133 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :point is, is _ valid or not < 1208353144 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1208353157 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well considering it's perl, it is bound to have some special meaning < 1208353158 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if not, call it CFUNGEISMYNAMESPACEYOUDORKREALERR < 1208353158 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1208353168 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's a lot like C lexically. < 1208353196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well iirc it does have packages, ie use foo; not #include < 1208353208 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :thought they provided kind of C++ namespaces < 1208353214 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I may totally wrong < 1208353238 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, not 'the same as C', just 'like C'. < 1208353252 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually you could open(my $realerr, ">&STDERR); open(...); eval(...); which I _think_ would mean that the eval'd code wouldn't be able to access the filehandle directly, since there's no symbol table entry for it, just the reference in $realerr. (Can't remember details about lexically scoped "my" vars and eval, but at least with some minor changes.) < 1208353271 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Still won't help with the open(FOO, ">&2"); problem. < 1208353296 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm. < 1208353300 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(With open my $realerr you'd then do print $realerr eval(...);) < 1208353334 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wait a second, is $ same as in bash or something else? < 1208353350 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :$ is just the prefix for a scalar variable. < 1208353364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm same as in bash more or less then < 1208353376 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: perl -e 'my $x = 2; print eval($x+$x);' prints 4, at least. < 1208353403 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is that evaluated lexically like a pre-processor first? < 1208353429 0 :atsampson!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1208353434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in bash you would need to escape the \$x in an eval statement < 1208353448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because of order of expanding < 1208353481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(however I will not write a perl escaper in C or something like that) < 1208353640 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, if nothing else works, you can always use print $realerr eval {$realerr = undef; %s}; but that's butt-ugly. I'm pretty sure there is a better way for making a variable that doesn't leak into eval; lexically scoped vars evidently do. < 1208353714 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, there probably is indeed, it's perl after all < 1208353721 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually more like eval { local $realerr = undef; %s } to avoid gobbling the real $realerr, but then it can't be a "my" variable. < 1208353739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is probably something like z having a special meaning in a special context *runs* < 1208353749 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :remember, perl DOES have a entry on the esolang wiki < 1208353798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think someone said that instead of "foo" you could do q/foo/ in perl. < 1208353802 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something like that < 1208353808 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you can do that in D 2.0 as well. :-) < 1208353825 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, s/)/(/ < 1208353845 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1208353855 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and that was sed not perl! < 1208353877 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I have no problems using sed or awk < 1208353879 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's also perl. < 1208353889 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yeah I thought so < 1208353891 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually, if you're really doing string-substitution in the Perl code itself, you don't need eval, and this should work: my $code = sub { %s }; open my $realerr, ">&STDERR"; open STDERR, ">&STDOUT"; print $realerr $code->(); < 1208353905 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, eh? < 1208353916 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: unfortunately the specs say that it should be an eval(). :-) < 1208353917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"E ('Eval') pops a 0gnirts string and performs a Perl eval() on it, possibly (or not) shelling Perl as indicated by S above. The result of the call is pushed as a 0gnirts string back onto the stack." < 1208353927 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, from http://catseye.tc/projects/funge98/library/PERL.html < 1208353991 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh. Well, my $code = sub { return eval('%s'); } ... then. < 1208354024 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in fact, isn't eval(%s) equivalent to %s always? < 1208354050 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :where %s isn't wrapped in "" or '' or whatever of course < 1208354053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm... couldn't you pass a string to eval, read from say stdin? < 1208354090 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes, but I'm just pondering. < 1208354106 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I don't think eval(%s) really does much, since the %s is evaluated normally, and the result is then passed to the 'eval' function. < 1208354126 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :eval(my $x = 1; print $x) versus my $x = 1; print $x < 1208354153 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1208354155 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :"Alternatively, if given a block of code - that is, the code is known at compile time - eval traps run-time exceptions." < 1208354168 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what does that mean Deewiant ? < 1208354174 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually "eval(my $x = 1; print $x)" shouldn't be syntactically right at all. < 1208354176 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :divide by zero or? < 1208354178 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't know < 1208354183 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :something like that probably < 1208354190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, it shouldn't? < 1208354191 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: only expressions? < 1208354195 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Eval takes either a string or a block of code and evaluates it. < 1208354205 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208354210 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'eval(my $x = 1; print $x);' gives syntax error at -e line 1, near "1;" < 1208354228 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, perl -e 'eval(print "bar");' works though, hm < 1208354232 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alright < 1208354247 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's an expression. you can pass the result of printf to a function in C just fine as well. < 1208354254 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208354259 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1208354290 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Since the spec speaks of strings, I think it means one should do something like eval('%s'); but that would need escaping the 's in the string. < 1208354296 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Or reading it from stdin or some-such.) < 1208354311 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um < 1208354314 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'print eval(4 + 5)' < 1208354322 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is not same as perl -e '4 + 5' < 1208354333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and with multistatement just adding a print doesn't work < 1208354383 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you said something about code block? < 1208354434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and then there is the question of non-matching ( and ) in the input hm... < 1208354441 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'print eval("my $x = 1;")' prints nothing < 1208354449 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but it doesn't error out either < 1208354472 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"print eval(%s)", "10); something here(blah" < 1208354478 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yay perl injection? < 1208354482 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'print eval("my \$x = 1;")' however prints "1". < 1208354509 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :argh, the shell goes inside "" inside '' < 1208354526 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :stupid bash, just do what I mean < 1208354528 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, err? bash doesn't at least < 1208354537 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well evidently it does < 1208354539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'print eval("my \$x = 1;")' works here < 1208354545 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think it's actually the Perl that does mess the $x inside a ""-string. < 1208354547 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or no, is that perl mucking it up < 1208354554 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed it is perl < 1208354555 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ayeh < 1208354559 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :makes sense < 1208354574 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, so given the specs, how would you do it? < 1208354589 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think sub { return eval('%s'); } is the best idea so far < 1208354602 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :need to do escaping in %s though < 1208354606 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :which is tricky < 1208354611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah something I don't want to mess with < 1208354625 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :considering the syntax of perl probably could escape escaping < 1208354628 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :so, instead, return eval(%s); < 1208354638 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and statements are disallowed thus. < 1208354648 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm doesn't that break the specs? < 1208354657 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :But eval(%s) makes really no sense. The '%s' part is evaluated before even passing the result to 'eval'. < 1208354657 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :how? < 1208354677 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hm ok < 1208354687 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :then the specs are confused or PERL is practically impossible to implement without writing the interpreter in perl. < 1208354706 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, could you read the stuff for eval from stdin? < 1208354718 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because then perl would escape it itself kind of < 1208354733 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, you could. Then you'd just use eval($s); after reading into $s. < 1208354742 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie, $variable = read(); eval($variable) < 1208354749 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't know the needed syntax < 1208354763 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, and how would you read that? < 1208354770 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and if the perl script wants to read stdin? < 1208354777 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm true < 1208354785 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, you'd probably need to have some sort of length-prefix before the code, so that you can keep the stdin open for further reads. < 1208354798 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :aye. < 1208354816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also it need to be blocking read < 1208354835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so if it get to read before the parent got to write, it would wait < 1208354904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well if you can write the needed perl code to read like that, I could do the C bit < 1208354913 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't be able to do the perl bit sadly :/ < 1208354919 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :perl is trivial to learn < 1208354927 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :for short stuff like that I mean < 1208354929 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If you don't want to use a prefix, you could use that file descriptor 3, read the code-to-evaluate and then close it. < 1208354937 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, prefix could work < 1208354943 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :prefix is fine < 1208354950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I guess just write(fd, strlen(perlcode))? < 1208354960 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :however you choose to implement it < 1208354968 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I guess that'd work the easiest < 1208354970 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or if you want as a string < 1208354983 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, it's easier to "read until eof" in one line of Perl than it is to "read at least this many bytes". < 1208354990 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie snprintf("%d", strlen...") < 1208355007 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm EOF isn't a special char is it < 1208355009 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :it's easier in most languages without scanf. < 1208355015 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :EOF isn't a char. < 1208355025 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or even with scanf, I guess. < 1208355055 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well, input would be a pipe created with pipe() in C in my case < 1208355055 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :my $code = ''; open FD3, "<&3"; $code .= $_ while ; close FD3; might do it. < 1208355072 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :using just stdin makes that a bit easier. < 1208355076 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not sure how I would send a EOF that way < 1208355083 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :my $code = ''; $code .= $_ while <>; < 1208355089 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or what < 1208355097 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you send EOF by closing the pipe. < 1208355102 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or file descriptor, or whatever. < 1208355105 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1208355117 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well a pipe is a set of two connected fd's in this case < 1208355134 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If you close the write end, the read end should get an eof. < 1208355137 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :well you close the input stream. < 1208355392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, then print eval($code) or? < 1208355399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or "$code"? < 1208355445 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :no difference in perl, just like in bash :-) < 1208355452 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yep. < 1208355463 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, there is a difference in bash < 1208355469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :foo="bar quux" < 1208355473 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :echo $foo < 1208355475 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :nope, no difference. < 1208355475 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :echo "$foo" < 1208355481 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :? < 1208355483 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the difference is that $foo will expand to two parameters < 1208355489 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1208355490 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while "$foo" won't < 1208355501 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for echo it doesn't matter < 1208355503 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but the string itself is the same, it's just the way it's passed to another program that differs < 1208355508 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for say grep on a filename it would < 1208355513 0 :timotiis!unknown@unknown.invalid QUIT :Connection timed out < 1208355513 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if the filename contains spaces < 1208355518 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :since eval() is a builtin function, not another program, it makes no difference. < 1208355529 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I would assume that it's the same for any builtin function of bash. < 1208355531 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, for bash it matters for builtins too < 1208355539 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :example? O_o < 1208355575 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :echo will do the same, but say: foo="echo bar" < 1208355576 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then < 1208355580 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$foo < 1208355583 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and "$foo" < 1208355587 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would be different < 1208355590 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the first would echo bar < 1208355591 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1208355606 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the second would likely say "echo bar" not such command or something like that < 1208355636 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and say test -f $file and test -f "$file" would differ when $file contains spaces < 1208355653 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :test is a builtin yes < 1208355693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, oh and: foo="bar quux"; for i in $foo; do echo "$i"; done < 1208355703 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is different from: foo="bar quux"; for i in "$foo"; do echo "$i"; done < 1208355710 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Bash is indeed prone to splitting things at spaces; but in Perl I think there's a difference only if $foo doesn't happen to be a string. < 1208355736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well there are exceptions: < 1208355743 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :foo="abc def" < 1208355746 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bar=$foo < 1208355753 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would be the same as: < 1208355755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bar="$foo" < 1208355757 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in that case < 1208355760 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :however... < 1208355770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :foo="abc def" is not the same as foo=abc def < 1208355785 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the latter would try to run def with foo=abc in the environment < 1208355795 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, enough examples? < 1208355797 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1208355873 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, would this mean something like: < 1208355885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :my $code = ''; $code .= $_ while <>; open(CFUNGE_REALERR, ">&STDERR"); open(STDERR, ">&STDOUT"); print CFUNGE_REALERR eval($code) < 1208355885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1208355939 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, if you don't mind losing the use of STDIN in the Perl code. (And of course you can avoid the CFUNGE_REALERR "problem" with a bit more trickery.) < 1208355986 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well how would I then save and restore the stdin? < 1208355998 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or actually I could just use fd3 I guess < 1208356006 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :or just pass the length first. < 1208356014 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then read only bytes to $code. < 1208356029 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes, but with the length-prefix the reading is more complicated. (Of course with fd3 the writing is a bit more complicated.) < 1208356040 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"my $code = ''; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" < 1208356053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :assuming the \ is due to the whole thing is inside a C string < 1208356063 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I'm being too lazy to remove it this time ;) < 1208356067 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: with fd3 I'm screwed on Windows, so I prefer the length-prefix method. ;-) < 1208356104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1208356106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no open < 1208356112 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"my $code = ''; open FD3, \"<&3\"; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" < 1208356114 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm? < 1208356162 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, it looks correct, assuming the Perl code won't try opening &2, or using CFUNGE_REALERR. < 1208356200 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: wouldn't heredoc be the easiest way of making $code directly? < 1208356204 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :just came to mind < 1208356235 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :because you can always pick a heredoc string not contained within the program script < 1208356250 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, finding such a string may not be that simple? < 1208356257 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, yes; that's possible. < 1208356291 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: start with "THIS_IS_MY_FOOBAR_HEREDOC_STRING" and append that to itself until the prog no longer contains it or it exceeds the prog's length, whichever comes first. :-P < 1208356315 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, you need to search over the prog, linear search < 1208356322 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for a long program that could be an issue < 1208356410 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm, closing the fd doesn't flush it it seems < 1208356420 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :at least not if it is a file, may be different with pipe < 1208356423 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you need to write it to the file descriptor as well, which takes linear time? < 1208356456 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm what about vectored io? oh wait that won't work for a pipe < 1208356491 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but I think you're right, in-memory fd writing is probably faster overall < 1208356495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, anyway that just means O(n), while searching to see if the program contains a string means at least searching it twice if you hit it < 1208356511 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: which is still O(n), no matter how many times you do it. ;-) < 1208356529 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm true < 1208356538 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If you feel like doing the heredoc thing, it probably makes sense to keep in mind that Perl does variable interpolation in my $code = < returns anything after the '__END__' marker when the script is passed with the -e argument. Otherwise it could've been much like the heredoc thing but without the suitable-string-finding issues. < 1208356950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :seems it works with FD3 < 1208356951 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1208357016 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, so what will you do then? < 1208357042 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :stdin with the length passed first < 1208357139 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :A normal person would've just used print eval { %s }; which might not match the letter of the spec, but does match the spirit: takes the string and gives it to the 'eval' function. Of course it's not _exactly_ the same, the code is parsed at a different time and there might be other differences. < 1208357150 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's what I originally did < 1208357158 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and then AnMaster came complaining :-P < 1208357167 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, err? you didn't use { < 1208357169 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you used ) < 1208357170 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1208357170 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :( < 1208357178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : auto p = new Process("perl", "-e print 'A',eval(" ~ s ~ ")"); < 1208357185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I didn't complain before about it < 1208357192 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :only difference is that one accepts only expressions, I think < 1208357205 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if I had used {} you'd still have complained about the same issue ;-) < 1208357233 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, if I passed this in stdin then, should it work?: $x = "Hello world"; print $x < 1208357233 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, it really isn't the same thing at all: the expression isn't evaluated by "eval", it's evaluated just like the outer code, and then the result is passed to eval. < 1208357287 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :For example, perl -e 'eval(die "foo");' will die, while perl -e 'eval { die "foo" };' won't. < 1208357337 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :File descriptor 3, not stdin, I guess. But yes, it looks like valid Perl code to me, although traditionally there's a newline after the string. < 1208357341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I know I pass it on right FD < 1208357348 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yeah 3 was what I did < 1208357353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because other stuff work < 1208357358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say 4+5 < 1208357361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"my $code = ''; open FD3, \"<&3\"; $code .= $_ while ; close FD3; open(CFUNGE_REALERR, \">&STDERR\"); open(STDERR, \">&STDOUT\"); print CFUNGE_REALERR eval($code)" < 1208357369 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is escaped for C < 1208357429 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I just figured out an embarrassingly easy way to pass the code to the Perl interpreter. < 1208357437 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, oh? < 1208357453 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Just do print eval($ARGV[0]); and append the code to the argument list of your "perl -e" call. < 1208357473 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ARGV[0] == "perl" probably? < 1208357480 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :No, $0 == "perl". < 1208357485 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :$ARGV[0] is the first "real" argument. < 1208357490 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Perl Does It Differently(TM). < 1208357492 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the first one after the program after -e? < 1208357493 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as in argument for script? < 1208357517 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :perl -e 'print $ARGV[0], "\n";' foo prints "foo". < 1208357526 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yays. < 1208357548 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that makes things somewhat simpler. < 1208357560 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :although I wonder if there's a maximum limit on the length of an argument. < 1208357605 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Well, the code was already being passed in the '-e' at some point, it's not a new problem. < 1208357622 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :true. < 1208357641 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Of course the code itself can't "use" the @ARGV array, but looking at the spec it doesn't seem to say anything what @ARGV should look like. < 1208357701 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Besides, it's then especially easy to write a Perl quine; print $ARGV[0]; will do it, if you start it in that environment. < 1208357797 0 :RedDak!n=dak@79.32.85.23 JOIN :#esoteric < 1208357858 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: alright, now your little test proggy prints 'hi 161'. :-P < 1208357883 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I don't have the same version around any longer < 1208357885 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I extended it < 1208357899 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/VFZ2St69.html < 1208357901 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is what I use now < 1208357932 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :alright, win. < 1208357944 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and it works here too < 1208357950 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :just checking valgrind and such < 1208357967 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, want to put you in a thanks to comment, what name should I use? < 1208358024 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Uh, what sort of names have other people used? :p < 1208358052 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :...er, that sounds wrong. < 1208358093 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I'm not trying to pick a name, I just was curious about the type of names traditionally used for this sort of thing. IRC-nicks, realnames, something-else. < 1208358121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, I just want to know if you want some real name, or just "fizzie on #esoteric on freenode" < 1208358121 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :up to you. do you want your real name in the source code of befunge interpreters? :-P < 1208358135 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hahah < 1208358149 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'd think deep and hard on that if I were you. ;-) < 1208358173 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well you got your one all over the source of ccbi < 1208358180 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think I already have my real name in the sadly defunct GLfunge98, which didn't really get up the ground. (I think googling for my realname finds, thankfully way down in the list, HP-UX packages for that Befunge interpreter.) < 1208358216 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I know, I've plunged off the deep end. :-) < 1208358226 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :aye, GLfunge98 looked promising. < 1208358242 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There were lots of good intentions but lack of real motivation. < 1208358244 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, I'm not familiar with that proverb < 1208358256 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :So since I'm already quite a lost cause, feel free to use the real name, 'Heikki Kallasjoki'. Although I don't object to 'fizzie' either. < 1208358278 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well believe it or not, but some want their real names < 1208358321 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, you got to choose though < 1208358334 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: "take the plunge, to enter with sudden decision upon an unfamiliar course of action, as after hesitation or deliberation: She took the plunge and invested her entire savings in the plan." < 1208358345 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208358353 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Er, well, just use the realname, then. < 1208358354 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway why would it matter? < 1208358391 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :There it is, on the third results page, the HP-UX packages for a Befunge interpreter. Hopefully no prospective employers will bother reading that far. < 1208358393 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: oh, you're the /author/ of GLfunge98? Didn't expect to find you alive with the program dead ;-) < 1208358434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well how old were you? they can hardly think something you did while you were at university would matter for example < 1208358449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or that you did in your free time < 1208358456 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I proudly display CCBI on my CV :-) < 1208358472 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm fizzie, you are from Finland? < 1208358473 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I still from time to time get occasional pangs of regret over not continuing to play with GLfunge98, but not oftener than once every couple of months. < 1208358476 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and even got a summer job in the building fizzie works in, if I read google correctly. < 1208358510 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, uhu? < 1208358511 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :If you mean the CIS lab at HUT, you've read correctly. < 1208358542 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I'm just wondering if the building is in fact the same, or not. < 1208358563 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I guess it's all in the same CS building so yes, I do believe so. < 1208358631 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually I did have to give a 15 minute explanation about Befunge in a job interview for Nokia Research Centre (since I had "esoteric programming languages" in the CV) for a summer job in 2006, too, and got the place. Seems like it might even not be a negative thing. < 1208358644 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Although they were more interested in any Perl experience.) < 1208358653 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, ditto. I wonder whether it was positive or negative. ;-) < 1208358671 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, it shows a keen interest in programming on your free time? < 1208358675 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :probably a good thing then < 1208358682 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I talked about Befunge, D, and Haskell whilst interviewing for a job which is probably mostly going to involve shell scripting, heh. :-) < 1208358693 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :And C, I suppose. < 1208358706 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well you need to learn quotes in bash a bit then ;P < 1208358725 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: rather, I need to learn how they interact with builtin functions. < 1208358733 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'd just use them just in case anyhow, so it doesn't matter. ;-P < 1208358755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, apart from in [[ ]], where quotes can sometimes be harmful < 1208358767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in [ ] they work as in normal context though < 1208358782 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I don't use such esoteric syntax. ;-) < 1208358784 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[ ] is same as test < 1208358790 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, hm? < 1208358800 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :[[ -f foo ]] < 1208358802 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :&c. < 1208358805 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you use them in if [ "$foo" = bar ] say < 1208358816 0 :atsampson!n=ats@7hw.poik.net JOIN :#esoteric < 1208358821 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1208358823 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course if grep foo works too < 1208358833 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if ; then foo... < 1208358838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it is just about exit code < 1208358845 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1208358856 0 :Sgeo!unknown@unknown.invalid QUIT :Client Quit < 1208358861 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, and [ ] as well as [[ ]] is just a test command < 1208358873 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1208358873 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but, [[ ]] got special quoting rules sometimes < 1208358881 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and is extended from [ ] in other ways < 1208358901 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :What I think funny is that there's a /usr/bin/[ -- in a file name it looks ugley. < 1208358919 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for example: both [ -z "$foo" ] and [[ -z "$foo" ]] test if $foo is" empty or unset" < 1208358933 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[[ -z $foo ]] works too < 1208358963 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[ -z $foo ] does NOT work, will be a syntax error if $foo is unset, or if it contains several words < 1208358985 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and then there is the special issue of the regex =~ match that only exists in [[ ]] < 1208359006 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bash 3.1 and 3.2 handles quoting differently in it < 1208359029 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the 3.1 behaviour was buggy < 1208359034 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but more logical IMO < 1208359041 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And yet you think Perl's not-so-clear. :p < 1208359051 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in 3.2 it forces a literal match if the regex is quoted < 1208359080 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, well at least bash doesn't make every single ASCII char be an operator < 1208359088 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :perl is close to that < 1208359109 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :and befunge much closer. :-) < 1208359117 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Actually Perl 6 goes and makes some Unicode chars operators, too. :p < 1208359129 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, indeed < 1208359133 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Like the single-character versions of the '<<' and '>>' quotes. < 1208359140 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :eww < 1208359159 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :eww? I think it's rather nice actually < 1208359162 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, UTF-8, or UTF-16 or what? < 1208359164 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :get some decent looking code < 1208359172 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Unicode. UTF-* is just the encoding. < 1208359175 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, well my keyboard lacks such keys < 1208359184 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, yes I know, but what one does perl read source as < 1208359193 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :probably any. < 1208359200 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I would guess Perl 6 defaults to Unicode. < 1208359202 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well how could it know what one < 1208359202 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: then you can type '<<' if you don't have the key. < 1208359209 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :byte order markers exist < 1208359216 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1208359217 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :you can always tell UTF-* apart < 1208359228 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :the only problem is UTF-8 versus legacy encodings like ISO-8859-* < 1208359279 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Recent versions of Perl 5 have a "use utf8;" pragma for writing identifiers-that-have-Unicode-chars, and also 'use encoding "foo"' for any supported encoding. < 1208359290 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well that's the point of UTF8, old programs being able to read the same file < 1208359309 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :a point, yes. < 1208359317 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, one important one < 1208359321 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1208359355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :on unix you could make, say, /etc/fstab utf8 in comments, and it would not break old apps reading the file < 1208359413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or /etc/passwd GECOS field could be able to contain names with åäö in them < 1208359446 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or as long as I don't use non-ascii here on irc, anyone that can read ASCII can read what I say, even though my client sends utf8 < 1208359513 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :but if you send UTF-8 and the receiving end assumes it's ISO-8859-1 it gets garbage. < 1208359527 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :that's a tradeoff. < 1208359528 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Perl 6 operators grepped from my irclogs, might be outdated: there's ^_= and »+^« and ^..^ < 1208359536 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1208359598 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^..^ is the current ".." range operator but excluding the endpoints; (5 ^..^ 9) is (6 .. 8). < 1208359691 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :But these were back in 2004. Haven't been following the Perl 6 saga since then, they might have sensiblized it. < 1208359703 0 :timotiis!unknown@unknown.invalid QUIT :Connection timed out < 1208359728 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, it gets even more garbage, with, say, UTF-16 < 1208359759 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but, with UTF-16, you can tell from the BOM that it is, in fact, UTF-16. < 1208359782 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also utf-16 got more overhead when the data is mainly in ASCII range < 1208359786 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as is common on irc < 1208359791 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or config files for *nix < 1208359859 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :true that < 1208360996 0 :RedDak!unknown@unknown.invalid QUIT :"Killed (NickServ (Comando GHOST usato da DIO))" < 1208363373 0 :ehird`!n=test@91.105.122.127 JOIN :#esoteric < 1208363386 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: ANOTHER DAY, ONE TO WORK ON OKOHIRD-- < 1208364976 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, "okohird--"? < 1208364979 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is that < 1208365011 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: my implementation of oklotalk-- < 1208365017 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1208365026 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what differs between the normal one and --? < 1208365053 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :-- has not muh syntax < 1208365054 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and sucks < 1208365060 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :he has not made oklotalk yes < 1208365061 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just oklotalk-- < 1208365062 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*yet < 1208365292 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :k < 1208365304 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, is the syntax that hard to parse? < 1208365338 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Yes, there are no syntax errors < 1208365350 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :({{{]) is valid < 1208365427 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, and what would it do? < 1208365464 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway befunge technically got no syntax errors either, it is perfectly valid to use an non-implemented instruction to reflect < 1208365471 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I *think* ({{{[]}}}) < 1208365488 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: am I right? < 1208365651 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :whuaa < 1208365740 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :{ has a lower precedence than (, it would actually be ({{{([])}}}) < 1208365763 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :okay then oklofok < 1208365774 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :the rationale is to be able to do { ptrn -> ( expr expr expr } < 1208365862 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: surely { ptrn -> expr expr expr } should be valid! < 1208365874 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ x -> func x $hello } < 1208365885 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ outn "wooty"; x -> func x $hello; outn "wotty" } < 1208365893 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ambigious < 1208365894 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but.. < 1208365948 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :it should know whether you mean (x -> func x $hello) outn "wotty"; or x -> (func x $hello; outn "wotty";) based on which is better. < 1208366061 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: well, i am thinking < 1208366067 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that you can introduce another seperator comma , < 1208366071 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which has a lower precedence < 1208366072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so < 1208366083 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ outn "wooty"; x -> func x $hello; outn "wotty" } < 1208366083 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is < 1208366092 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ outn "wooty"; x -> (func x $hello); outn "wotty" } < 1208366092 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but < 1208366102 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ outn "wooty"; x -> func x $hello, outn "wotty" } < 1208366102 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is < 1208366107 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :{ outn "wooty"; x -> (func x $hello; outn "wotty") } < 1208366116 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: seems natural to me, and fits with english puncutation < 1208366118 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well, comma exists already. < 1208366145 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :it works exactly like that for side-effects, but is in fact a third way to make a list < 1208366178 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: oh. well i think you should drop commas for lists < 1208366179 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because < 1208366180 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a, b < 1208366181 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :[a b] < 1208366187 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's not that much different < 1208366188 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and < 1208366190 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a, b, c, d < 1208366191 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :[a b c d] < 1208366193 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is shorter < 1208366198 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :a,b,c,d < 1208366200 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :is shorter < 1208366202 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: and my way means stuff can be shorter < 1208366206 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1208366206 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but < 1208366207 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway, true, it's not much use < 1208366209 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which do you do more often < 1208366210 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :make a list < 1208366212 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and i haven't used it much. < 1208366215 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :or have multiple exprs in a function < 1208366221 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yeah, yeah, i know your point < 1208366225 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'll think about it < 1208366232 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and [...] is nicer because with , < 1208366237 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its hard to pick out where hte list starts and ends < 1208366241 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1208366249 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :there are elaborate rules for it < 1208366254 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :anyway, south park time :) < 1208366256 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1208366291 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: ok :) < 1208367072 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is sticking linux on this old crusty machine < 1208367089 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I poked the distro chooser for a laugh. It's telling me Arch Linux, Slackware, OpenSuSE, Gentoo, edora < 1208367106 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Arch and Gentoo seem the most likely ones I'd consider installing. < 1208367116 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: If you want to hype Gentoo, now would be the time. < 1208367126 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Especially if you can convince me I'll have an installed system in hours rather than days. < 1208367300 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :depends on your processor speed. :-) < 1208367319 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Slow. This is not my main machine. < 1208367324 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION checks < 1208367344 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: 1.8ghz. < 1208367348 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Some kind of AMD Smepron shit. < 1208367360 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Windows says I have 480mb of ram, but that doesn't sound right. < 1208367446 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :might be a day then, but not day_s_. :-) < 1208367461 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :if you can leave it to compile the base system overnight it shouldn't be that bad. < 1208367508 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Isn't there a fancy type of install that's precompiled? < 1208367510 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Stage 3 or something. < 1208367522 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I mean, ideally I'd like to be using it before the day's up. I know that's not particularly realistic, but < 1208367524 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :possibly, I'm not sure. < 1208367580 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :in 6 hours with that processor, certainly not from stage 1, I don't think. < 1208367585 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :depends on how big a base you want I suppose. < 1208367594 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: I would probably go for stage 3. That's the most compiled, isn't it? < 1208367606 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I am not '-funroll-loops man', so :) < 1208367607 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure about how the later stages work. < 1208367613 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1208367686 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Well, I don't see what other distro would work well. < 1208367691 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Ubuntu sucks on here. < 1208367705 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :And the rest are either dead, related to Ubuntu or extremely minimalist. < 1208367730 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Slackware is fine. < 1208367761 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: never really liked the feel of Slackware. < 1208367772 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I like things such as, say, *dependency management* < 1208367793 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1208367921 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : AnMaster: If you want to hype Gentoo, now would be the time. < 1208367922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1208367924 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I guess I could just do Debian. < 1208367927 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you use gentoo. < 1208367933 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, gentoo and arch are both good < 1208367935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I prefer gentoo < 1208367952 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Right, right, just convince me that I can coerce gentoo into giving me a system _today_ < 1208367954 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but well, gentoo, freebsd top the list, followed by arch < 1208367962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, well what is your CPU? < 1208367965 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpu[1 x AMD Sempron(tm) Processor 3300+ (AuthenticAMD) @ 2.00GHz w/ 128 KB L2 Cache] < 1208367968 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is what I got here < 1208368019 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, from first boot to KDE (base system, I never install games and such) installed about 5 hours iirc < 1208368022 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: amd sempron 1.8ghz. This is not my main computer, before you scream in horror < 1208368025 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :actually less maybe < 1208368031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, amd64 or? < 1208368038 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No way! This is a lame 32-bit machiine. < 1208368044 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :And none of the hardware agrees with the ohter hardware. < 1208368046 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1208368054 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, oh? how do you mean? < 1208368090 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: its all incompatible in subtle ways that make it crash and creak < 1208368098 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway about system today, depends on several things: local time, (if you start just before midnight, of course not), how much time you spend chatting on irc and so on < 1208368106 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it was upgraded in a very cobbled-together fashion < 1208368109 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, what components got issues with what ones? < 1208368113 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and: time is 17:48 < 1208368121 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and, just about all of them < 1208368161 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I would start in the morning < 1208368177 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, also I would do a stage3 < 1208368185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :first time you will need to read the manual < 1208368187 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I need a system today, so unless you can convince me I'll install debian today and consider gentoo tomorrow < 1208368191 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, i was thinking stage3. < 1208368198 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, then go for arch < 1208368207 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :arch is good for being binary < 1208368217 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Hmm. How does it differ from, say, debian unstable < 1208368229 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, being sane < 1208368238 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Debian's pretty sane < 1208368257 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well last I checked they used *old* pre-release compilers in stable for example < 1208368277 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Nobody uses stable. < 1208368306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, anyway arch is quite fast too on x86 < 1208368318 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and last I checked rather easy to install < 1208368329 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I can install Debian in under an hour. < 1208368331 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :What about arch? < 1208368348 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, it was quite some time ago I tried it, but I think less than half an hour < 1208368366 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, however this may have been about 1-1.5 years ago < 1208368372 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but shouldn't be worse I guess < 1208368374 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that was a modern system presumably < 1208368388 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, it was a p4 at 1.something GHz < 1208368392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :512 MB RAM < 1208368398 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :IDE 80 GB drive < 1208368417 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but the hardware was all compatible, I assume. < 1208368433 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, can't check exactly as I no longer have the system in question, the power supply went for a smoke and I salvaged the bits that worked < 1208368452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, well I still don't see how they would be incompatible < 1208368459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you haven't given any example < 1208368461 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I don't know. This machine is a demon. < 1208368467 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :It is pure evil itself < 1208368473 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you got no examples then? < 1208368502 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Not really except that it crashes for no reason and drops data because it feelsl ike it < 1208368520 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1208368527 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, tried memtest? < 1208368550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :apart from that I'd recommend trying to disable acpi < 1208368563 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I should leave memtest running at one point. < 1208368574 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Not sure what ACPI is, though. heard the term, but I don't know what it is. I'm silly, < 1208368592 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, it is something for power managment, as well as "find out what the computer can do" < 1208368595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and a few other things < 1208368609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface < 1208368616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, however it can cause issues sometimes < 1208368676 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1208368696 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I think I will go for Debian, I don't really care about this system, I just can't bear Windows any more < 1208368711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, well windows probably cause the lockups then... < 1208368716 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, give arch a try < 1208368719 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Nah, I've used Linux on here before. < 1208368723 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :It's actually less stable. < 1208368730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, what distro did you use on it? < 1208368731 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :debian? < 1208368735 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :various < 1208368739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, list? < 1208368746 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: lesse... < 1208368749 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and was debian included in it? < 1208368757 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :FreeBSD, debian, ubuntu, fedora, slackware, and others < 1208368776 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then maybe time to try arch < 1208368781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and see if it is more stable < 1208368833 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Maybe. < 1208368836 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, anyway my system is quite stable, even though I got quite a mix of components < 1208368910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ie, a sound card with midi from 2003 or so, a new geforce card from last year, and so on < 1208368916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I did try suse, it was quite unstable under it, same for debian, but gentoo did turn out to be stable < 1208368925 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only tried arch later, on another computer < 1208368964 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, but since gentoo does need some patience at first install, it is probably best to try arch < 1208369014 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, oh and download time for cd was not included in the "half hour" for arch < 1208369020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't know how long it took to download < 1208369030 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I had a bad connection back then 512 kbps down < 1208369035 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so quite long I suspect < 1208369440 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: woot, 600kB/sec < 1208369443 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i love my internet connection < 1208369450 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it is made of love < 1208369453 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and hugs < 1208369457 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :^^ TRUTH < 1208369503 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I got 8 mbit down, that means about 450-550 kilobyte / sec here < 1208369571 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And this university student village 100Mbps connection means around 9 megabytes / sec from many places. < 1208369659 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ditto < 1208369871 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, well arch it is then? :) < 1208369905 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: No, Debian. I will probably try Gentoo tomorrow. < 1208369908 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :But for today, this is fastset. < 1208369912 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :I've already downloaded it. < 1208369921 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, arch is good if you want binary < 1208369936 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Too late. < 1208369941 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :It's burning now < 1208369976 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :gentoo need a bit more patience, but things are easy to fix if they break, and they don't break often < 1208369978 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :much easier to fix than when say debian breaks < 1208370044 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Ohw Ell. < 1208370046 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :It's burned. < 1208370050 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :See you in $TIME < 1208370125 0 :ehird`!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1208370361 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Personally my experiences wrt. the fixability of Debian and Gentoo have been exactly the opposite, but on the other hand I haven't touched Gentoo since 2003 or so. < 1208370499 0 :ehird`!n=test@91.105.122.127 JOIN :#esoteric < 1208370538 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1208370541 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :need to get a bigger one < 1208370563 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: did I mention that the 600kB/sec speed was on wireless < 1208370571 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The people who send me spam can probably help. < 1208370601 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, hm? < 1208370608 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bigger what? < 1208370612 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird`, cd? arch then < 1208370617 0 :ehird!n=test@91.105.122.127 JOIN :#esoteric < 1208370624 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but yeah. < 1208370626 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that was just wireless < 1208370740 0 :ehird!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1208371366 0 :timotiis!unknown@unknown.invalid QUIT :Connection timed out < 1208371535 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1208371753 0 :ehird`!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1208372110 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1208372120 0 :jix!n=jix@dyndsl-080-228-180-022.ewe-ip-backbone.de JOIN :#esoteric < 1208372411 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1208372415 0 :jix!n=jix@dyndsl-080-228-190-134.ewe-ip-backbone.de JOIN :#esoteric < 1208373006 0 :ehird!n=ehird@91.105.122.127 JOIN :#esoteric < 1208373009 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hello from a new debian system < 1208373020 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it works, basically. < 1208373027 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is debian's gnome meant to feel non-smooth? < 1208373030 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh wait, maybe i need gfx drivers < 1208375077 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, KDE may work better < 1208375090 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION runs < 1208375094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, Don't feel like KDe today. < 1208375095 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, Hi. < 1208375555 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, Ping < 1208375585 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ölonmg < 1208375663 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yay < 1208375679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, ehird@debian:~/src/oklotalk$ python okofficial/cli.pyc < 1208375679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :RuntimeError: Bad magic number in .pyc file < 1208375679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ehird@debian:~/src/oklotalk$ python -V < 1208375679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Python 2.4.4 < 1208375692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION installs 2.5 < 1208375856 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, btw you got the pyc files for me? I don't have python 2.5 < 1208375859 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only 2.4 < 1208376125 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, just install 2.5 < 1208376163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :class DisregardThat(object): # I considered appending 'ISuckCocks' to the name of this lass < 1208376165 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*class < 1208376305 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1208376345 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bah < 1208376349 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my parser is broken < 1208376353 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it can't handle comments nicely < 1208376387 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, can you show me your parser src :( < 1208376804 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, haha, my interp's thing->string shows the actual code < 1208376805 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1208376988 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, can't you disassemble the pyc < 1208377012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, yes but only to the bytecode instructions < 1208377014 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which are stack-based < 1208377020 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and thus very unhelpful for reading < 1208377039 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah I see < 1208377053 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, why not open source < 1208377143 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, its for a school project < 1208377148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so he doesn't want to release it until the < 1208377160 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :incidentally this is the 3rd time you've bugged him about it being closed source < 1208377174 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :can you simply not accept the fact that closed source software exists? < 1208377196 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1208377228 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :some of it is even *good* < 1208377259 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, scoping question < 1208377263 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if i have a var A in another scope < 1208377268 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then we have a nested scope inside that < 1208377269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and set A < 1208377272 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is the outer scope's A mutated, < 1208377279 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or is it just created in the inner one < 1208377282 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and shadowed < 1208378041 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, qutie important < 1208378278 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ehird: comments are trivial to do < 1208378288 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :just keep the sum of open comments or soemthing < 1208378290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, yeah < 1208378294 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, oh crap < 1208378295 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't do nesting < 1208378296 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1208378297 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :inc on <--, dec on --> < 1208378298 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1208378304 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :well then ofc even more trivial :P < 1208378304 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, and yeah, its just that i have a method < 1208378306 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.parse_one() < 1208378311 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1208378311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which is expected to return a value < 1208378314 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and is called in a loop < 1208378314 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BUT < 1208378320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i can't just recurse after a comment, .parse_one() < 1208378322 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and comments return nothing so boom? < 1208378324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because if the comment is at the end.. < 1208378329 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i have to pretend i was never called < 1208378344 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :whhhell, i'm sure you can fix that on your own :P < 1208378348 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so my hack is: .parse_many() gives a special param, after a comment, if the src is over and it is set, we return none < 1208378350 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, unexpected EOF < 1208378354 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and parse_many() checks for None < 1208378358 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :"parsing is trivial", a guy once told me < 1208378364 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :you know who taht was? < 1208378366 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*that < 1208378371 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::))) < 1208378378 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :indeed! < 1208378406 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :okay, back to watching! < 1208378410 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, but < 1208378410 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i'm leaving you < 1208378411 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1208378412 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what about scoping < 1208378415 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :...but? :| < 1208378416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i asked a question about it < 1208378416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1208378419 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1208378422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : oklofok, scoping question < 1208378422 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :aaand hmm < 1208378422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : if i have a var A in another scope < 1208378422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : then we have a nested scope inside that < 1208378422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : and set A < 1208378422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : is the outer scope's A mutated, < 1208378423 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : or is it just created in the inner one < 1208378425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : and shadowed < 1208378425 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :lessee < 1208378427 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : oklofok, qutie important < 1208378438 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :only created in inner one < 1208378452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, so how do i mutate outer variables < 1208378468 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :there will be other ways to set vars, but i'm not gonna tell you what they are, because you'd implement them, and i'd then have to do that too. < 1208378471 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :you don't. < 1208378475 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :or make setters < 1208378485 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok, actually, could you give me a basic scoping stress-test < 1208378488 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so i can verify i get it right < 1208378493 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :asd < 1208378508 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :you know the chick i was talking about < 1208378513 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :she's threatening me < 1208378519 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i have to watch an episode now < 1208378521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hahaha < 1208378522 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :perhaps after taht :| < 1208378524 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :*that < 1208378528 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :goodbye < 1208378532 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1208379330 0 :Slereah!unknown@unknown.invalid QUIT :brown.freenode.net irc.freenode.net < 1208379365 0 :Slereah!n=Vampire_@ANantes-252-1-94-122.w81-53.abo.wanadoo.fr JOIN :#esoteric < 1208379670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah, hello < 1208379777 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Hai. < 1208379819 0 :Iskr!unknown@unknown.invalid QUIT :"Leaving" < 1208380088 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, look at me! I just installed non-free software! < 1208380097 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, oh? < 1208380099 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :good to know debian is no longer run by idealist idiots < 1208380102 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1208380128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster, Yeah, enabled the etch non-free repo and installed the Sun Java JDK. It is the only one that supports the newest stuff. < 1208380134 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Most of the compilers don't even get 1.5 right. < 1208380138 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So the apps I use in java won't work < 1208380494 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cute: < 1208380496 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :enum TinyHelloWorld{T;System s;{s.out.println("Hello, world!");s.exit(0);}} < 1208380504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that, as far as I can tell, is the shortest java hello world you can get < 1208380507 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :vs: < 1208380533 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :public class HelloWorld{public static void main(String[]a){System.out.println("Hello, world!");}} < 1208381094 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1208381626 0 :ais523!n=ais523@ce01-fap05.bham.ac.uk JOIN :#esoteric < 1208381660 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hello ais523 < 1208381671 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hello ehird < 1208381752 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, there was actually more discussion about BackFlip < 1208381761 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've been thinking about it a bit recently < 1208381794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it would be TC if you repeated the program as a cylinder, so that the left and right sides of the program were identified, and the program was repeated vertically an infinite number of times < 1208381882 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I think I am going to implement one of your rewriting languages in somethiing silly. < 1208381893 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like Underlambda in m4? < 1208381907 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No, that's for you :P < 1208381934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Maybe Forte in Thutu. < 1208381945 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I already did that, more or less < 1208381956 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the only Forte interp I know of was written in wimpmode Thutu < 1208381969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(where I extended it to allow easy arithmetic) < 1208381987 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK, then 1cnis < 1208381995 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Though it looks complex. < 1208382007 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Actually. < 1208382011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Underload in Thue. < 1208382028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Underload in Thue sounds good < 1208382060 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I don't think I can do output though < 1208382063 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :1cnis would probably be harder due to the need to synchronize things so that they happen effectively simultaneously < 1208382078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, I mean literal output < 1208382078 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :ah, this means you can soon have underload in mod_rewrite using my thue-to-mod_rewrite compiler < 1208382082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I could probably REWRITE output. < 1208382090 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :olsner, I need to see that! < 1208382092 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and although it isn't mine, a Xigxag in Thue would be interesting too < 1208382094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Though it's pretty trivial < 1208382114 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you could use Underlambda-style output, where S outputs a function not a string < 1208382118 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :yeah, four lines of sed and a few bootstrap rewriting rules in an apache config < 1208382144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, No, I mean, Thue can't output text from the initial rule. < 1208382146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Just hardcoded < 1208382154 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :olsner: why noy use cat as the CGI script that shows the final output < 1208382181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Beh. Thue is too primitive for this. < 1208382181 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: with Underlambda-style output you only need to be able to output the command characters, not all characters < 1208382191 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :hmm, the final results is in the query string, and I don't think that comes on standard input < 1208382197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Have you tried Oklotalk-- by the way? < 1208382204 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :olsner, redirect on PATH_INFO < 1208382209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/rewrite.cgi/FOO < 1208382214 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :rewrite.cgi: < 1208382216 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :olsner: you're right, it comes in an environment variable for GET, and on stdin for POST < 1208382218 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#!/usr/bin/env perl < 1208382224 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :otoh, maybe you can rewrite things into post variables < 1208382225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :print $ENV["PATH_INFO"]; < 1208382227 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think. < 1208382239 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, But yeah -- oklotalk-- < 1208382242 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: your Perl is atrocious < 1208382247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I've seen bits of it but not used it < 1208382247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And yes! < 1208382247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It is! < 1208382250 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it looked interesting < 1208382256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my Perl is totally atrocious < 1208382259 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and that Perl statement should have used curly brackets < 1208382260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Because I don't know Perl < 1208382263 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :ehird: in this case, I have a php script that does echo $_SERVER['QUERY_STRING'] or whatever the actual names are < 1208382265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Oh yes, that. < 1208382266 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :$ENV{"PATH_INFO"} < 1208382276 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Make it a MODERN reference! < 1208382285 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$self->env->{"PATH_INFO"} < 1208382299 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I think that can be done with blessed objects < 1208382311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes it can < 1208382442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Hmm. I want to make a Lambda Calculus macro system < 1208382444 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Might be interesting < 1208382477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or write a lambda-calculus-to-Underload-compiler in Thue or some similar language < 1208382485 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lambda calculus to underload < 1208382487 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1208382494 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not for thue < 1208382500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, thue can only deal with very restricted formats < 1208382500 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I tried to do one as rewrite rules as a way to specify how lambdas worked in Underlambda < 1208382514 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: well, I limited variable names to x, y, and z < 1208382525 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :possibly w as well, I forget < 1208382556 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, But with placeholders, I bet. < 1208382560 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Thue is just string->string. < 1208382575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, I've been designing a new rewriting language that I haven't told anyone about yet < 1208382584 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's interesting, but likely to be very hard to implement efficiently < 1208382601 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'd be interested in having a go < 1208382624 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the rewriting is done on graphs rather than on strings < 1208382684 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :making it a sort of 2D Thue < 1208382717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was going to call it Eodermdrome, and it looks like someone may have to ask me what it means because neither Google nor Wikipedia seems to know < 1208382733 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, sounds like graphica < 1208382735 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to track down the book I learnt the word from, so I can use it as a source to write about it < 1208382747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: quite possibly it's been done before < 1208382749 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :hmm, graph rewriting = haskell (in some abstract sense... according to what I hear) < 1208382756 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the lang looks more like Haifu, though < 1208382764 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except mostly using nonsense words, or nonsense sentences < 1208382767 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, graphica is oklofok < 1208382768 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :if you're talking nodes+vertices graphs rather than x/y graphs < 1208382770 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I kept the comma=comment idea < 1208382810 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i have always wanted to make a language which is JUST powerful enough to be non-trivial (very low barrier) and powerful enough to represent all of its own model in itself < 1208382817 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so it can represent the interpreter, call stack, etc. < 1208382823 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but there must not be one unexposed bit < 1208382830 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :call it Ouroboros < 1208382850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it can self-interpret, but isn't TC? < 1208382859 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, not what i meant < 1208382860 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not self-interpret < 1208382861 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but < 1208382868 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :imagine a language where the call stack was a first-class object < 1208382871 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :smalltalks have them < 1208382874 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's called CallStack or similar < 1208382884 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, that's a bit of the interpreter 'eaten up' by the language it hosts < 1208382891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :now, the idea is to have EVERY SINGLE PART eaten up < 1208382896 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :even the parts that do the eating up < 1208382964 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :some sort of massive reflection, then < 1208383067 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, except it's not reflection < 1208383069 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's THERE < 1208383072 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you don't need a mirror < 1208383074 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1208383230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, wow, g++'s error messages just rock < 1208383232 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1208383249 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: which one in particular did you like? gcc's are quite good, are g++'s even better? < 1208383265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was a joke < 1208383283 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you get used to seeing many>,abc>> < 1208383287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :on even the most basic errors < 1208383328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I'd say that's being kind to the programmer by providing lots of information to help them track down the problem < 1208383343 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, No -- you can literally have one basic error in a 10-line program < 1208383351 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it will quote 15 STL templates < 1208383359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with an unhelpful error message < 1208383365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: but they're part of your program too, they were just written by someone else < 1208383384 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, You don't understand: STL templates use each other to depths exceeding 100. < 1208383393 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :They are *never* helpful to know. < 1208383409 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: your last two statements contradict each other < 1208383417 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, try coding c++ some time. < 1208383424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :actually don't < 1208383425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's awful < 1208383429 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :templates using each other to depths exceeding 100 is a great sort of thing for esolangers to like < 1208383436 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I learnt C++ before I learnt C < 1208383442 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it was old-style C++ < 1208383450 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :before it had STL or even namespaces < 1208383456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the string class was nice, though < 1208383500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, default arguments with the magic setter stuff is so much fun... < 1208383509 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you never have to write a function body again! < 1208383513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yay default arguments < 1208383524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Actually, you never have to write values again, since C++ templates are turing complete < 1208383527 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not only that, < 1208383530 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they're a lazy functional language. < 1208383538 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :About 10x nicer than C++ itself. < 1208383558 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: see, /that's/ what the error messages are for! < 1208383561 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Not only are they a lazy, turing complete, functional language, they're a lazy, turing complete, strongly-typed functional language. < 1208383574 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: in other words, Haskell < 1208383583 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Exactly! < 1208383596 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But there's no meta-templates, so you can't use parametized types in the code. I don;'t think so at least. < 1208383627 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, http://reddit.com/info/6fasr/comments/c03p4mn Maybe monad in C++ templates < 1208383633 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://reddit.com/info/6fasr/comments/c03oswa Translation for LC->C++ templates < 1208383652 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, And finally, a translation of lambda calculus church numerals to C++: http://reddit.com/info/6fasr/comments/c03ongu < 1208383666 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :As for Peano numerals: < 1208383668 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :struct Zero {}; < 1208383668 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :template < 1208383668 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :struct Succ { T v; }; < 1208383824 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, A toy C++ program I just wrote to refresh my memory (It's easy to forget everything about C++ in a few months) < 1208383828 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :contains this wonderful constructor < 1208383828 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : Greeter(std::ostream &output = std::cout) : out (output) {} < 1208383838 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :note: no function body < 1208383840 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that is actually (pseudo-code): < 1208383855 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1208383855 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Greeter(std::ostream &output = std::cout) { this.out = output; } < 1208383860 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: that still looks strange to me, I learnt C++ before the typename keyword was invented (they used to use 'class' back then, which was confusing because the same keyword was used for two things, and it could refer to non-classes too) < 1208383864 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wonderfully esoteric < 1208384047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Actually, it startles me how clean you can make lambda calculus stuff with templates. < 1208384051 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not unpleasant, really. < 1208384060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: templates are lambda calculus, more or less < 1208384076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Nicer actually - they have arithmetic and everything < 1208384097 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :If using them without C++ underneath wasn't considered esoteric, I'd be coding in them :p < 1208384106 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :boost is cool though < 1208384205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why do so many people hate C++? < 1208384218 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it has lots of features that some people don't like, but nobody's forcing you to use them < 1208384230 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can write C++ which is just C + the string class if I like < 1208384243 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, C++ pretends C is something it's not. < 1208384247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I personally hate it, but it's fun. < 1208384278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C++ is a continuum of languages, from C to some sort of crazy OO template thing and everything in between < 1208384288 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it's a good language for writing things which are slightly object-oriented < 1208384305 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lambda.cc:8: error: type/value mismatch at argument 1 in template parameter list for ‘template class > class > class T’ < 1208384312 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, error messages are fun < 1208384335 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: that looks like a really informative error message to me, and I'm not being sarcastic < 1208384361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in this case, it's an argument type mismatch, so it's saying you have to pick an argument which really does have that crazy type, not some other crazy type < 1208384364 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes < 1208384368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sidenote: < 1208384377 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :templates TOTALLY fuck up 'declaration-as-usage' :D < 1208384379 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :usage: < 1208384385 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :T -> typename T < 1208384393 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :T -> template class T < 1208384408 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :T> -> template