< 1208995221 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: Aww come on < 1208995223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::< < 1208995241 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Fine. < 1208995638 0 :timotiis!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1208996009 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1208997633 0 :Slereah!unknown@unknown.invalid NICK :Amiral_Ackbar < 1208997640 0 :Amiral_Ackbar!unknown@unknown.invalid NICK :Slereah < 1208997677 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :ehird : You don't know what you want! < 1208998474 0 :ehird!unknown@unknown.invalid QUIT :Remote closed the connection < 1208998483 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209001021 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1209001525 0 :lifthrasiir!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209001549 0 :lifthrasiir!n=lifthras@haje8.kaist.ac.kr JOIN :#esoteric < 1209013063 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209014476 0 :Judofyr!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209015317 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :G'night all < 1209015419 0 :Sgeo!unknown@unknown.invalid QUIT :"Ex-Chat" < 1209018807 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1209022470 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1209022760 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :off to database normalization demonstration situation menstruation -> < 1209022762 0 :oklopol!unknown@unknown.invalid QUIT :"( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )" < 1209023999 0 :clog!unknown@unknown.invalid QUIT :ended < 1209024000 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1209024053 0 :Deformati!unknown@unknown.invalid QUIT :SendQ exceeded < 1209025846 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209025855 0 :oklopol!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1209026735 0 :Iskr!n=i@host223-20-dynamic.56-82-r.retail.telecomitalia.it JOIN :#esoteric < 1209030238 0 :oklofok!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1209030450 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209030474 0 :oklopol!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1209030505 0 :oklofok!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209030632 0 :oklofok!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1209030663 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209034445 0 :oklofok!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209034463 0 :oklopol!n=nnscript@dyn-sparknet-utu.utu.fi JOIN :#esoteric < 1209035863 0 :oklopol!unknown@unknown.invalid QUIT :Connection timed out < 1209036955 0 :oklopol!i=oko@dsl-tkubrasgw1-fe0cfa00-117.dhcp.inet.fi JOIN :#esoteric < 1209037722 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1209041306 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209041351 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1209044228 0 :pikhq!n=pikhq@209.248.125.70 JOIN :#esoteric < 1209045329 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209047367 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209048811 0 :ehird!n=ehird@91.105.84.224 JOIN :#esoteric < 1209049098 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1209049784 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1209050010 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1209050235 0 :Epic_Fail_Guy!n=Vampire_@ANantes-252-1-72-145.w81-250.abo.wanadoo.fr JOIN :#esoteric < 1209050236 0 :Epic_Fail_Guy!unknown@unknown.invalid NICK :Slereah < 1209050352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: I think you just caused a paradox < 1209050491 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :D: < 1209050498 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :I'm innocent < 1209052485 0 :ais523!n=ais523@gb01-fap02.bham.ac.uk JOIN :#esoteric < 1209052535 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hello ehird < 1209052549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hello! < 1209052557 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is busy upgrading Ubuntu < 1209052571 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what fun < 1209052585 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it worked fine last time < 1209052589 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is it takes about 4 hours < 1209052629 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://gitorious.org/projects/cyclexa/repos/mainline there's something distinctly arty about that "No Data" < 1209052641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and stops every now and then to ask questions < 1209052653 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: 'do you still love me?' < 1209052656 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'are you sure?' < 1209052660 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'okay, continuing installation' < 1209052681 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it's more 'these are all the changes that will be made, are you sure about them' < 1209052703 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that's so pointless. what if you're far enough in the upgrade that there's no other option anyway?? < 1209052707 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect Firefox and Konversation will randomly stop working at some point, as bits of them are uninstalled and they weren't open < 1209052713 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and those questions happen before there's no option < 1209052729 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :once you've said yes, like I just did, it restricts itself to asking about configuration clashes < 1209052743 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :i.e. when you've customised something, and they've customised the same thing a different way < 1209052746 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i have an idea -- what would levenshtein distance look like in cyclexa? < 1209052751 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i assume cyclexa has multiple inputs. < 1209052751 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if not, that sucks < 1209052772 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I haven't implemented multiple inputs < 1209052784 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you haven't implemented any of it, as far as i know < 1209052784 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I have syntax for multiple outputs, and a multiple input syntax would work the same way < 1209052789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's good < 1209052792 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I mean I haven't specced them < 1209052795 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, i assume the output and input are lazy? < 1209052801 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that is, if you run a cyclexa program output=stdout and input=stdin < 1209052807 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can use it like e.g. an interactive BF program < 1209052811 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: output is lazy < 1209052820 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but input isn't? that is a shame < 1209052829 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :input of the original program isn't lazy, but could be < 1209052829 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that means you can't e.g. do a proper brainfuck in cyclexa < 1209052832 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :runtime input is lazy < 1209052838 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a lazy input command < 1209052841 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :we can always fix this later, anyway < 1209052853 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that is, Cyclexa inputs from an input string nonlazily < 1209052858 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and also optionally from the user lazily < 1209052871 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in a Cyclexa program, as opposed to Cyclexa used as a regex engine, the input string is the null string < 1209052881 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, I am so going to use cyclexa in any perl program i make from now on :-) < 1209052907 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: half the time I was using the lexer I was wishing I could use Cyclexa, because it would have been easier < 1209052923 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my $c = Cyclexa->new("..."); my $out = ""; $c->run("hello", \$out) < 1209052926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :\$out passes a reference to $out right? < 1209052927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or is that &$out < 1209052931 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, whatever it is :-) < 1209052946 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :though there'll probaly be a Cyclexa->run("...", "hello") -> out < 1209052976 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\$out passes a reference to $out < 1209052984 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sub run { my ($cls, $expr, $in) = @_; my $self = $cls->new($expr); my $out = ""; $self->run($in, \$out); $out; } # I believe < 1209052987 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :&$out passes a procedure whose name is given by $out < 1209052998 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :symbolic references, you have to love them < 1209053012 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :alternatively, if $out happens to be a reference to a procedure, then &$out is that procedure < 1209053034 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :of course, with prototypes, you can avoid the need for the \ < 1209053039 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that just confuses the user < 1209053050 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: perl's variable sins are odd, but php's odder < 1209053054 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :why, you ask? < 1209053057 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :variable variables < 1209053058 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like the $ sigil? < 1209053065 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$foo = "hello"; $bar = "foo"; $$bar -> "hello" < 1209053071 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you can do that in Perl too < 1209053073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they can nest to an infinite depth < 1209053077 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1209053078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but can perl do this: < 1209053091 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$obj = ...; $foo = "obj"; $bar = "meth"; $$foo->$bar(...); < 1209053098 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's $obj->meth(...) < 1209053105 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think so < 1209053111 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you may need braces in there somewhere for disambiguation < 1209053126 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think nowadays you're meant to write ${$foo} if you really want $foo to be the name of the variable < 1209053128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: okay, then, perl is just crazy < 1209053130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1209053140 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but php's use of $ is just ridiculous < 1209053146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's .... just ... i mean.. < 1209053146 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: agreed < 1209053149 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't mark anything. < 1209053151 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's just there. < 1209053154 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for no damn reason. < 1209053165 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: in Perl, a symbol table entry is a data tyep < 1209053168 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/tyep/type/ < 1209053179 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I think you can assign to them to do operand overloading INTERCAL-style < 1209053182 0 :timotiis!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209053183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can get to perl's call stack, can't you? < 1209053191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes, but I don't know how < 1209053203 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's how Carp works, for instance, I think < 1209053203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i guess you can't do real continuations though < 1209053276 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, I've looked up how symbol table overloading works < 1209053281 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*foo = *bar; < 1209053287 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :causes $foo to actually refer to $bar < 1209053296 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and likewise @foo to actually refer to @bar < 1209053297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1209053309 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this was once useful < 1209053314 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nowadays there are saner alternatives < 1209053315 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I've written one piece of perl in continuation-passing-style, which gives you real-enough continuations. < 1209053331 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: Continuation-passing style is awkward. Why would I want to code liek that? < 1209053343 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Plus, since EVERYONE ELSE's code isn't in CPS, your continuations only span a little bit < 1209053374 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the main benefit of CPS is that you don't need to maintain a call stack < 1209053378 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It was a very stand-alone piece of code; but I'm not saying anyone would _want_ to write like that. < 1209053465 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Tragicomically Perl doesn't realize it's CPS, and even throws a "deep recursion in foo" error at one point. < 1209053480 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :s/error/warning/ < 1209053505 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: NEWSFLASH! Perl does not do TCO! < 1209053512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also, Perl cannot magically realise how your program is written! < 1209053514 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Amazing. < 1209053524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(was that assish enough) < 1209053532 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :I think it was quite assy, yes. < 1209053552 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209053603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but seriously, how is that tragicomical? < 1209053612 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :perl can't see what you're program is about < 1209053643 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hm, don't you need to fix a lexer bug before writing hte cyclexa parser? < 1209053652 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah yes, that one < 1209053658 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that particular bit confuses me < 1209053664 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it can be fixed at any time later < 1209053675 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the output the lexer produces is still valid < 1209053682 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just doesn't correspond to the input < 1209053691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not like \ca is a major language feature anyway < 1209053718 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but ... what is the actual bug and how do we fix it :) < 1209053736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the bug is that \ca is escaped incorrectly by {} < 1209053744 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :okayy < 1209053745 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think because preceding backslashes aren't being detected properly < 1209053755 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(can you tell i don't understand your lexer?) < 1209053782 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: the problem is that Cyclexa has lots of escaping mechanisms < 1209053799 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\+ means a literal +, and the same with any punctuation mark < 1209053838 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Maybe it's only tragic; but at least that's what it is. Think of the poor interpreter, ceaselessly toiling on the call stack, all in vain. < 1209053994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :{stuff containing no braces and with a non-digit non-comma character} escapes everything between the braces < 1209053994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and {{identifier{stuff}identifier}} escapes stuff < 1209053994 0 :ais523!unknown@unknown.invalid QUIT :Remote closed the connection < 1209054009 0 :ais523!n=ais523@gb01-fap02.bham.ac.uk JOIN :#esoteric < 1209054009 0 :ais523!unknown@unknown.invalid QUIT :Remote closed the connection < 1209054025 0 :ais523!n=ais523@gb01-fap02.bham.ac.uk JOIN :#esoteric < 1209054038 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :upgraded, mr ais523? < 1209054051 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: lost wireless < 1209054056 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what's the last thing I said you saw < 1209054075 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'll have to start the upgrade again now because it happened during the download < 1209054096 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :near the start, luckily < 1209054159 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they should have a proper download manager... < 1209054181 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :once the download phase is done (which happens first and is cancelable), then it does all the installation < 1209054278 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so is the lexer trivially fixable, or. < 1209054296 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: not trivially, in fact I found another bug < 1209054304 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\\\ wasn't tokenised correctly as \\@\ < 1209054306 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but as \\\ < 1209054324 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's good enough to start work on the rest of the compiler, though < 1209054341 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe we should rewrite the lexer from scratch to give a token list rather than a flat-string < 1209054341 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: okay < 1209054345 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209054346 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that seems good < 1209054363 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe even make token tags OBJECTS!!2121 ... Nah, I'm not THAT evil. < 1209054370 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But a rewrite seems nice. The current one is just crazy. < 1209054382 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: if you make them objects, pick a language that isn't Perl < 1209054390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Perl's OO model is awful < 1209054404 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I agree. But for a *parse tree*, I expect that objects will be the best way. < 1209054407 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Not a lex list) < 1209054419 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: OK < 1209054421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :However, Perl is tempting because it has turing-complete regexps already < 1209054422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1209054431 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: not really, you have to embed inline Perl in them < 1209054439 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I guess so. < 1209054450 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: But I can't think of any language that would really be good at this. < 1209054462 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nether can I < 1209054527 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Ruby would work but in this case I think it'd just function as a Perl with less powerful regexps and nice OOP. < 1209054529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, this connection's a lot better, I'm 1/3 of the way through the download already. (I just went round the corner to a different part of the library.) < 1209054531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also it'd be dog-slow. < 1209054545 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, Perl is dog-slow already. But ruby is one of the slowest languages out there. < 1209054546 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no, not Ruby for something like this that's likely to be inefficient anyway < 1209054559 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Well, if we're compiling that isn't a problem < 1209054568 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: we're still going to need a hefty runtime < 1209054580 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :besides, if we're compiling, what are we compiling into? < 1209054585 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: True -- but we don't have to compile *to Ruby* if we use Ruby. < 1209054590 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm not convinced, though. < 1209054603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I mean, the classes rock, but I can't see many advantages on the others. < 1209054614 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I mean, it is golfable so it's better than many other languages, but even so < 1209054623 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And I have no idea regarding what to compile into. < 1209054631 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Perl's about as golfable as Ruby < 1209054632 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :A lot of regexp engines compile to a DFA. < 1209054636 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But we'd need a Turing machine. < 1209054638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and if we're compiling into something, I'd like it to have an eval() < 1209054639 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's pretty pointless. < 1209054659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, it is more golfable -- but Ruby's OOP is not horrific, is what i'm saying < 1209054662 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :compiling into something with backtracking capabilities built-in may be a good idea < 1209054663 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :still not convinced though < 1209054666 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209054668 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :prolog? < 1209054669 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1209054670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no eval though < 1209054674 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that limits the field to Prolog and INTERCAL < 1209054677 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :neither of which has an eval < 1209054725 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: why is eval so important < 1209054736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not all that important < 1209054747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it would be nice to be able to call Cyclexa regexps at runtime < 1209054761 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :i.e. just write cyclexa("regex","input") in a program, and call it < 1209054774 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that either requires an interpreter or a compiler into something interpretable/evalable < 1209054832 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, yes, i want that too < 1209054832 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :anyway, here's a plan for an improved lexer: < 1209054851 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm ... it really seems like Perl is the best route for this < 1209054854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :start with a data structure containing the entire program marked as unlexed < 1209054855 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :HOWEVER! < 1209054859 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and change bits into token lists marked as lexed < 1209054863 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the parser will either have to be very ugly for Perl's OOP < 1209054866 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or unpleasant to work with < 1209054881 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wouldn't a regular lex-esque approach work? < 1209054891 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: lex can't handle Cyclexa lexing < 1209054911 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: why not? Is it TC? < 1209054914 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :operator tokenisation preferences are something only Cyclexa has AFAIK < 1209054923 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and also the escaping methods require infinite lookahead < 1209054936 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: do they? yiieeeeks < 1209054956 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :{123456123456123456,123456123456123457} is a repetition count < 1209054969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :{123456123456123456,12345612345612345a} is an escaped string < 1209054981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: >_< < 1209054984 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the rule is it's a repetition count if there's nothing but commas and digits inside the bracse < 1209054988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and an escaped string otherwise < 1209055001 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :{} escaping is really convenient, though < 1209055028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: can't you pick another character < 1209055033 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :{string} is more readable than \s\t\r\i\n\g (assuming the string's actually made of punctuation marks) < 1209055037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like <...> < 1209055042 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: most punctuation characters are strongly overloaded already < 1209055054 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I wanted to leave a few for use by the user < 1209055064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the language isn't designed to be easy to lex, but to be easy to use < 1209055075 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the lexing isn't ambiguous and doesn't require TCness < 1209055077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that isn't easy to use though, really < 1209055080 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it just needs to be done in several stages < 1209055089 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: why not? < 1209055109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although, I suppose that using <> for quoting would make quotations nestable < 1209055116 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like they are in Underload < 1209055125 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not sure how useful that is in Cyclexa, but there's probably some use for it < 1209055138 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm a bit dubious about {{a{}a}} quoting too < 1209055144 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it seems kinda hacky < 1209055155 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : stands out < 1209055159 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the idea was that you can pick appropriate identifiers so you can put anything there without worrying about injection attacks < 1209055159 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could always leave ascii behind < 1209055177 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but quotemeta does that just as well < 1209055247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so, we're settled on and \q\u\o\t\e for the time being? < 1209055261 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: seems good < 1209055261 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1209055261 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what would you want < and > for anyway? < 1209055265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a lot of normal regexp engines utilize < and > iirc < 1209055297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I was imagining using them as nestable chars for working in a sort of Thutu/Cyclexa mix < 1209055309 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but \CAPITALLLETTER works just as well < 1209055311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm < 1209055314 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they all become nonexistent characters that can't be in the input string < 1209055316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nesting quotes doesn't sound too good < 1209055320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<<<<> might be useful < 1209055321 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you never know < 1209055338 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: actually, nesting quotes would mix strangely with backslashes < 1209055343 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because <\a> should be \\\a < 1209055349 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but what should <\>> be? < 1209055359 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a problem even without nesting quotes < 1209055366 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for the {} I banned {} inside a {} < 1209055378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: <\>> should be \> < 1209055385 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :\\\>, you mean < 1209055396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/$/?/ < 1209055397 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no < 1209055399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it shouldn't < 1209055403 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because then that's ambigious < 1209055416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you need to special case \> so that <...> quoets can contain any string < 1209055416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1209055418 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what should it mean? Is it a syntax error due to the unmatched >? < 1209055421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<\>> is 'literal >' < 1209055429 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<\\>> is a syntax error, unmatched > < 1209055434 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so \ escapes < and > even inside <>, but nothing else? < 1209055440 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<\\\>> is 'literal \', 'literal >' < 1209055442 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, < > and \, but nothing else < 1209055492 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if we do that, \ should be taken literally if followed by any character not in \ < > < 1209055519 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, that's ambigious.. < 1209055519 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1209055521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1209055523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209055523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1209055523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's good < 1209055524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1209055531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<\a\\\>> < 1209055541 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is 'literal \', 'literal a', 'literal \', 'literal >' < 1209055542 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is a literal \a\> < 1209055575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I remember what I was planning to use <> for, but this is a crazy idea that should probably never be done < 1209055588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the idea was you could match against a and it would match a red a in your document < 1209055592 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rich-text regexps < 1209055612 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: err, i think not < 1209055620 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, that's probably best avoided < 1209055636 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :[ and ] aren't being used at the moment except for backwards compatibility with ordinary regexps < 1209055644 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're depreciated in favour of ' < 1209055664 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so if rich-text matching is really a requested feature, we can use bbcode rather than HTML < 1209055680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but let's stick to plaintext for now < 1209055698 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: backwards compatibility? bah < 1209055722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks about what a Levenstein difference function would be < 1209055743 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's +1 for each insertion, deletion, or change, isn't it? < 1209055764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://en.wikipedia.org/wiki/Levenshtein_distance yes < 1209055788 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: beware the algorithm on that page < 1209055793 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it mixes 0..X and 1..X arrays < 1209055795 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's awful < 1209055795 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Kitten. < 1209055929 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so should we nuke Lexer.pm? < 1209055934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or move it out of impl/ i guess < 1209055940 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes, move it to some old/ directory < 1209055953 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mkdir ../../scraps; mv Lexer.pm ../../scraps < 1209055956 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, in impl/ but not src/ < 1209055960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :impl/scraps < 1209055968 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :scraps isn't a good name but i have never foudn a better name for it < 1209055972 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i often have it in projects < 1209055975 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i put * in it < 1209055989 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hokay, let's see how git likes moves < 1209056003 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'git mv' is what i need i believe < 1209056052 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: pushing now < 1209056054 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that was very easy < 1209056082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :compare with CVS, which doesn't like files moving :-) < 1209056084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(in case you've never tried to use CVS: it has no renaming/moving operation) < 1209056087 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(you have to either lose all your revision history, or manually hack the RCS files to point to the new name) < 1209056094 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: 'git pull' < 1209056146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :okay, i will now start on a new lexer < 1209056161 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(x*)^+(.|(+??.)|(+??.)|)\D(.|(+??.)||(+??.)):2(|x|x|x)^:2(?0\1)$ < 1209056162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: as far as your data structure idea goes: Cyclexa::Lexer can be a class < 1209056170 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1209056171 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's not that ugl < 1209056172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :y < 1209056188 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Lexer->new("my cyclexa program")->lex; < 1209056191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's Levenshtein distance in unary < 1209056202 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: nice < 1209056209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :actually, you know what bothers me about languages < 1209056217 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's no way in most of them to unify strings & files & stuff < 1209056223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that is, a generic 'Sink' < 1209056230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or rather... Tap, I guess. < 1209056242 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but, a lexer could make use of it, so you could pass it just about anything < 1209056247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: that's very inefficient, though, the way I wrote it < 1209056249 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's O(4^n) < 1209056256 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Levenshtein is inefficient, period < 1209056259 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it could be made more efficient, but it wouldn't be as simple < 1209056270 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: what I wrote isn't even P-time < 1209056289 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, there was an error < 1209056289 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you know what's funny? < 1209056291 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(x*?)^+(.|(+??.)|(+??.)|)\D(.|(+??.)||(+??.)):2(|x|x|x)^:2(?0\1)$ < 1209056292 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a CMS site that doesn't run on that cms < 1209056301 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that fixes it < 1209056304 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: do you have one in mind? < 1209056324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Yes. I just found one randomly: < 1209056324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://www.hippocms.org/ < 1209056381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :some version control systems are designed for some purposes < 1209056397 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in such cases using a different version control system for the system's source itself could be beneficial < 1209056418 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I just like bootstrapping. :) < 1209056521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Cyclexa should be written in Cyclxea < 1209056525 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*Cyclexa < 1209056530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I thought that too < 1209056537 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but we need to get the cycle started somehow < 1209056552 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: No we don't. Ninjacode was going to be written in ninjacode. < 1209056562 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: but you still need something to bootstrap it < 1209056568 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh no < 1209056570 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :To git@gitorious.org:cyclexa/mainline.git < 1209056570 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : ! [rejected] master -> master (non-fast forward) < 1209056570 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :error: failed to push some refs to 'git@gitorious.org:cyclexa/mainline.git' < 1209056573 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even if it's a minimal Ninjacode interp in C, for instance < 1209056581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think that means i forgot to pull your changes < 1209056582 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209056589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1209056607 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :git pull, git merge, git push. < 1209056623 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I still have the newest commit according to gitorious.org < 1209056627 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and why is git merge needed? < 1209056628 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, my push failed < 1209056638 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and because you changed lex.pl and i changed without updating < 1209056639 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not merge really < 1209056643 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it just needs to sync them < 1209056915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, that was easy < 1209056933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you still haven't committed... < 1209056934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was actually me not understanding git that made me take so long < 1209056950 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ah, i have *committed* < 1209056952 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just not pushed < 1209056952 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209056957 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK < 1209056981 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://gitorious.org/projects/cyclexa/repos/mainline < 1209056982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tada < 1209056989 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also note that it generated another revision to merge < 1209056992 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :really it looks like this < 1209056998 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : merge blah blah < 1209057000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : / \ < 1209057006 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : ditch old lexer add a newline < 1209057012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but the display there is linear < 1209057014 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so it looks odd :) < 1209057028 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Try 'gitk' once you pull. < 1209057028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :merging is the thing that git's really good at < 1209057034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It shows a graphy thingy on the side of the revision list < 1209057052 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :You can see how the same revision splits for our two changes, and then it gets unified again. < 1209057080 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: P.S. you need to set your email in git < 1209057083 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've got the change < 1209057084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://gitorious.org/projects/cyclexa/repos/mainline < 1209057085 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :err < 1209057086 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: how? < 1209057087 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : < 1209057090 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is the current one < 1209057091 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and mine is < 1209057093 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ehird@debian.(none) < 1209057100 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: man git-config < 1209057125 0 :olsner!n=salparot@h-60-96.A163.cust.bahnhof.se JOIN :#esoteric < 1209057132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'git config user.email foo' < 1209057133 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i believe < 1209057187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it occurs to me that that merge was pointless < 1209057189 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lex.pl is now uselses < 1209057194 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :d'oh! < 1209057212 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'll just remove it, because it's trivial and not useful for having around reall < 1209057213 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :y < 1209057226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it wasn't quite pointless, it let me learn how to push < 1209057233 0 :Sgeo[College]!i=897d6896@gateway/web/ajax/mibbit.com/x-01e18d77fc9c91d0 JOIN :#esoteric < 1209057234 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haha :-) < 1209057238 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, my merge was < 1209057244 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my merging of your lex.pl change and my Lexer.pm move < 1209057251 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Hi all < 1209057254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :whereas, lex.pl is now useless, so it can be just deleted < 1209057257 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which i'm doing now < 1209057259 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: hello! < 1209057300 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: pushed the removal < 1209057346 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"13 deletions?" < 1209057355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :did it mark one for each line in the file, or something? < 1209057364 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Yes. < 1209057372 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Also, my name is now showing as ehird, instead of elliott hird. < 1209057375 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And is linked. Wtffff < 1209057379 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: to where? < 1209057384 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Okay, set your email to whatever it was in your gitorious profile < 1209057390 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's how gitorious knows you're the user ais523 < 1209057392 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :see: http://gitorious.org/projects/cyclexa/repos/mainline < 1209057397 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it only just now got that i'm ehird < 1209057417 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because, if you clone a git repository onto gitorious < 1209057422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'll show users as their name, unlinked < 1209057426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if it doesn't recognize them by email < 1209057430 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it thought i was some random person < 1209057436 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but now my email is correct it knows i'm the user ehird < 1209057452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I wonder if cia.vc supports git. I've always wanted to test that < 1209057463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: what's that? < 1209057469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://cia.vc/ < 1209057474 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it is a project stats tracker < 1209057476 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but most commonly, < 1209057479 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's a bot on freenode < 1209057486 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that sends out messages to a channel on commits and similar < 1209057539 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://cia.vc/doc/ < 1209057551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it makes us show up in a central channel too < 1209057551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#commits < 1209057578 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: are you testing it now? < 1209057586 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: might as well < 1209057593 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#cyclexa, because anywhere else would be out-of-place < 1209057597 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :don't want to flood #esoteric obviously < 1209058195 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: fun fact -- git used to pollute the global namespace < 1209058196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that is < 1209058202 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'merge-base', 'write-tree', 'commit-tree' < 1209058203 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :were the commands < 1209058258 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, pushed < 1209058274 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you mean /usr/bin namespace? < 1209058278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :MySQL is worse < 1209058283 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it installs a command called perror < 1209058292 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yeah, /usr/bin < 1209058293 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and heh < 1209058307 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: okay, so let's get this new lexer started < 1209058316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Cyclexa::Lexer is a class which stores the neccessary data < 1209058320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that seems like an elegant base to me < 1209058328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the class stores data? < 1209058329 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, the lex tree is a list of tokens of some sort... Cyclexa::Token? < 1209058332 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or an object based on the clas? < 1209058332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: err, the instance < 1209058334 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or an object based on the class? < 1209058350 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the object based on, yeah < 1209058363 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, two classes won't be too bad will they? < 1209058367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just having a generic Token type < 1209058372 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: this is Perl's OO model we're talking about < 1209058375 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1209058378 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't understand it at all, really < 1209058382 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i kind of understand it. < 1209058386 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's not too hard: < 1209058402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a->b(...) is classofa::b(a, ...) < 1209058408 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and < 1209058414 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bless X, classname is magic < 1209058420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basically, you give it a hash (most likely) < 1209058424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it turns it into an object < 1209058425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so that < 1209058428 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :blass a, classname < 1209058430 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I sort of get that much < 1209058431 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :means that in the above < 1209058433 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :classofa is classname < 1209058442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now, classes are kind of their own class < 1209058443 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so < 1209058444 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you need to give lots of stuff telling it how to bless < 1209058447 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :X->new is X::new(X, ...) < 1209058454 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so you do < 1209058456 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :my $cls = shift; < 1209058457 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then < 1209058461 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bless {}, $cls; < 1209058471 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and no, you don't really < 1209058492 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: however, 'new' isn't a special name < 1209058512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is worth mentioning < 1209058512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://search.cpan.org/~rgarcia/perl-5.10.0/pod/perlobj.pod seems to make sense < 1209058517 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can just type perldoc perlobj over here to get that < 1209058530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just like perldoc spec.pod gives me the Cyclexa spec when I'm in the right directory < 1209058546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i like the web < 1209058547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209058569 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you're normally connected to it :) < 1209058604 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: :)) < 1209058605 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://rafb.net/p/qqYkbQ67.html < 1209058611 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :basic perl class skeleton as i see it < 1209058620 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :kinda ugly, but not too complex < 1209058632 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe we should use Moose < 1209058641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://search.cpan.org/~stevan/Moose-0.40/lib/Moose.pm < 1209058659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's a perl object system thingy, but has aspects and stuffs. < 1209058661 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe too much. < 1209058662 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I want to avoid using modules as much as possible, or you end up with dependency hell < 1209058663 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it looks nice < 1209058675 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Perl, with its CPAN, having depdenency hell is so hilarious < 1209058676 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I prefer to stick with the ones which come with Perl, like Carp < 1209058680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i hate CPAN so much, it's horrible to use < 1209058687 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sure it has a lot of packages < 1209058689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but good luck using them < 1209058692 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I can't open links to CPAN in Konqueror for some reason < 1209058699 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Firefox works fine < 1209058705 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but Konqueror can't resolve the DNS < 1209058709 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I know that's a contradiction < 1209058714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe it has a bad cached value, or something < 1209058729 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :has 'src' => (is => 'r', isa => 'Str') # this is nice though, admit it < 1209058736 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as well as "extends 'Foo';" < 1209058756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, a sane 'super' < 1209058767 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does it support multiple inheritance? < 1209058773 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i think so < 1209058774 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :extends 'Foo'; < 1209058776 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :extensd 'Bar'; < 1209058784 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :however i rarely see the need for MI < 1209058880 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, use Moose; means use warnings; use strict; < 1209058881 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :automatically < 1209058882 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209058896 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: wow, that's bad practice < 1209058899 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I like warnings and strict < 1209058905 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I should specify them myself < 1209058911 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in #perl Moose is *very* highly regarded < 1209058911 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they shouldn't be specified in another module < 1209058930 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :#perl seems dedicated to preventing new users cutting themselves < 1209058936 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a worthy goal, but I'm used to C... < 1209058962 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :#perl has always been quite unfriendly to me as a newbie < 1209058964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so i doubt that < 1209059042 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :anyway, our token class... < 1209059061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, that hting < 1209059064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's the default command, which needs a token for every character in existence and a few extra < 1209059073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: trivial < 1209059077 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, trivial < 1209059084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :$tok->type = Token::LITERAL; $tok->char = 'a'; < 1209059086 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or similar < 1209059087 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then there are other commands, which have tokens of their own < 1209059093 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :although, really, we should have Literal subclassing Token < 1209059098 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and we run into perl's object system again... /sigh < 1209059102 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe we SHOULD use moose. :-) < 1209059104 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no, don't do it like that < 1209059113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because you have to create a new file for each class you create < 1209059120 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I know! That's what sucks. < 1209059130 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: agreed < 1209059141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think type and data is a better way to do it < 1209059147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: But also totally silly. < 1209059158 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: maybe if you're an extreme OO programmer < 1209059164 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but there's extreme ORK/Java OO < 1209059169 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's sane C++/Python OO... < 1209059176 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh heck no, i'm not an extreme OO programmer < 1209059179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but a Literal is-a Token < 1209059182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it makes sense < 1209059186 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just not to perl :-) < 1209059215 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is capable of extreme OO < 1209059218 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but doesn't like doing it < 1209059226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except in university OO projects < 1209059234 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to show the ridiculousness of the whole thing < 1209059240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(that is, the project) < 1209059255 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem with object-orientation is that it's useful up to a point, and then you get diminishing returns < 1209059269 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :once you get down to the very low details OOness become more of a pain then an aid < 1209059284 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"There is a scribe called Writer." < 1209059317 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yeah < 1209059329 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's funny how i keep running into Perl trying to express my thoughts into code here, though < 1209059335 0 :timotiis!n=timotiis@jfkew.plus.com JOIN :#esoteric < 1209059460 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: how are we going to handle literal \D and other special characters? < 1209059466 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no idea. < 1209059470 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm still yelling at perl < 1209059473 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it's a good point < 1209059474 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i am not sure < 1209059490 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we need to keep a flag on characters in the input string anyway < 1209059503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to allow for some being positive text, some being antitext, and some being antitext-in-progress < 1209059662 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm < 1209059670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think i'll just push a basic skeleton of Lexer < 1209059675 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and let you start it off, because i'm not sure what structure you want < 1209059677 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Token too < 1209059705 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm < 1209059710 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ATM I'm wondering how to tokenise group options < 1209059713 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if I have 'use Cyclexa::Token' in Lexer.pm, < 1209059720 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like the ?? that says a group shouldn't be numbered < 1209059721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how can I make it imported as just 'Token'? < 1209059730 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: use Haskell < 1209059732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe a seperate class for those < 1209059733 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and heh < 1209059737 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :we should do that! < 1209059742 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :we could even use plain strings < 1209059745 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because getContents etc < 1209059745 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209059761 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Haskell may be a better lang than Perl for this < 1209059766 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :especially if we want complex data structures < 1209059814 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed, but since we are doing significant text wrangling in the interp itself.. < 1209059824 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haskell no likely regexps < 1209059837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I think we should use C. Then we can just interface it to whatever language we want. ;) < 1209059849 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking about C too < 1209059858 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although if you're doing it OO you'll want C++ for its OO features < 1209059866 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can write the rest of it C-style < 1209059877 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(/me is used to writing C/C++ mixes) < 1209059891 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :(/me just did that (/me thing in another channel) < 1209059906 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: C++ would buy us std::string & a load of hell. < 1209059908 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :at the same time too < 1209059919 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: std::string may be useful < 1209059925 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: SYNTAX ERROR: unmatched parentheses at line 1. Abort. < 1209059928 0 :oklopol!i=oko@dsl-tkubrasgw1-fe0cfa00-117.dhcp.inet.fi JOIN :#esoteric < 1209059931 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the thing that people don't get about C++ is: you don't have to use all its features! < 1209059931 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course, you can;t interface C++ to many languages < 1209059933 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :e.g. Haskell < 1209059942 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you can, you just interface via C < 1209059947 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C can be linked to C++ < 1209059958 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Yes, but now I want to decapitate myself ;) < 1209059958 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you have appropriate wrappers in the C++ < 1209060012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Let's write it in Ninjacode. < 1209060022 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Then we can just make ninjacode whatever we need to code cyclexa. < 1209060027 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: only if it compiles into INTERCAL < 1209060048 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: bah < 1209060084 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you do have to learn the features < 1209060094 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lament: of C++? < 1209060101 0 :Judofyr!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209060101 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :right < 1209060102 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you don't have to use them < 1209060109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you don't pay the runtime cost if you don't < 1209060109 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :using stuff is easy < 1209060121 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :learning stuff is hard :) < 1209060122 0 :Judofyr!n=Judofyr@cE699BF51.dhcp.bluecom.no JOIN :#esoteric < 1209060147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you know, maybe we should prototype it in 50 languages at once < 1209060148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and pick the best < 1209060158 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which 50? < 1209060162 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ACTION should learn C(\+\+)? someday < 1209060222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: you suck at regexp < 1209060225 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: they are two completely different languages < 1209060227 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :learn both of them separately < 1209060229 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :err, wait < 1209060230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209060233 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then you'll realise you can program in either of them < 1209060234 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how CAN you shorten that.. < 1209060237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or any intermediate mix < 1209060243 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: actually, don't learn both < 1209060247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because you will fail at one of them. < 1209060259 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: learn both in case the one that you fail at is the one you learn < 1209060285 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just don't think of them as being the same language < 1209060297 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, no -- once you've learned one the other is about five million times harder to learn :) < 1209060313 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and as for the 50 languages.. < 1209060316 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: not if you have a well-adjusted mind < 1209060320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let's list the ones we've suggested in chronological order < 1209060329 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ruby, c, c++ i think so far < 1209060335 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :we can ignore the joke ones :p < 1209060339 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we mentioned Perl and Haskell < 1209060356 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: we're already doing perl < 1209060360 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ruby, haskell, c, c++ then < 1209060367 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ehird: how do I fail at regex? < 1209060376 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe we should do smalltalk, classes would be totally lightweight :P < 1209060410 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: ehird assumed that the regex could be shorter, but there isn't an obvious shorter way to write it < 1209060412 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :ehird: so if I can only learn one, which should I learn? < 1209060420 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION would say C < 1209060446 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :me too < 1209060446 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :C is reasonably unique among languages, in that it's one of the only truly portable languages that runs on absolutely anything and can even be used for embedded systems < 1209060452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :C++ is basicallly an awful language < 1209060456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whereas C++ is nice, but there are other languages that do the same thing < 1209060464 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and about 50% of programmers hate it < 1209060490 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Heh. < 1209060496 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just a warning - never, ever try and read just one everything2 article < 1209060499 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it *does not work* < 1209060513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you end up reading other articles as well? < 1209060519 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes < 1209060752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, Sam Hughes just added a comment system < 1209060752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :he < 1209060755 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'s so selling out < 1209060760 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with all this dynamic moo-harkey < 1209060945 0 :pikhq!unknown@unknown.invalid QUIT :Remote closed the connection < 1209060959 0 :pikhq!n=pikhq@209.248.125.70 JOIN :#esoteric < 1209060969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: what we really need is a metalanguage < 1209060978 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is clear and easy to use < 1209060980 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: alpaca < 1209060983 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :multi-paradigm < 1209060997 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and compiles into all commonly-used languages which support the same paradigms you use < 1209061009 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so we just start off by writing the objects and some of the code < 1209061013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ehis523talk < 1209061023 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then we can compile into Perl's OO model, or Haskell's, or C++'s, at will < 1209061057 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haskell doesn't have objects < 1209061058 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I do kind of like your idea of using Smalltalk, I'd have to learn it first < 1209061064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: not in the OO sense < 1209061068 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it has data structures < 1209061071 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and first-class functions < 1209061074 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :therefore you can write OO in it < 1209061081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: doesn't help with inheritance < 1209061086 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or duck typing < 1209061088 0 :sebbu!n=sebbu@ADijon-152-1-18-122.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1209061096 0 :Corun!unknown@unknown.invalid PRIVMSG #esoteric :duck duck duck duck duck duck duck... < 1209061097 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you can do inheritance by assignment < 1209061099 0 :Corun!unknown@unknown.invalid PRIVMSG #esoteric :GOOSE! < 1209061112 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :duck typing is harder but can be done using hashes < 1209061168 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact I was planning to use that method to do OO in Overload < 1209061173 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: We are ridiculous < 1209061176 0 :jix!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209061186 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: we're in #esoteric, what do you expect? < 1209061288 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Writing it in C would be fun. < 1209061305 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: how do you want to store the parse tree? < 1209061307 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*this->mrx_stkp[-7] = ++x.ptrr; < 1209061313 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hand optimized! < 1209061315 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :structs, like C-INTERCAL does? < 1209061324 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Beats me. < 1209061340 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: negative array indexes are always fun in C < 1209061352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: holy crap, ubuntu 8.04 looks nice < 1209061365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I'm downloading it at the moment < 1209061374 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I may create a new user afterwards just to see what it looks like by default < 1209061384 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because it keeps all settings across a distribution upgrade < 1209061402 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only 300 or so downloads out of about 2000 to go < 1209061412 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i've always hated that about upgrade < 1209061428 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i wish i could say 'I want to see this in shiny newness! I totally fscked up this system! Revert EVERYTHING!' < 1209061432 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'But please keep my precious data.' < 1209061440 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: then you delete the dot files in your home directory < 1209061444 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you get that < 1209061457 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but that's Dangerous < 1209061466 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes, you probably don't want to revert all your settings < 1209061471 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so decide which ones you do want to revert < 1209061483 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was just telling you how to do a revert EVERYTHING like you said < 1209061509 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and OFC, you can always just create a new username and have all those settings restored < 1209061529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you messed up the system settings, you just keep /home and reinstall everything else < 1209061592 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: So... on the subject of X)80f.sroiuoI|. < 1209061608 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I can't acctually make sense of that < 1209061612 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what lang is it in? < 1209061617 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209061627 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: keyboard < 1209062074 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: So hmm. I don't think Cyclexa WANTS to be implemented. < 1209062085 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :better Cyclexa than Magenta < 1209062095 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :define < 1209062117 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/Magenta < 1209062127 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's cursed, never try to implement it, you'll fail < 1209062149 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Is it yours < 1209062165 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1209062167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :seems not < 1209062179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: has anyone attempted? < 1209062186 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes < 1209062191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how many? < 1209062201 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't remember < 1209062210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the value 2 is at the back of my mind, but probably for a different reason < 1209062211 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'I got to be in charge of something without bollixing it up or giving it up too early' <-- Well, it'd be nice to be able to do this ;) < 1209062218 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyone recently? < 1209062224 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no < 1209062229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think 1999 was the last try < 1209062252 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wanna try? :) < 1209062311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no, it's cursed < 1209062312 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :Bye for now al < 1209062313 0 :Sgeo[College]!unknown@unknown.invalid PRIVMSG #esoteric :all < 1209062318 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bye Sgeo[College] < 1209062319 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: exactly! < 1209062322 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo[College]: bye < 1209062370 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: :) < 1209062404 0 :Sgeo[College]!unknown@unknown.invalid QUIT :"http://www.mibbit.com ajax IRC Client" < 1209062436 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it doesn't look hard.. < 1209062507 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: does it? < 1209062519 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: ever tried to implement INTERCAL? < 1209062527 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Implementing Magenta reminds me of that a bit < 1209062531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, i haven't < 1209062533 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but i want to, sometime < 1209062552 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: the problem is that interactions between flow control statements can get out of hand < 1209062556 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and Magenta has loads of them < 1209062565 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although it really needs the but-first statement too < 1209062607 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm trying to come up with a unique idea for an esolang < 1209062609 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's hard! < 1209062628 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: we don't have enough declarative esolangs at the moment < 1209062648 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i was just thinking of a prolog-alike < 1209062648 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1209062649 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :except, < 1209062652 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :without the truthnese < 1209062659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that is, there's no actual 'return value' < 1209062664 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :prolog has a pseudoreturn of true/false < 1209062671 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you mean pass/fail < 1209062675 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :true(X) would result in true being put in X though < 1209062677 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yeah < 1209062734 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, downloading Ubuntu H has finished < 1209062744 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so all sorts of breakage may happen at my end from now onwards < 1209062764 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :due to mixes between old and new bits of programs < 1209062778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'll just have to be careful to not close anything open, so the old FDs stay in existence < 1209062815 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: any other esolang ideas? < 1209062830 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there was my graph-rewrite idea I mentioned a while ago < 1209062835 0 :Hiato!n=Hiato@dsl-245-23-188.telkomadsl.co.za JOIN :#esoteric < 1209062838 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I didn't tell anyone the spec, though, just that I had the idea < 1209062846 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can explain the spec reasonably simply over IRC < 1209062854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if people here are interested < 1209062856 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::| < 1209062880 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :implementing it will be hard, though, I can't think of a marginally efficient way to do it, but am sure that one exists < 1209062942 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: any others? :-P < 1209062957 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably, but I'll have to think harder < 1209062962 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I want to do an update to BackFlip < 1209062971 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is TC despite still keeping the BackFlip style < 1209062982 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a very simple change: < 1209062992 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the program is wrapped into a cylinder < 1209063006 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the left and right sides are identified, so if you go off the right you end up back at the left, like in Befunge < 1209063025 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the program is copied upwards and downwards, so if you go off the top or bottom you end up in a different copy of the original program < 1209063028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's enough for TCness < 1209063033 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(I also have some I/O ideas) < 1209063044 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1209063045 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, and you only need flipping mirrors for that, the arrows are unnecessary < 1209063051 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1209063051 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1209063099 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: oh, also my hyper-Prolog, but it's uncomputable and so can't be implemented < 1209063147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :unhelpful < 1209063173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you seem really picky at the moment < 1209063191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :kyevan seems to have a decent idea for a new lang in #ircnomic, though... < 1209063299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i am always picky < 1209063299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1209063608 0 :Hiato!unknown@unknown.invalid QUIT :"Leaving." < 1209063747 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So! < 1209067790 0 :ais523!unknown@unknown.invalid QUIT :"(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"" < 1209068782 0 :oklofok!n=nnscript@oklopol.yok.utu.fi JOIN :#esoteric < 1209068859 0 :oklopol!unknown@unknown.invalid QUIT :Connection timed out < 1209069014 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: oko < 1209069320 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :heh, right now, i had to use IE because firefox just couldn't open webpages :) < 1209069326 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :firefox is my default < 1209069331 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :when it crashes < 1209069332 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :i open IE < 1209069336 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :and everything works again <3 < 1209069340 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric ::)))))) < 1209069350 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :ehird: okofolorance < 1209069362 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklofok: aodoaogk < 1209069446 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1209069487 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: came up with any AWESOME ESOLANG IDEAS yet???? < 1209069529 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :We need one oklopol! < 1209069542 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Because everyone is tired of Brainfuck! < 1209069657 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nopol was my esoest idea in a while < 1209069673 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i keep coming up with *usable* languages :< < 1209069686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: usable languages .. cool! < 1209069687 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tell me one < 1209069695 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, the fixed point idea, plus my best-effort prolog were quite nice, but neither is all that eso < 1209069720 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Just make it eso! < 1209069741 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Like replace all logical operator with | in your prolog thingy or something < 1209069750 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Ef i'm actually gonna implement, best-effort prolog is my impossible extension to prolog, perhaps i should integrate it with ais's < 1209069814 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what i'd like to invent after Ef is a whole new model of computation < 1209069822 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just have to come up with one < 1209069828 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1209069838 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not in the paradigm sense, the CA sense < 1209069858 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209069859 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :not CA < 1209069863 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :someone gimme the term < 1209069872 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: i want to implement ef < 1209069873 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :can i? < 1209069878 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1209069892 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps, once i specify it a bit more < 1209069905 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :atm, i just have a vague idea about the evaluation model, and the two examples < 1209069947 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Ef? < 1209069956 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :Ef is for Fixed point < 1209069989 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the idea is, function calls are executed infinite times < 1209070001 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yet the language is mostly imperative < 1209070012 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1209070013 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209070033 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :functions are first-class < 1209070035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: examples plz < 1209070040 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :just the two exist < 1209070041 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you've seen them < 1209070055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sort = {x:_;y:_;?xy=>(x,y)=(y,x)}; < 1209070055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pical = (.acc denom sign):{(acc + sign/denom) (denom + 2) (-sign)}; < 1209070055 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pi = (pical 1 3 -1) * 4; < 1209070076 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pi is calculated in the last to lines < 1209070083 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the first one is a slow sort function < 1209070102 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kinda like an imperative selection sort < 1209070106 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: show factorial < 1209070108 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::DDDDDDDDD < 1209070122 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lessee < 1209070205 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fac = (n .acc):{n > 0 => n-1 acc*n} < 1209070214 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :implicit recursion, and i'm using the whitespace separation thing < 1209070223 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so it's a bit eso :) < 1209070233 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: whut's acc < 1209070238 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :result < 1209070246 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh, that's incorrect < 1209070252 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fac = (.n acc):{n > 0 => n-1 acc*n} < 1209070261 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :we are finding the fixed point of n < 1209070274 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is an imperative factorial < 1209070277 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i dun get it < 1209070280 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209070281 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :good, good < 1209070290 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's a *bit* different from what you see usually < 1209070292 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :basically < 1209070296 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll step-through < 1209070318 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fac = (...):{...} <<< just make the function, (...) is for args, {...} is the body < 1209070327 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(.n acc) means we take two arrgs < 1209070329 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*args < 1209070334 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :n and acc < 1209070341 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :. means we are taking the fixed point of n < 1209070347 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :meaning we continue until n doesn't change anymore < 1209070353 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now for the body < 1209070371 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :{a => b} means if a, then do b < 1209070386 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a is n>0, so we do b until not a < 1209070395 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because there's implicit recursion when we return < 1209070395 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: this handles infinite recursion doesn't it < 1209070418 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :func = (.n):{n+func(n/2)} < 1209070420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :using explicit recursion < 1209070421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but < 1209070423 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well yeah you pretty much have to shortcut infinite recursion because you cannot escape it from within the language. < 1209070424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :func(1) => 2 < 1209070426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or something < 1209070427 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1209070433 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1209070439 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wha < 1209070442 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209070448 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :aaa < 1209070452 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that should work. < 1209070480 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it should be able to do something that simple perfectly, but usually you just get an abstraction < 1209070488 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's actually designed to be pretty *fast* < 1209070495 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :being imperative and all < 1209070515 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my confusion was cuz i though that tried to be factorial < 1209070519 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but indeed, you aren't a retard < 1209070564 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1209070572 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it's not correct though < 1209070576 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209070582 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: :((( < 1209070596 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's used a bit differently, you have to do it tail-recursively < 1209070601 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you *can* do it like that < 1209070607 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but that part of the language isn't done yet < 1209070617 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it's not supposed to be used that way < 1209070629 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try to fix it < 1209070644 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: yay < 1209070720 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :double = (n add):{n+add add/2} < 1209070720 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :double 7 3.5 < 1209070725 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is how you should do it atm < 1209070754 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :don't worry, it will get better, it's just i want to keep it pure until i have the basics. < 1209070774 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: i don < 1209070777 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'t get why two params < 1209070809 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1209070843 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(7 3.5) => (7+3.5 3.5/2) => (7+7/2+7/4 7/4) etc < 1209070844 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and < 1209070845 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1209070853 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :double = (n .add):{n+add add/2} < 1209070858 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so we get the fixed point of add < 1209070868 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait for it to reach zero, that is < 1209070925 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try to explain why yours would recurse infinitely < 1209070941 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :func = (.n):{n+func(n/2)} < 1209070942 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209070943 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1209070946 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :quite trivial: < 1209070952 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err... < 1209070958 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1209070973 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not that trivial to explain, it seems, but let's expand it < 1209070979 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :see what it evaluates to < 1209070996 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :first of all < 1209071019 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :f(n) means f(f(f(...f(n)...))) in Ef < 1209071021 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so < 1209071046 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :f(f(f(...f(n + f(f(...f(n/2)...)))...))) < 1209071073 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :f(f(f(...f(n + f(f(...f(n/2 + f(f(...f(n/4)...)))...)))...))) < 1209071084 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is this what you want? < 1209071118 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you are thinking functional, you should be thinking fixed-point :) < 1209071172 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :recursion should not be used just like that, unless you're using "boring functions", which i'll prolly call functions that don't take fixed point automaticall :) < 1209071173 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :y < 1209071205 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, you can do non-deterministic stuff, which pays up a bit for the fact you cannot easily do recursive stuff < 1209071272 0 :olsner!unknown@unknown.invalid QUIT :"Leaving" < 1209071288 0 :Iskr!unknown@unknown.invalid QUIT :"Leaving" < 1209071313 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1209071333 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: couldn't handle the fact you made an error and died? < 1209071344 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: nope < 1209071393 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :typical darwin award candidate? < 1209071404 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess boring functions aren't needed actually, it will just be a bit harder to do non tail-recursive stuff < 1209071407 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm fine with that < 1209071431 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't have to be a good paradigm, i just want it to be different! < 1209071500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: invent a language based on oko. < 1209071504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not the 3 characters < 1209071507 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but the zen of oko < 1209071509 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the oko of zen < 1209071510 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oko < 1209071517 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209071524 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, that must be done < 1209071546 0 :ais523!n=ais523@gb01-fap02.bham.ac.uk JOIN :#esoteric < 1209071551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: upgrade works? < 1209071568 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no < 1209071570 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I fixed it < 1209071574 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there was a file in /usr/local interfering with things < 1209071576 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :after the upgrade, I could only boot to command-line < 1209071581 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and that file caused loads of things to fail < 1209071584 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even man and netcat < 1209071596 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I renamed it < 1209071601 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then everything started working < 1209071615 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it was just a case of using synaptic to fix dependencies < 1209071615 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: /usr/local/iwillkillyou? < 1209071620 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a common issue. < 1209071624 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I stuck xx at the start of the filename < 1209071626 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :atm, i'm thinking for my next language i'll make something so complicated it can only be understood after 20 years of meditation in tibet, yet so beautiful after understanding it there is no need to continue living, the gist has been seen. < 1209071691 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's all i've decided sofar < 1209071700 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: is that the oko language < 1209071730 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes! It finally managed to update Linux itself < 1209071736 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's failed twice before < 1209071739 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: most likely < 1209071760 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: i submit this as a code snippit < 1209071765 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :%< > < 1209071774 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :understanding what it does is one of the core tenents of oko < 1209071784 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was thinking programs would sound like poems in an alien language < 1209071793 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but perhaps that too. < 1209071826 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :put _ for space in case there were others than the one between < and > < 1209071853 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wanna get that right, because fulfilling random wishes is important to me. < 1209071874 0 :ais523!unknown@unknown.invalid QUIT :"rebooting, will hopefully be back soon" < 1209072116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: watch... < 1209072127 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :%< o: { 1+ }> < 1209072133 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the art of where to put spaces is part of oko < 1209072139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but isn't that code beautiful < 1209072184 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :grcalc = (a b .ratio):{a+b a a/b} < 1209072184 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :goldenratio = grcalc 1 1 ! ratio < 1209072188 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is quite neat, imo < 1209072224 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :calculating golden ratio from the fact it's the limit of the ratio of two adjacent fibs < 1209072231 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :^> ,3 (a []) < < 1209072235 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: isnt this oko lovely < 1209072235 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it is pretty pretty < 1209072241 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :even my latest symbol? < 1209072242 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's ambigious < 1209072247 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but in a very pretty way < 1209072247 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :are there spaces? < 1209072251 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1209072254 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1209072254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the spaces give deep meaning to the code < 1209072261 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :use _ for them, i can't see them. < 1209072263 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean < 1209072264 0 :ais523!n=ais523@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1209072270 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if there are two adjacent ones < 1209072271 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: not more than one in a row < 1209072274 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay. < 1209072275 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but: < 1209072287 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a~__a$ \~ < 1209072292 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: looks nicer with just spaces though < 1209072296 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a~ a$ \~ < 1209072297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I think the system's still OK, but it's running a scheduled fsck < 1209072300 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :truly okoick < 1209072316 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I'm on IRC via telnet, from a UNIX box < 1209072318 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i really cannot see spaces < 1209072333 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :%< o: { 1+ }> < 1209072333 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :^> ,3 (a []) < < 1209072333 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a~__a$ \~ < 1209072340 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :are these the deep, meaningful examples? < 1209072356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably they have no obvious meaning < 1209072363 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that can easily be explained over IRC < 1209072403 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1209072406 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :presumably < 1209072414 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :these examples don't actually do anything meaningful < 1209072419 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but they are crucial to understand < 1209072428 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because they capture some of the key ideas of oko. < 1209072440 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: oh, right < 1209072449 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i failed. < 1209072451 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and they key ideas can't easily be explained either, presumably < 1209072473 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, they haven't yet been invented < 1209072479 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :`-` a .. b `-` < 1209072480 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but no, they couldn't be explained easily. < 1209072486 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: between the `-`s and the middle bit is 2 spaces < 1209072517 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but .. you've got to admit that these are mirrors ontowhich the oko may be viewed; nay, merely reflected - as such a viewing must be realised via contemplation of oko. < 1209072543 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a true oko would be foolish, or even impossible - as it is such that it must be realised independently and not given; < 1209072549 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay. now do you want any of this to mean what one might expect from normal languages? i'm thinking it isn't really parsed, or just executed from source like brainfuck... but something weird in-between < 1209072556 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :understanding oko code may be part of a path to which realisation may be achived. < 1209072566 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well said. < 1209072568 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1209072569 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it's .. hard to explain. like the rest of oko! < 1209072578 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :indeed! < 1209072594 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :we don't have enough mystery in the esolang world. < 1209072607 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :\=-_ "Ao" .<-> < 1209072609 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: some more oko < 1209072612 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird: comment @ golden ratio! < 1209072615 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :tell me it's awesome! < 1209072616 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it's awesome < 1209072628 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1209072631 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm thinking < 1209072639 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in oko, there are *entities* < 1209072649 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :entities are *aware* of everything happening around them < 1209072653 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: yes < 1209072667 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :everything depends on everything, somehow... in deep, meaningful ways < 1209072667 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :_-&29 [<] < 1209072671 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :some more oko, but that's BAD OKO < 1209072673 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you shouldn't use it < 1209072680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it does not have the pseudo-symmetrical oko nature < 1209072690 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll put that on the BAD list < 1209072694 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can just look at it and feel the hard crash it makes upon the oko psyche < 1209072695 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :can't you? < 1209072708 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it does not blend and fold like most oko; nay, it fights against them, to remove the enlightenment < 1209072720 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a major part of oko is learning to ward off such anti-oko with real, pure oko. < 1209072725 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the oko that can be realized is not the true oko < 1209072750 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but you can realise it in seperate peices, and you must combine them only as the oko nature within describes; < 1209072767 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :therefore you can utilize the true oko but not all at once, if realised all at once, it is not powerful, nay it is harmful < 1209072773 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and this is why true oko cannot be given < 1209072816 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, how do you know when a programmer is lying about oko? his fingers are typing. < 1209072834 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: hehe < 1209072865 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... about the language, it must be the opposite of languages trying to hide details and allow programmers to create new abstract levels on which to code... < 1209072866 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in oko < 1209072875 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: we're discussing Agora over in #ircnomic at the moment < 1209072876 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you have to understand the program as a whole < 1209072891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it's kind of... < 1209072895 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can understand the peices of oko contained within < 1209072898 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the program reveals itself < 1209072931 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :xD < 1209072934 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes! < 1209072937 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :exactly! < 1209072997 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the spec begins with 50 pages of meta-explanation about the true nature of oko < 1209073017 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it ends with the realization the language cannot actually be conceived via a spec. < 1209073076 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: you can conceive the language via a spec. it can be fully and totally formally defined and implemented. < 1209073084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :think about that. then, you will know oko more. < 1209073107 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it can be defined and implemented, yes < 1209073111 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but not actually understood. < 1209073172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: wrong < 1209073174 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps the spec need not say that < 1209073177 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is it? < 1209073178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it can be understood. < 1209073180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :think about that. < 1209073182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it is very deep < 1209073187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just think.. < 1209073189 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh, is it now? < 1209073191 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i shall. < 1209073248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: STOP THINKING IMMEDIATELY < 1209073254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Now you understand oko more. < 1209073259 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Am I right? < 1209073393 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: < 1209073406 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1209073464 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :<-- *& >-- < < 1209073470 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: that is 'mediaanre oko' < 1209073475 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it controls the flow of bad and good oko < 1209073481 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it is itself bad oko, but controlled < 1209073508 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oko? < 1209073512 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sounds good < 1209073516 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: Read logs. < 1209073552 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: oko also has the concept of 'recursive metaphors' < 1209073588 0 :ais523_!n=ais523@gb01-fap02.bham.ac.uk JOIN :#esoteric < 1209073595 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can you elaborate on them? < 1209073611 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps show me an example of that concept syntactified < 1209073613 0 :ais523!unknown@unknown.invalid QUIT :"my laptop is up again, yay!" < 1209073619 0 :Slereah_!n=Vampire_@ANantes-252-1-49-226.w82-126.abo.wanadoo.fr JOIN :#esoteric < 1209073626 0 :ais523_!unknown@unknown.invalid NICK :ais523 < 1209073687 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1209073842 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm thinking oko needs a parse *graph* < 1209074145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :clearly its grammar is not context-free. i think it is not even context-sensitive, and possibly not even general recursive, but proving so would probably violate Godel's incompleteness theorem. < 1209074188 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: recursive parse graph < 1209074189 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi ais523 < 1209074197 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :recursive? < 1209074199 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hi ehird < 1209074201 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what does that mean? :) < 1209074215 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: self-containing parse trees < 1209074243 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :a graph can "contain itself" by having internal links < 1209074252 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :graphs = sex < 1209074297 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1209074423 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: 1 < 1209074429 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :1? < 1209074443 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :recursive metaphor example? < 1209074518 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm, a syntax with a separate letter part (with somewhat sensible CV-structure) and character part might be nice < 1209074536 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: rec metaphor: < 1209074546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric := ~*a<#*~ < 1209074688 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://www.vjn.fi/pb/p415442436.txt <<< what do you think? < 1209074774 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: No load < 1209074780 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1209074783 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1209074800 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no, that's bad oko - it has no pseudosymmetrical nature < 1209074809 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and is badense < 1209074834 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i was more referring to the letter - character separation :) < 1209074845 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1209074850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :unsure < 1209074858 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i kinda likes it. < 1209074859 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it needs more blend < 1209074870 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :blend? < 1209074918 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1209074938 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not entirely sure what that means... should i... think about it? < 1209074946 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the answer is already within me? < 1209074965 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or do you mean actual syntacic blending? :) < 1209074968 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :t < 1209074990 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: both < 1209075191 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oko needs to be a very high-level language with the same "awkwardness" of adding stuff that something like thue has < 1209075201 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1209075203 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :both lack of modularity and high-levelness < 1209075207 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no? < 1209075262 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i love the idea of every program being something of a work of art that's basically impossible to comprehend, and even the slightest attempt to modify renders it useless < 1209075288 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but, with complex high-level concepts < 1209075390 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :something like intercal, but more insane. < 1209075405 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :much much more, i hear people can actually use it without going insane < 1209075570 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :they can? *cackle* *cough* *chirp* < 1209075689 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, people can't keep entirely sane using it, but they can usually fake a fairly good sane person afterwards. i'm talking poo out your mouth walk on your nose crazy < 1209076130 0 :Corun!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1209076147 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :poo out your mouth, walk on your nose? can insanity make you able to do that? < 1209076157 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i must have got a defect version. < 1209076212 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :Only rhinogrades can walk on their noses! < 1209076251 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :O_O < 1209076389 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"Thus perished all traces of the snouters, their unique ecosystem, and all the world's specialists on that intriguing subject . who happened to be holding their congress there at the time" :D < 1209076455 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :I wonder, was there ever a gigantic hoax in computer science? < 1209076460 0 :Slereah_!unknown@unknown.invalid PRIVMSG #esoteric :apart from Malbolge, that is! < 1209076650 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :wow, python is stupid < 1209076660 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :or rather, lazy < 1209076669 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lament: Haskell is lazy, not sure about Python < 1209076670 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :print foo(), bar(), baz() < 1209076673 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION assumes the Museum of Hoaxes link in that wikipedia article could lead you to something compsci < 1209076685 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if baz() raises an exception, foo() and bar() are still printed < 1209076789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: seriously? < 1209076789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1209076792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, fixed in py2k < 1209076796 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :print will be a function < 1209076832 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION hypothesises a genus of snouters that had returned to the sea, and remain to be rediscovered < 1209076979 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :py3k < 1209076985 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :but yes < 1209077632 0 :ais523!unknown@unknown.invalid QUIT :"(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"" < 1209077995 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :woohoo, esperanto dictionary lookup < 1209078002 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :lament@zayin ~/eo $ eo surtere < 1209078002 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :surtera : terrestrial < 1209078021 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(python is SO much easier to write this in than haskell would be :( ) < 1209078269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: source? < 1209078335 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :http://z3.ca/~lament/eo.py < 1209078373 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's really simple, but in haskell it would take me probably... five times longer to write? < 1209078392 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :with the same number of lines of code in the result... < 1209078616 0 :timotiis!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1209079101 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: am i allowed to make stylistic suggestions? < 1209079112 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ok, first, 'file' is deprecated and going away in py3k. use 'open' < 1209079116 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :secondly, you never close that file < 1209079124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you are on 2.5 use this: < 1209079130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with open(DICT_FILE) as dict: < 1209079133 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : for line in dict: ... < 1209079139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you're not, heres your ugly solution: < 1209079145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dict = open(DICT_FILE) < 1209079145 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :try: < 1209079147 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : .... < 1209079149 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :finally: < 1209079151 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :er... why? < 1209079151 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : dict.close() < 1209079157 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: because that closes the file < 1209079158 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :why should i close it? < 1209079170 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :um, you should always close files you open. < 1209079176 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1209079183 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's fun < 1209079183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/sigh < 1209079186 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :the program itself closes immediately < 1209079197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: the os keeps hold of file references < 1209079199 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :even after program exist < 1209079205 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :linux refcounts files and everything -- it can get sticky < 1209079207 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :best to close them all < 1209079213 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1209079222 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :sounds magical < 1209079235 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :next you'll be telling me i should free() all memory before exiting < 1209079255 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well the truth is that's pretty fun too. < 1209079257 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :are you saying the python runtime does not do this for me? < 1209079262 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: no, it does not < 1209079821 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :well, tough luck < 1209079833 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i didn't realize both python and linux sucked so badly < 1209079845 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i still don't believe it, though :) < 1209079857 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :what can happen if i open a file and don't close it? < 1209079880 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :why would linux fail to notice that a program that opened the file died? < 1209079918 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: don't ask me < 1209079926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but linux does refcount files and files aren't magically closed < 1209079951 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's rather hard to believe < 1209079971 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :files are so retro < 1209079999 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: i guess linux does it for speed < 1209080002 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :besides, suppose my program crashes < 1209080016 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :for example i shut down the computer < 1209080022 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :the file clearly doesn't get closed < 1209080029 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :obviously linux should be able to deal with situations like that < 1209080049 0 :oerjan!unknown@unknown.invalid QUIT :"To crash, perchance" < 1209080150 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :nice, added an irssi alias < 1209080239 0 :kwertii!n=kwertii@c-71-202-121-102.hsd1.ca.comcast.net JOIN :#esoteric < 1209080351 0 :sekhmet!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Do you have a reference for that, btw? Or example code? < 1209080365 0 :sekhmet!unknown@unknown.invalid PRIVMSG #esoteric :I'm quite surprised by that too, and my simple tests haven't been able to reproduce what you were saying yet < 1209080418 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sekhmet: i don't know, but just about every programming language i've used has had the majority strongly advocate it, and i'm sure i read something about it somewhere < 1209080432 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'd love to know if it's cargo cult programming -- doing it is really annoying < 1209080451 0 :sekhmet!unknown@unknown.invalid PRIVMSG #esoteric :Well right, it's Good Practice to close things you open in code < 1209080469 0 :sekhmet!unknown@unknown.invalid PRIVMSG #esoteric :I just find it really hard to believe that Linux would keep filehandles open after the owning process has died < 1209080474 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i bet it is < 1209080495 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: if it is then it's cargo cult programming that ~90% of intelligent programmers reccomend < 1209080497 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which would seem odd. < 1209080498 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(closing files before exiting) < 1209080509 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird: oddly i have never seen that recommendation. < 1209080521 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :like, never < 1209080581 0 :sekhmet!unknown@unknown.invalid PRIVMSG #esoteric :I've seen the recommendation quite often, and it certainly makes sense if you're writing long-running processes (daemons, other things that run in servers, etc) < 1209080588 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: maybe you should write your program in like every single language < 1209080589 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and pick the best < 1209080604 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you should do erlang next. parallel dictionary crunching! < 1209080617 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :sekhmet: there's a big difference between releasing resources in general, and releasing resources before exiting < 1209080657 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i just wanted an esperanto dictionary lookup program. I don't need to write it again. :) < 1209080706 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: but you can decide the best language that you will love and never whine to #haskell about it again ;) < 1209080707 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :on the plus side, i can write "/eo foje" or something and find out what the hell foje is < 1209081037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: what is /eo eo < 1209081091 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :eo is esperanto < 1209081151 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :"eo" is not an esperanto word, so /eo eo is "eo : Not found" < 1209081158 0 :Corun!n=Corun@cpc1-rdng15-0-0-cust168.winn.cable.ntl.com JOIN :#esoteric < 1209081197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: :)