< 1244073601 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then, write a specializer for that language < 1244073603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(tuned to the interpreter) < 1244073616 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that way you don't have to deal with the foibles of regular languages < 1244073649 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Then, crap out a specialiser. And an interpreter and compiler. < 1244073650 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1244073657 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1244073668 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Crap out a compiler. And an interpreter and specialiser. < 1244073679 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: stop confusing him < 1244073706 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: NEVER. < 1244073713 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i've got language FOO and interpreter for it written in FOO and then i make something that takes interpreter of language FOO and a program in language FOO and i get a compiler for that program in FOO < 1244073716 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1244073752 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ridiculous < 1244073777 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um they _don't_ have to be all the same language, i think < 1244073794 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :otherwise it might indeed be somewhat ridiculous < 1244073798 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244073802 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: here's what you do: < 1244073809 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you've got a language foo and an interpreter for it written in bar < 1244073829 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then you take something that takes that a program in language foo and an argument to it < 1244073841 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and you get the result as an optimized program just doing that calculation < 1244073842 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in language baz < 1244073848 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's the specializer < 1244073850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so the compiler is < 1244073855 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :specializer(interpreter,program) < 1244073899 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: then you take something that takes that a program in language foo and an argument to it << where's the interpreter here? < 1244073911 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: what < 1244073919 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the specializer doesn't need an interpreter; it understands the language < 1244073926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just like a compiler or an interpreter has innate knowledge of the language < 1244073927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh wait < 1244073929 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: i wrote it wrong < 1244073931 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let me rewrite < 1244073939 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you've got a language foo and an interpreter for it written in bar < 1244073945 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then you make something that takes that a program in language bar and an argument to it (its input) < 1244073960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and returns the result as an optimized program just doing that calculation with that input written in language baz < 1244073965 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that something is the specializer < 1244073967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so < 1244073969 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to make a compiler < 1244073970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you just do < 1244073976 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :specializer(interpreter,program_to_compile) < 1244073985 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it spits out a — hopefully fast — version of the "interpreter" mangled to just use that program < 1244073995 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :— with branches eliminated, constants folded, loops unrolled based on the structure < 1244073999 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and whatnot, to make it an efficient output program < 1244074146 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: get it? < 1244074149 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1244074154 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In other words, it has magically acted as a compiler. < 1244074156 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1244074171 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: of course, specializers don't really have much literature on them — but you could write an okay one < 1244074175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it'd be fun to play with < 1244074181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: for your case, you'd haev < 1244074182 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*have < 1244074187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo=SADOL < 1244074197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bar=one you invent for this project; simple but usable < 1244074200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :baz=LLVM < 1244074209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: and you can write the specializer in any language you feel comfortable with; c, ruby, etc. < 1244074248 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Writing the specialiser in a language it understands would be amazing, of course, but you don't need to... < 1244074250 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :s i am supposed to invent a language that could interpret sadol? < 1244074262 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: yep < 1244074272 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :make it simple with, preferably, lots of structural hints to utilize in the specialiser < 1244074290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: that's the case in the theoretical examples < 1244074299 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: you do crazy shit like specializer(specializer,specializer) < 1244074305 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which is \x.specializer(specializer,x) < 1244074315 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which is \y.specializer(x,y) < 1244074320 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and that's something like a compiler-compiler < 1244074326 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Yeah. That's crazy shit. < 1244074335 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but you only need one projection for this SADOL project < 1244074346 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yuh. < 1244074375 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://www.google.com/squared/search?q=4chan+memes < 1244074379 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Protip: No value found. < 1244074398 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :squared? < 1244074421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. < 1244074426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's like Alpha without the alpha. < 1244074431 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Or the computation. < 1244074498 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well if you have square, you have half of a specializer don't you? >:) < 1244074504 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/groan < 1244074518 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :o_O < 1244074526 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION didn't consider that a pun < 1244074546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: what did you mean? < 1244074592 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION notes this is the second time today someone laughed after not getting what he said... < 1244074603 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :fuck < 1244074625 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'm too stupid for that specializer thingy < 1244074641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: those specializers take two arguments don't they? < 1244074641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: just read it a few more times < 1244074645 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :draw some diagrams methodically for it < 1244074646 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :can't imagine how i would implement that in practice < 1244074649 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: assume f(x,y) = f x y < 1244074650 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :currying < 1244074660 0 :olsner!unknown@unknown.invalid QUIT :hubbard.freenode.net irc.freenode.net < 1244074661 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION swats ehird -----### < 1244074661 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for my specializer(specializer,specializer) example < 1244074680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: first, invent a simple language with a lot of structural hints (i.e. rich control structures and the like to express what the code is trying to do) < 1244074686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then, write a SADOL interp in it < 1244074692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and a simple, really-stupid interp for the language in anything < 1244074698 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :anyway (X, Y) is cartesian product, thus a square < 1244074699 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then, you can think about a specializer < 1244074703 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: lawl < 1244074722 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION may change his opinion about it being a pun < 1244074754 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: also specializer(specializer,specializer) = specializer^3 < 1244074756 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but that's cubed < 1244074759 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but I didn't realise at first < 1244074762 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: and a simple, really-stupid interp for the language in anything << and that interp will magically turnn sadol programs into anything? < 1244074770 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: no < 1244074777 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :stop thinking about specialization < 1244074796 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The specialiser comes after the language and interpreter. < 1244074798 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: but no thats not how a specializer works < 1244074803 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :okay, so i need one language and 2 interpreters < 1244074805 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1244074808 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :one interpreter, one specializer < 1244074813 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :stop thinking about specializers until the interp < 1244074857 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :todo for now: invent a language, implement that language, write a sadol interpreter in that language < 1244074900 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: s/language/language with lots of structural hints/ < 1244074902 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Strictly speaking don't need to implement aforementioned language, but it'd probably help. A lot. < 1244074903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :very important :-P < 1244074904 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :or rather, not < 1244074907 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it helps the specializer later < 1244074908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yeah < 1244074915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well you have to implement it < 1244074922 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but a specializer < 1244074926 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :compiler != interpreter != specializer < 1244074928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but all are implementations < 1244074945 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :so i need to write another interpreter for (language with lots of structural hints) < 1244074954 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Why does banker's rounding exist? < 1244074954 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Well, y'know what I mean. :p < 1244074956 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :in ruby for instance < 1244074961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: ...no < 1244074964 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: here's your todo: < 1244074994 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :invent a simple language with some structural hints, implement an interpreter for that language, write a sadol interpreter in that language, utilizing the control hints as much as possible (if you can't use many, add some more) < 1244074996 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1244075012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: it's flatter, statistically < 1244075019 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :that's fallacious < 1244075027 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :coppro: so's your mom < 1244075045 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :coppro: http://en.wikipedia.org/wiki/Rounding#Round-to-even_method < 1244075046 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :making [1.5,2.5] round to 2 and (2.5,3.5) round to 3, etc. does not improve distribution < 1244075062 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: interpreter for that simple language can be written in ruby? < 1244075066 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :practically? < 1244075068 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: sure; anything < 1244075072 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: it won't be used for the specializer < 1244075077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's just to get you something that works, for testing, etc < 1244075079 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i won't need to process ruby code < 1244075082 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1244075107 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1244075124 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'll replace sadol with something simpler < 1244075132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: aw < 1244075136 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but this saves you writing a sadol compiler < 1244075139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is the point :^) < 1244075159 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :nooga: Brainfuck. :p < 1244075163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the nice thing is that this language doesn't need to do much more than interpreter stuff < 1244075172 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can skimp on everything but structural stuff, a rich control structure set, string handling and a bit else < 1244075176 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: but the compiler will compile sadol to what? < 1244075178 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Or maybe just straight lambda expressions. < 1244075190 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: nothing; there is no compiler < 1244075191 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just specializations < 1244075196 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :to something that's interpretable by my interpretter written in ruby < 1244075198 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :rright? < 1244075200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.............. < 1244075204 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :nooga: You won't make a compiler. You will use the specialiser as a compiler. < 1244075209 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'd like sadol->MACHINE CODE!!!!!!1111111 < 1244075210 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: remember when i said stop thinking about a specializer because it's muddling your mind? < 1244075212 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :guess what! < 1244075218 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: it will do sadol→LLVM in the end < 1244075225 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but stop thinking about it, it doesn't matter atm < 1244075249 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1244075743 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1244075880 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1244075894 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :the hard thing is to design the language < 1244075913 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i started doing that and i came up with something that looks like sadol pretty much :D < 1244075959 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: sadol doesn't have many structural hints < 1244075967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: I know this because you keep talking about inferring and partially evaluating and the like < 1244075983 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1244075984 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1244076045 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wants to see a Brainfuck specialiser. :p < 1244076053 0 :olsner!n=salparot@h-60-96.A163.priv.bahnhof.se JOIN :#esoteric < 1244076055 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Useless? Well... Yes... < 1244076057 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i've added formal types < 1244076101 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i need: loops, stacks (or recursive functions), arrays, if-else, types (char, int, float) and IO < 1244076141 0 :lifthrasiir!unknown@unknown.invalid PRIVMSG #esoteric :nooga: hey, sadol has eval() construct?! < 1244076149 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1244076181 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Actually, a Brainfuck specialiser might not be too hard to do. Hmm. < 1244076211 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: rather trivial; you only have one input stream < 1244076217 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: and you just have to evaluate it for a while < 1244076222 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: actually < 1244076224 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just use esotope < 1244076233 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, actually, it wouldn't be tricky, come to think of it. < 1244076238 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: offset start of tape, change , to (move to correct tape length) < 1244076244 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :put initialization of input at start of program < 1244076246 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :feed to esotope < 1244076326 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And you could use that for the first projection. < 1244076332 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol !+1+"1 2 < 1244076333 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 2 < 1244076343 0 :Patashu!unknown@unknown.invalid PRIVMSG #esoteric :what's sadol? < 1244076345 0 :Patashu!unknown@unknown.invalid PRIVMSG #esoteric :stack based? < 1244076373 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: stack based, incidentally, is terrible for this kind of thing < 1244076385 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as it has very little structural information even about what goes to which function! < 1244076401 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yea < 1244076405 0 :Patashu!unknown@unknown.invalid PRIVMSG #esoteric :and what the function actually does < 1244076407 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :sadol is not stack based < 1244076410 0 :Patashu!unknown@unknown.invalid PRIVMSG #esoteric :can be changed depending on the state of the stack < 1244076411 0 :Patashu!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok < 1244076419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: the only difficult part about doing this in bf would be changing the ,s < 1244076426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and even that would be quite easy, pikhq, EXCEPT < 1244076427 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[>] < 1244076430 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oshi— < 1244076436 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Patashu: consider it as a retarded lisp without ( ) < 1244076486 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol :a3 :b2 :o"1* !`+o+a+"1 b < 1244076486 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :6 < 1244076488 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1244076489 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Varfuck, then? ;) < 1244076493 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :eval works < 1244076499 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: but the whole idea is using esotope to eliminate the cruft < 1244076506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :although esotope would have to be bf→bf to take true advantage < 1244076512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just write a bf backend < 1244076521 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not hard to do at all. < 1244076886 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Now, a Brainfuck->Brainfuck specialiser in Brainfuck... That'd be a tour de force. :p < 1244076896 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Erm. < 1244076905 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: compile esotope to BF < 1244076905 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tada < 1244076911 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :s/tour de force/$EXPRESSION_INDICATING_AWESOME/ < 1244076917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, it'd be slow; so use your specializer < 1244076948 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has something to hack on < 1244076970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yeah, I'm tempted now < 1244076978 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. < 1244076979 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: might work with something a little more featureful though? < 1244076982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :variables would help immensely. < 1244076994 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :PEBBLE. < 1244077001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :meh < 1244077003 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :not good bf < 1244077012 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, yeah... < 1244077280 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BYE < 1244077620 0 :Patashu!unknown@unknown.invalid QUIT :"Patashu/SteampunkX - MSN = Patashu@hotmail.com , AIM = Patashu0 , YIM = Patashu2 , Googletalk = Patashu0@gmail.com ." < 1244078073 0 :inurinternet!unknown@unknown.invalid QUIT :No route to host < 1244079571 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1244079830 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/499863 < 1244079832 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :bf in sadol < 1244079844 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure it can be done shorter < 1244080037 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadbf +++++++++[>+++++++++++++<-]>-. < 1244080037 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :t < 1244080040 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadbf +++++++++[>+++++++++++++<-]>-... < 1244080040 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :ttt < 1244080056 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :looks like it works < 1244080184 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen Hello, world! < 1244080187 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :126 ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. [158] < 1244080281 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!sadbf ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. < 1244080282 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1244080291 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'd say it works. < 1244080324 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :damn! < 1244080342 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i forgot to change mem length < 1244080350 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's only 10 cells < 1244080387 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :does !addinterp overwrite? < 1244080413 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is trying to figure out how to build a croquet mallet out of PVC pipe and mortar. < 1244080449 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I can't find the weight per cubic whatever of mortar ... < 1244080491 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :how to update interp in EgoBot < 1244080492 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :? < 1244080520 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :A real interp or a userinterp? < 1244080524 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :user < 1244080532 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :delinterp then addinterp < 1244080570 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadbf ++++++++++[>+++++++>++++++++++>++++>+<<<<-]>++.>+.+++++++..+++.>++++.------------.<++++++++.--------.+++.------.--------.>+.>. < 1244080570 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1244080597 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :cool i'd say < 1244080913 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadbf >+++++++++[<++++++>-]<...>++++++++++. < 1244080914 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :666 < 1244081260 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::M$0 :d:i,45000@>i-01(2]M0:i-i1:S$0:C;3:l#C-01:p:m0@:m%+m1d?=#Cp"1<:m?<-m10-s1-m1?=#Cp"1.!'2#Mm?=#Cp"1,:#Mm'1;0?=#Cp"1[]S-p1?=#Cp"1]?=#Mm00:p[S0:p+p1 < 1244081272 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :SADOL isn't very innovative and well designed < 1244081280 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but the code looks ugly for sure < 1244081564 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's something. < 1244081580 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ALMOST like teco < 1244082395 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: SADOL is parsed to neat AST and has really simple flow control, with strict typing it would be easy to mangle and specialize < 1244082397 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i think < 1244082862 0 :bsmntbombdood_!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244084440 0 :Corun!n=Corun@94-194-31-231.zone8.bethere.co.uk JOIN :#esoteric < 1244084872 0 :boily!n=boily@dsl-207-112-70-225.tor.primus.ca JOIN :#esoteric < 1244085053 0 :bsmntbombdood_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244085097 0 :bsmntbombdood_!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244085173 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hahah. I just discovered a partial evaluator for Tcl. < 1244085237 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's short. < 1244085309 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not very good, mind. < 1244085795 0 :boily!unknown@unknown.invalid QUIT :"leaving" < 1244086295 0 :bsmntbombdood_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244087030 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1244087178 0 :bsmntbombdood_!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244088251 0 :Corun!unknown@unknown.invalid QUIT :"Leaving..." < 1244088309 0 :nooga!unknown@unknown.invalid QUIT :Remote closed the connection < 1244089795 0 :bsmntbombdood_!unknown@unknown.invalid QUIT :Connection timed out < 1244089862 0 :bsmntbombdood_!n=gavin@97.118.129.22 JOIN :#esoteric < 1244090097 0 :coppro!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1244091034 0 :amca!n=amca@CPE-121-208-82-97.qld.bigpond.net.au JOIN :#esoteric < 1244092216 0 :bsmntbombdood_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244093603 0 :Patashu!n=Patashu@c122-106-162-185.carlnfd1.nsw.optusnet.com.au JOIN :#esoteric < 1244095428 0 :bootscats!n=throwthi@ip68-96-36-213.no.no.cox.net JOIN :#esoteric < 1244095507 0 :bootscats!unknown@unknown.invalid PART #esoteric :? < 1244096503 0 :kar8nga!n=kar8nga@a-46.vc-graz.ac.at JOIN :#esoteric < 1244097219 0 :Gracenotes!n=person@wikipedia/Gracenotes JOIN :#esoteric < 1244097542 0 :bsmntbombdood!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244100162 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1244100359 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244102238 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244102399 0 :clog!unknown@unknown.invalid QUIT :ended < 1244102400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1244103478 0 :bsmntbombdood__!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244103540 0 :bsmntbombdood__!unknown@unknown.invalid NICK :bsmntbombdood < 1244104358 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1244105663 0 :Slereah!n=lereah@nanpc319.in2p3.fr JOIN :#esoteric < 1244112471 0 :nooga!n=nooga@doj233.neoplus.adsl.tpnet.pl JOIN :#esoteric < 1244112538 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :weird silence -.- < 1244112552 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :nigga < 1244112557 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :*nooga < 1244112576 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :nougat? < 1244112616 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :nigger nigger nigger nigger nigger < 1244112623 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :dont be racist now < 1244112631 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i am not < 1244112636 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i just say a word < 1244112649 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :oh ok < 1244112661 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :where are you from, nooga < 1244112691 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :Poland, we've got tlds like perl script extensions :D < 1244112708 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :how unfortunate :( < 1244112712 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :why? < 1244112716 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :perl :D < 1244112718 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :D: < 1244112797 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :pl < 1244112798 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::> < 1244112807 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :poland > perl < 1244112869 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1244112999 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :YOU FORGOT POLAND DERP DERP < 1244113615 0 :nooga!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1244114864 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm... does anyone know a way to tell google you actually want a misspelling? When I'm googling for something that is almost the same spelling as a common word, apart from one letter it seems to return both what I wanted and results matching the common word instead... < 1244114893 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Adding quotes around the word (even if it's just one word) seems to sometimes help, but maybe not always. < 1244114898 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244114902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes that helped :) < 1244114999 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Use +foo for a single word < 1244115036 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1244115049 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, that worked too < 1244115091 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sees AnMaster and hurries to IWC < 1244115103 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, wow, I just did the same when I saw you < 1244115105 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I read it < 1244115164 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and it wasn't too bad < 1244115180 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1244115917 0 :KingOfKarlsruhe!n=nice@HSI-KBW-091-089-027-168.hsi2.kabelbw.de JOIN :#esoteric < 1244116020 0 :GregorR-L!n=gregor@pal-178-079.itap.purdue.edu JOIN :#esoteric < 1244116234 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Braaaaaaaaaaaaaains < 1244116258 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no such thing here < 1244116281 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :try #haskell next door < 1244116324 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Paaaaaancreases < 1244117419 0 :GregorR-L!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1244119044 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1244119077 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Where does the zombie-brain thing come from anyway? < 1244119091 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :What pulp piece of shit started that trop < 1244119092 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :e < 1244119234 0 :puzzlet!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1244119250 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1244119265 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Slereah: http://en.wikipedia.org/wiki/Return_of_the_Living_Dead < 1244119320 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :"Return's interpretation of zombies has influenced cultural interpretations of zombies, particularly with regard to their hunger for brains and their constant vocalization of this hunger." < 1244119321 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric ::o < 1244119658 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1244119669 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1244119727 0 :Corun!n=Corun@94-194-31-231.zone8.bethere.co.uk JOIN :#esoteric < 1244120086 0 :amca!unknown@unknown.invalid QUIT :"Farewell" < 1244120288 0 :puzzlet!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1244120301 0 :puzzlet!n=puzzlet@147.46.241.168 JOIN :#esoteric < 1244120445 0 :bsmntbombdood!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244121200 0 :Corun!unknown@unknown.invalid NICK :Corun|away < 1244121739 0 :Corun|away!unknown@unknown.invalid NICK :Corun < 1244121955 0 :ais523!n=ais523@147.188.254.121 JOIN :#esoteric < 1244122291 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244122409 0 :nooga!n=nooga@dqg219.neoplus.adsl.tpnet.pl JOIN :#esoteric < 1244122519 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :heeh < 1244122685 0 :Judofyr!n=Judofyr@c2391BF51.dhcp.bluecom.no JOIN :#esoteric < 1244122773 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1244123136 0 :Patashu!unknown@unknown.invalid QUIT :"Patashu/SteampunkX - MSN = Patashu@hotmail.com , AIM = Patashu0 , YIM = Patashu2 , Googletalk = Patashu0@gmail.com ." < 1244124978 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hi < 1244124984 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1244125015 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how defend7 can /still/ be third on the BF Joust leaderboard, after all this time... < 1244125027 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I'm running on that hello world again to see how much better it is now. Btw to be able to process it I have to do ulimit -v $((512 * 1024)) first... Otherwise it will swap trash (the ulimit ends up forcing erlang's GC to run more often...) < 1244125048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I love the idea of swap-trashing when you try to compile hello world < 1244125111 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I think it happens when it changes all those initial adds to create the "every third cell" pattern from adds to sets... < 1244125118 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :could be < 1244125140 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :gcc-bf swap-trashes when trying to remove the run-length encoding from that bit, I think < 1244125145 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is why I have to output in RLE < 1244125152 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Remote closed the connection < 1244125186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I don't. Once I saw that I decided to parse it directly as combined nodes. Instead of first expanding it then combining it again in the combiner pass. < 1244125217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :generated file size is now 928K < 1244125222 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :was 951K before < 1244125233 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the triumph of #esoteric engineering: getting hello world to less than a megabyte < 1244125264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, depends on WHAT hello world :P < 1244125278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you're ruining the joke! < 1244125282 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :those generated by !bf_txtgen and such I can constant fold of course < 1244125294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :p[-36]+=255; < 1244125294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :p[-31]=0; < 1244125294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :p[-30]+=255; < 1244125294 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :p[-25]=0; < 1244125300 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders what on earth that is for < 1244125303 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a long section like that < 1244125311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: probably saving registers on the stack < 1244125319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1244125323 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that wouldn't be the saving itself < 1244125328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the deallocation of stack elements once it was done < 1244125339 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so actually, that's restoring, not saving < 1244125344 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh. I just can't see how that would deallocate anything < 1244125346 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think < 1244125375 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and stack storage is marked as allocated or not via a flag stored in every sixth tape element < 1244125390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which also doubles up as stack pointer and a stack of frame pointers < 1244125392 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just to complicate things < 1244125474 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well I can't yet figure out how much a [>>>] will move or such. I have some ideas about how you could do it for some cases. But most programs won't gain much from it. Not even lostkingdom. And GCC-BF code is not really a priority for me, since I can't download gcc-bf myself currently. < 1244125505 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's the only really sane way to implement pointers in Brainfuck < 1244125529 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"really sane way" for some values of sane, surely. < 1244125531 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, interestingly enough, that hello world doesn't have a lot of balanced loops that can be folded into polynomials it seems < 1244125557 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like [>++>+++<<-] into p[1]=2*p[0]; p[2]=3*p[0];p[0]=0; < 1244125558 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why would you expect it to? < 1244125567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :polynomials aren't a particularly good way to implement things < 1244125569 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well, lostking has a lot of them < 1244125573 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there are polynomials, but they go /sideways/ < 1244125578 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, sideways? < 1244125584 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, moving values along the tape a specified, variable, distance < 1244125587 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244125601 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, variable distance.... How do you encode it < 1244125601 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most values are more than 8-bit in C < 1244125607 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I encode it as separate bytes < 1244125616 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, some way to detect such loops and figure them out < 1244125640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: do you still have gcc-bf source from last time I pasted it? < 1244125645 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no < 1244125648 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok < 1244125664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :only that hello world program < 1244125829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm I guess this could be optimised quite a bit: http://pastebin.ca/1447552 but I don't really know how to detect that in a program... < 1244125855 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :somehow that needs an else for the if < 1244125919 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wonder what my 32-bit addition code looks like when compiled to C? < 1244125929 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for all I know, that might be it < 1244125933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although I think it's a bit longer than that < 1244125943 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is just a short section < 1244125945 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1244125952 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244125997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[.>] would be "output nul-terminated string" wouldn't it? Assuming current cell is known to be non-zero. Otherwise same but in a "if". < 1244126015 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that could possibly be optimised somehow... < 1244126059 0 :Corun!unknown@unknown.invalid QUIT :"Leaving..." < 1244126202 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Can you do an arc with the picture package of latex? < 1244126255 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Owait, they have a "marking angles" < 1244126256 0 :Slereah!unknown@unknown.invalid PRIVMSG #esoteric :Perfect < 1244126339 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, when looking at the generated output my conclusion is that there are many ways to optimise it, but most of them are hard with my current design. < 1244126355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: perhaps I should send you the annotated output? < 1244126364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, could be useful < 1244126369 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what does the annotation say < 1244126375 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bfrle (my BF interp designed specifically for debugging gcc-bf) can read special notations in comments to check that the program's behaving as intended < 1244126382 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it specifies the tape location the pointer's meant to be at < 1244126384 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh and is "(%999999999 Assertion error)" for < 1244126395 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, it's an assertion that can't be met < 1244126405 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244126409 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so when running under BFRLE, the program would crash with an error at that point < 1244126413 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :meaning that I'd made a mistake in my code < 1244126479 0 :Corun!n=Corun@94-194-31-231.zone8.bethere.co.uk JOIN :#esoteric < 1244126481 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :annotated output could be useful yes. But in general it is hard to map source to output for non-trivial files. Even if I did try to store some position info it wouldn't help a lot as the the code has been resorted a lot and so on. < 1244126498 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"sorting by offset" is one of the key passes really. < 1244126501 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, knowing where the pointer is is very useful in optimising < 1244126518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although it's rather hard to prove that the annotations aren't lying < 1244126534 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes sure. But I can't do any optimisations that won't work for normal BF... < 1244126538 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :without knowing the basic rules for a gcc-bf tape (every sixth space does the same thing, etc) < 1244126558 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I can do the special parsing sure in a module < 1244126559 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I think a really really hyperoptimising BF compiler would deduce the tape structure used by the program < 1244126576 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most BF programs, after all, reserve, say, every second tape cell as temp, or something like that < 1244126588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a compiler that could figure out that the program was doing that could optimise much better than any that didn't < 1244126604 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Are you trying to make [AnMaster's bf-optimizer generating C code](gcc-bf(X)) an identity transformation? < 1244126605 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is very hard to do in general. Correct results is most important. Otherwise I would end up somewhat like G++, where program behaviour often change depending on if -O0 or -O2 is used... < 1244126623 0 :Corun!unknown@unknown.invalid QUIT :Client Quit < 1244126651 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: that would be ideal, but probably impossible < 1244126655 0 :Corun!n=Corun@94-194-31-231.zone8.bethere.co.uk JOIN :#esoteric < 1244126663 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although idioms for, say, 32-bit addition, might be recognisable < 1244126672 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I suspect (but don't know) that figuring out and proving the "reserved cells" bit is in general not computable... < 1244126687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes they might be. If I knew them < 1244126690 0 :fungebob!n=chatzill@65.66.121.86 JOIN :#esoteric < 1244126700 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :incidentally, Europeans here, have you remembered to vote in the elections? < 1244126711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes of course < 1244126723 0 :Corun!unknown@unknown.invalid QUIT :Client Quit < 1244126726 0 :bsmntbombdood!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244126737 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(they are today across Europe, I assume?) < 1244126739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Idioms I special case (and variants of them of course): [-] [>] [>+>+<<-] < 1244126751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, can't you "pre-vote" in US? Or whatever they call it < 1244126753 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1244126755 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :UK* < 1244126758 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the first is mov, the third is tadd2 < 1244126759 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that was a messed up typo < 1244126764 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so they're ABI instructions < 1244126766 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ? < 1244126768 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :where < 1244126771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :link? < 1244126778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ABI = gcc-bf's intermediate format < 1244126791 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :two of the three idioms you mentioned appear in the asm < 1244126798 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, [-] is "mov"? < 1244126804 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, with a constant 0 < 1244126807 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :[-] -> set < 1244126817 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mov only does constants in gcc-bf < 1244126824 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you have to use transfer-addition to copy variables < 1244126828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah.. my compiler calls < and > mov < 1244126832 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so you confused me there < 1244126836 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that is so un-ASMy < 1244126842 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, bf != asm to me < 1244126850 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but ABI == asm < 1244126854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or at least, it's designed to look like it < 1244126854 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1244126856 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and act much like it < 1244126860 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because gcc expects to output in asm < 1244126865 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Er. Our election-days are next Saturday and Sunday. < 1244126877 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: elections are on the weekends for you? < 1244126885 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're always on Thursdays in the UK < 1244126894 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :6th and 7th were also the days in Italy, if I understood the TV programming right. < 1244126902 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :+- = add <> = mov [ = loop , = in . = out < 1244126912 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :] never shows up after the parsing. < 1244126939 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway you said you were going to paste an annotated version < 1244126941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :link? < 1244126946 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I haven't yet < 1244126948 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suggested it < 1244126953 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'd better not from this connection < 1244126959 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Oh? Is it large? < 1244126959 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because large uploads tend to fail mysteriously < 1244126967 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yes, it's slightly larger than the non-annotated version < 1244126970 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :due to having annotations in < 1244126971 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244126976 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"The European Parliament elections began on Thursday in Britain and the Netherlands -- Irish people -- would vote on Friday. In Italy and the Czech Republic the voting process will continue from Friday to Sunday. Elections will begin Saturday in Latvia, Cyprus, Malta, and Slovakia, while in all the remaining 18 EU members the elections will take place on Sunday." < 1244127002 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway [>] [>>] and so on are "seek" for me. < 1244127007 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so why did AnMaster say he'd already voted? < 1244127008 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and gcc-bf contains quite a lot of them < 1244127019 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :"pre-vote" < 1244127022 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, "pre-vote". Can't you do it there? I don't know if that is the right English word < 1244127029 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: they have postal votes < 1244127047 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but many people don't trust them, parties are accused of rigging them every now and then < 1244127056 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :We've usually done the pre-voting thing (in the local post office) but now we were in Italy for the pre-voting day. So next Sunday it is. < 1244127058 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well, here they aren't at the post offices. < 1244127066 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're done via the postal service < 1244127067 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the one I went to was at the local library. < 1244127088 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the idea is that they're for people who are too ill/old/in a completely different part of the country to go to a polling station < 1244127098 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you get a ballot paper sent to you by post, and send it back by post < 1244127106 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't work like that here < 1244127115 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, there are several problems with the UK way of doing it < 1244127122 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it defeats the point of secret ballots, for one thing < 1244127127 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if there are any non-secret ways to vote < 1244127150 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway gcc-bf *does* contains lots of the [>] idiom < 1244127160 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :[>] would be incredibly unusual < 1244127164 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ? < 1244127172 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, or variants. Like [>>>] < 1244127178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I can see they are there < 1244127182 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :[>>>] and [<<<] are used to go between addresses known at compile-time and addresses that aren't < 1244127185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :while(*p) p-=6; < 1244127190 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that was [<<<<<<] for example < 1244127210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whereas [<<<<<<] and [>>>>>>] are used to jump between registers, the top of the stack, and the bottom of the frame < 1244127215 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1244127235 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :[[>>>>>>]>>>>>>]<<<<<< goes from a fixed cell near the registers to the top of stack marker cell, for instance < 1244127237 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway. I consider [>>] and [>] and [<] variants of the same idiom < 1244127240 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1244127240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the top of stack data is just next to it < 1244127251 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric : it defeats the point of secret ballots, for one thing // howzat? < 1244127264 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :same as [>+>+<<-] [>+<-] [>>>>+<<<<-] and so on are also variants < 1244127276 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: if there's any method of voting via which you can proved which way you voted (such as postal voting, showing someone the ballot before posting), you can be bribed to use it < 1244127296 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :secret ballots are meant to block bribery/extortion by setting things up so that there's no way you can prove what your vote was < 1244127306 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the key is: "index cell is changed with +/-1, a variable number of other cells are changed with +1 (if index cell was -1) or -1 (if index cell was +1) < 1244127341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that pass isn't used a lot any more, since the polynomial pass can now handle that. < 1244127364 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :So nowdays it is just a special case of the polynomial code. < 1244127399 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so probably going to use general polynomial only for that one in the future < 1244127668 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway using gccbfrle parser is now trivial: ./in-between -p hworld1.bfrle < 1244127670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1244127674 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :paste fail < 1244127683 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :./in-between -p gccbfrle hworld1.bfrle < 1244127687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is what I meant < 1244127818 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244127895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, tell me when you plan to upload that annotated version < 1244127904 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably not for a while < 1244127912 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not even my email is working atm < 1244127917 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1244128108 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm. Is propagating polynomials a good idea? I mean for example: p[0] = 2*p[1] + 5*p[4]; p[-1] = 2*p[0]; could possibly gain from setting p[0] in the second to the expression of the former. But if the value of p[0] was used in several other polynomials it might be worse to do that for each < 1244128116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, any idea how to figure out if it is a gain or a loss? < 1244128121 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you see what I mean < 1244128123 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: try both and compare < 1244128138 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :when in doubt, benchmark < 1244128146 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it could differ from case to case < 1244128156 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well then, get your compiler to autobenchmark < 1244128169 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: then draw cool charts < 1244128191 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Yes; when in doubt, draw a chart. < 1244128267 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Or even a graph.) < 1244128313 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how does gcc handle something like: int a = y + 3*x; int b = 8*a; int c = 4 * a; < 1244128316 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or such < 1244128328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: probably depends on the rest of the program < 1244128330 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what if the assignment to c wasn't there? < 1244128337 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but as this is gcc, "badly" is most likely the resulting guess < 1244128348 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, lets assume a better compiler then? < 1244128358 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like pathscale maybe < 1244128364 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or clang? < 1244128371 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :is clang better for C code yet? < 1244128377 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I had mixed results using it < 1244128393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sometimes faster than gcc, sometimes slower than gcc < 1244128400 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sometimes no significant difference < 1244128469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I really need to get that "convert to directed graph" pass done... < 1244128480 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I still have no clue how to handle loops in that. < 1244128598 0 :myndzi!i=myndzi@tengototen.net JOIN :#esoteric < 1244128971 0 :FireFly!n=FireFly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1244129249 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :do you have interesting ideas on this matter? I am currently toying around with a little backtracking language (it is basically backtracking via assigning a range of possible values to variables and looking for the fixed point of a rewrite system).. but now I need something for composite types < 1244129274 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, interesting ideas about backtracking? Hm < 1244129284 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :so basically you could say "my variable x can take all combinations of {confused, sane} and {liar, truth}" < 1244129292 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not really. Haven't used backtracking a lot really. < 1244129306 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :or as in einsteins puzzle, like "this house has an inhabitant which comes from this set, and a pet from this set, ..." < 1244129307 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :always thought I should try prolog some day though < 1244129314 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :hehe, I dislike prolog < 1244129321 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :tetha: why? < 1244129321 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :too many really akward quirks to make it highlevel imo < 1244129323 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I rather like it < 1244129330 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and ah, I see < 1244129336 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I like Prolog because it's a really interesting sort of tarpit < 1244129356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the whole language can be implemented in terms of its, syntax, comma, and :- < 1244129365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/its, syntax/its syntax/ < 1244129374 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1244129443 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :it just grows really annoying if you have to start doing things like f(x,y) :- foo is bar, bar is baz, foo(baz, qux), y is qux, andsoon. and probably I have written down an endless loop due to the order < 1244129473 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :tetha: you could create a version of Prolog which had return values as syntactic sugar easily enough < 1244129477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I'm not sure that would add to the language < 1244129486 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the symmetry of predicates is one of its nicest features < 1244129529 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :na, I just dislike the need for explicit binding < 1244129556 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :my intuition says that fac(n,i) :- fac(n-1,i/n). or something like that should work < 1244129572 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, btw if you want to mark some bit of code as unreachable, in-between could benefit from there being a easily detectable infinite loop at that point. It can then figure out that "if we don't get here due to a loop/if/whatever not being taken, then we don't need to consider anything in here for constant propagation purposes (or for other passes either)" < 1244129586 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think esotope-bfc could benefit from that too < 1244129589 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why would I generate unreachable code? < 1244129594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, asserts < 1244129603 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't know they're unreachable < 1244129605 0 :myndzi\!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244129607 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's why there's an assert there < 1244129614 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least, they ought to be unreachable < 1244129618 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I don't know for certain < 1244129618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, if they are reached, what do you do now? < 1244129623 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :exit, I think < 1244129629 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, in what way < 1244129638 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean. it seems fairly hard to get out of there < 1244129641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: by setting the IP to 0 and doing another iteration of the main loop < 1244129644 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :due to the deep nesting < 1244129651 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty easy to get out of anywhere, no matter how deeply nested it is < 1244129669 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how much is this a compiler to bf, and how much is this a compiler to something with a bf VM? < 1244129670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :set cc0/1/2/3 all to zero, a couple of flag elements to appropriate values < 1244129677 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you'll fall right out of the loop < 1244129679 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it's a bit of both < 1244129687 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244129694 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's basically a processor emulator in BF, memory-wise < 1244129696 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but pure BF code-wise < 1244129698 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that's rather confusing < 1244129703 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :imagine a processor with BF microcode < 1244129710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I don't want to < 1244129713 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1244129720 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it sounds too insane < 1244129724 0 :bsmntbombdood!n=gavin@97-118-129-22.hlrn.qwest.net JOIN :#esoteric < 1244129728 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a separate code/data architecture < 1244129734 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the data is stored in an emulated processor < 1244129738 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whereas the code is purely BF < 1244129743 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the processor emulator is also BF < 1244129755 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's just used to jump between bits of memory < 1244129826 0 :BeholdMyGlory!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1244129863 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, btw, I think in-between can do at least one thing esotope-bfc couldn't last I looked: turn some unbalanced loops into ifs. < 1244129888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like: [code here >> [-]>+<] < 1244129896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or similiar < 1244129916 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not sure if lifthrasiir handles that now < 1244130143 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :one of the codespikes from yesterday btw looks like this: http://nopaste.org/p/a2MmTTHxl < 1244130150 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :codespike? < 1244130154 0 :ehird_!n=ehird@208.78.103.223 JOIN :#esoteric < 1244130164 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hi ehird_ < 1244130196 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I basically wrote down some code which I figured should work and examined if it can be parsed, evaluated and makes any sense at all < 1244130213 0 :pikhq!n=pikhq@75-106-100-121.cust.wildblue.net JOIN :#esoteric < 1244130276 0 :ehird!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1244130290 0 :ehird_!unknown@unknown.invalid NICK :ehird < 1244130643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, does this seem sane to you: http://pastebin.ca/1447639 ? < 1244130652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't know enough about this sort of stuff < 1244130663 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I don't know how to handle some of the cases < 1244130722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: looks like you're halfway to inventing monads already < 1244130740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm? It is just representing a bit of bf code as a directed graph < 1244130750 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to allow better optimisation < 1244130754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: monads are more ubiquitous than you might think < 1244130775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :currently in-between often isn't able to figure out optimisations across long stretches of irrelevant code < 1244130787 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, do you mean about the IO ordering? < 1244130789 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Success < 1244130790 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yes < 1244130828 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well my plan is that this should allow me to do DCE as well. < 1244130878 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :dead stores is what in-between currently is worst at eliminating for non-trivial cases. Due to it being far back in the linked list already, so going back would often be a pain. < 1244130910 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I do try to have some passes scanning backwards, but that doesn't work too well except for trivial cases. < 1244130931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway, any idea how to handle ifs and similar? < 1244130933 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and loops < 1244130935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I'm lost there < 1244130986 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Working on a specializer, or just a compiler? < 1244131004 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and should I have edges both ways, or just in one direction (that is: either "this is reached by" or "this reaches", or both)? < 1244131008 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, bf compiler... < 1244131018 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I'm not an expert on such things... < 1244131031 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyone here good at it? Or any good resource to read about this? < 1244131045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(not in bookstore preferred) < 1244131055 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :in doubt, the dragon book < 1244131056 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(I mean, online, free) < 1244131061 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, what is that < 1244131072 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :the dragon book is the holy bible of compiler construction < 1244131102 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, why that name? < 1244131144 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :because the cover images usually are dragons of different color < 1244131146 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1244131147 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244131167 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :dragons and knighs to be precise < 1244131178 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :knighs? :D < 1244131201 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :knights :) < 1244131205 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244131207 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :with LALR-parser-generator-lances < 1244131214 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :heh... < 1244131240 0 :Slereah_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244131260 0 :Slereah_!n=butt@92.135.11.239 JOIN :#esoteric < 1244131326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, really what I'm trying to make is a dependency graph... < 1244131366 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :do you mean a control flow graph? < 1244131393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, I don't know.. < 1244131456 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, possibly dependencies between memory stores. Basically representing BF code as a graph so I can work on that so I can eliminate dead stores and such < 1244131474 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244131477 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and propagate values/constants and such < 1244131484 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :I think you want to lookat SSA forms and optimizations on such < 1244131489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :currently I have scanning optimisation passes, that just scans forwards. < 1244131520 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, hm... How would one represent a BF loop still? I'm pretty sure I have to end one graph at an unbalanced loop and start a new one after... < 1244131530 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but for balanced loops < 1244131536 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it might be possible to do something < 1244131538 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :same for ifs < 1244131555 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :loops and ifs in the SSA-form are branches and joins or cycles < 1244131562 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(which are just loops that I previously figured out will run at most once) < 1244131570 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm < 1244131572 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :together with phi-nodes which join the values depending on the edge you come from < 1244131621 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :DO_PROCESS [#6236]: [setq(0,u(num_to_exit,rand(1,4)))][u(open,%q0)][switch(rand(0,1),0,u(open,u(next_exit,%q0)),1,u(close,u(next_exit,%q0)))][switch(rand(0,1),0,u(open,u(next_exit,u(next_exit,%q0))),1,u(close,u(next_exit,u(next_exit,%q0))))][switch(rand(0,1),0,u(open,u(next_exit,u(next_exit,u(next_exit,%q0)))),1,u(close,u(next_exit,u(next_exit,u(next_exit,%q0)))))][switch(u(player_x),u(dest_x),switch(u(player_y),u(dest_y),u(do_win)))] < 1244131644 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I could have written that to be less ugly, but it works as is < 1244131657 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, so how does one represent SSA best? The compiler I'm working on is written in Erlang, which is functional and single-assignment... < 1244131702 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is a built in "digraph" module for directed graphs.. So it would possibly be useful if I could somehow use that. < 1244131754 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :take a look at the article on wikipedia, it's not that bad < 1244131775 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is reading it already < 1244131808 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1244131895 0 :pikhq!n=pikhq@75-106-100-121.cust.wildblue.net JOIN :#esoteric < 1244131957 0 :Slereah!unknown@unknown.invalid QUIT :"Leaving" < 1244132143 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, you mentioned control flow graph too. Forgive my ignorance, but when do you use such? < 1244132330 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :you can use it to make statements about the execution of program statements, so for example "i dont need this program statement until that program statement happens, so I can move the first program statement into this branch and thus remove some required computation from before the branch" < 1244132346 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :and moving things into a branch (for example) could improve runtime < 1244132373 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1244132452 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I do similar things for a few simple cases, but not using a graph. < 1244132455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but that sounds useful too < 1244132525 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, ok, I can see how to represent ifs in SSA form. Not sure about loops in general though... < 1244132579 0 :tetha!unknown@unknown.invalid PRIVMSG #esoteric :how are brainfucks semantics with respect to unbalanced loops? < 1244132641 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Work just fine. (making loop unrolling a tiny bit tricky) < 1244132643 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :tetha, well I meant "Not sure about balanced loops in general". For unbalanced loops/ifs it probably isn't possible at all. I don't plan to handle those. Rather I would begin a new block after such cases. < 1244132736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, for unbalanced loops you can't solve the issue in general. You can possibly figure it out in a few cases. Like +>+>[-]<<[>] will end up at the just zeroed cell. < 1244132756 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in general, it would be TC to figure out where it ends up < 1244133736 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, tell me when you paste that annotated version < 1244134550 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1244134575 0 :BeholdMyGlory!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1244134848 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what's SSA? < 1244135040 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nooga: single static assignment < 1244135048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :instead of a = a + 1 increasing a < 1244135064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it creates a new variable (say, a1), does a1 = a + 1, and replaces all uses of a with a1 in the rest of the program < 1244135071 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :looping is left as an exercise to the reader < 1244135108 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what for? O_o < 1244135319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, an exercise I fail to figure out < 1244135340 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: lambda binding, to generate infinite new variables < 1244135344 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nooga: various purposes < 1244135354 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm. Not sure what you mean with that < 1244135356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it makes implementation a lot easier; some compilers (such as gcc) compile via that form < 1244135375 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although gcc doesn't use SSA for loops, just for basic blocks < 1244135419 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I have it figured out for basic blocks and for balanced ifs. Not for anything else though... < 1244135433 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :imbalanced ifs, it's obviously impossible < 1244135438 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :balanced whiles should be easy though < 1244135449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how < 1244135455 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: same way as ifs < 1244135464 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a while loop is equivalent to an infinite chain of igs < 1244135466 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*ifs < 1244135485 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so phi(var-before-loop, var at end of loop) at the beginning of the loop? < 1244135487 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or something < 1244135492 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1244135500 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :"probably"? < 1244135503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm trying to debug TAEB's Sokoban spoilers < 1244135512 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: as in, I don't particularly care, because I'm working on something else < 1244135517 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what was the lambda thing you mentioned btw? < 1244135522 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and sorry to disturb youy < 1244135524 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you* < 1244135530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: looping via recursions < 1244135533 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*recursion < 1244135538 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because an SSA progam can't loop via iteration < 1244135539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, as for ifs I meant "balanced ifs with no loops inside" < 1244135550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hrrm < 1244135555 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ooh, good point < 1244135559 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a while could use infinite variables < 1244135572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, while(1) {a++;} doesn't have an SSA form < 1244135573 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, uh? < 1244135586 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so what do you do when you hit a loop like that < 1244135605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you want to be really insane, you could replace while loops with state machines < 1244135611 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but decompiling them afterwards would be a pain < 1244135615 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it wouldn't work on unbalanced loops < 1244135622 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :such as [+] (except I would have converted that to a "set" already) < 1244135662 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but surely there are more complex ones I haven't handled already < 1244135685 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lets say... ,[>--<,] < 1244135707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how would you handle that example in SSA? < 1244135725 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you can't, there are clearly an infinite number of variables < 1244135733 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :normally people break SSA slightly at such points < 1244135742 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and do what instead? < 1244135770 0 :MigoMipo!i=c1b7fd21@gateway/web/ajax/mibbit.com/x-e4910989489228e5 JOIN :#esoteric < 1244135783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: something else < 1244135791 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ordinary imperative-style, for instance < 1244135801 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what if you know the loop is finite, but don't know number of iterations. Like ,[>++>,.<<-] < 1244135802 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :put it this way: you can't SSA an entire program without some form of recursion concept < 1244135819 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: if you know max iterations, you could unroll it < 1244135822 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably not worth it though < 1244135839 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes I realise I have to give up on unbalanced loops. But question is, do I have to give up on balanced ones too? < 1244135855 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you don't have to, but possibly you should < 1244135869 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can rely on the fact that variables max out at 255 to work out the max number of iterations < 1244135878 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then convert to a chain of ifs < 1244135881 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that's insane < 1244135896 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that would be pessimsation < 1244136005 0 :impomatic!n=John@nat67.mia.three.co.uk JOIN :#esoteric < 1244136012 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how does SSA form relate to control flow graph btw. Do they coexist for different bits... or do they somehow conflict? < 1244136031 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://nopaste.org/p/a2MmTTHxl < does it work? < 1244136033 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and how would one implement control flow graph for bf in general.. < 1244136070 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, why not test it yourself. You haven't even told us what language it is in... < 1244136086 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's not mine < 1244136090 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :someone pasted it < 1244136100 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :still what language < 1244136116 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i don't have idea < 1244136144 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :then what do you want us to do about it < 1244136198 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :urgggh < 1244136205 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :someone pasted it previously < 1244136210 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i thought he's still here < 1244136244 0 :KingOfKarlsruhe!n=nice@HSI-KBW-091-089-027-168.hsi2.kabelbw.de JOIN :#esoteric < 1244136251 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes off to futz with his specialiser. < 1244136254 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :tetha's still here, for certain values of "here" < 1244136267 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The hard part is, of course, the freaking loop unrolling. < 1244136288 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it isn't too bad when loop is balanced. < 1244136295 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :can still be tricky sometimes < 1244136542 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I don't think I can currently handle [->[->++<]<] for example.. it ends up as something like: while(p[0]) { p[0]-=1; p[2]+=2*p[1]; p[1] = 0; } unless I can figure out iteration count of the outer loop. < 1244136546 0 :MigoMipo!unknown@unknown.invalid QUIT :"http://www.mibbit.com ajax IRC Client" < 1244136690 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: writing a specializer? :D < 1244137200 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :nooga: Yes. < 1244137346 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION considers a C processor. Not sure how < 1244137355 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1244138503 0 :AnMaster!unknown@unknown.invalid QUIT :Connection timed out < 1244138594 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hah, bing's autocompletions for "linux" are hilarious < 1244138612 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ORLY? < 1244138615 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"linux", "linux windows", "linux microsoft", "linux vista" are the first four < 1244139014 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :;D < 1244139017 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yea < 1244139325 0 :Gracenotes!unknown@unknown.invalid PRIVMSG #esoteric :still like that? < 1244139439 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Gracenotes: I checked less than 20 minutes ago < 1244139444 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I'd be surprised if it wasn't < 1244139479 0 :Gracenotes!unknown@unknown.invalid PRIVMSG #esoteric :I suppose they're not too concerned about the well-publicized screenshot. Not like they would be < 1244139526 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Do not pull off your head to avoid dissolution. It never works. < 1244139591 0 :Gracenotes!unknown@unknown.invalid PRIVMSG #esoteric :anyway, Linux Vista is my favorite OS! < 1244139653 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Why should it change? It'll adapt to the users < 1244139740 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the worrying thing is, people will see the famous autocomplete and do the searches it suggests out of curiosity < 1244139744 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it's a self-reinforcing loop < 1244139764 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Possibly < 1244140205 0 :inurinternet!n=nuri@rrcs-74-62-7-76.west.biz.rr.com JOIN :#esoteric < 1244140449 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhuh < 1244140498 0 :AnMaster!n=AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1244140623 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :My specialiser is currently doing as little loop unrolling as possible... < 1244140640 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Hooray, laziness. < 1244140757 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :you specialize bf interpreter written in C? < 1244140779 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Nah, hacking it together in Tcl. < 1244140786 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And... Specialise BF interpreter? Wha? < 1244140963 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ah sry < 1244140978 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i mixed your specializer with AnMaster's compiler < 1244141023 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If I wanted a good specialiser, I'd probably start by forking esotope... < 1244141033 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :As it is, meh. I can hack something together rather quickly. < 1244141052 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, ? < 1244141079 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: decompiler? < 1244141088 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, esotope-bfc is in python btw < 1244141096 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, what are you talking about. Notice I just joined < 1244141121 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Yeah, I know. I've read it. < 1244141131 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :nothing nothing < 1244141189 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, and what is your specialiser taking as input and generating as output? I know what a specialiser is in theory. But I assume you need to take some specific input format still < 1244141237 0 :jix_!n=jix@dyndsl-095-033-120-019.ewe-ip-backbone.de JOIN :#esoteric < 1244141289 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Part of stdin, generating Brainfuck code. < 1244141326 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, uhu? < 1244141362 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, so the original program you are specialising is in BF? And the output is a specialised bf program? < 1244141369 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1244141379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also wth is it that is disk trashing every few seconds.. < 1244141392 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not exceptionally useful, I know. ;) < 1244141510 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :SANDWICH < 1244141843 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :instead of writing specializer i'd just write sadol->exec compiler in ruby < 1244141853 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :then rewrite the compiler in sadol < 1244141871 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and i'd end up with sadol->exec compiler in sadol < 1244141895 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :that would be able to compile itself < 1244141939 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :A specialiser is much more interesting, though. < 1244141952 0 :jix!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244141971 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :maybe < 1244141981 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but it makes my brain sore < 1244142009 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's because you fail. < 1244142112 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1244142146 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION observes that LostKingdom doesn't get much out of his method of specialisation < 1244142173 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... Since it kinda has a "Would you like to play again?" thing at the end. < 1244142317 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Not exceptionally useful, I know. ;) < 1244142319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well < 1244142339 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about a bf interpreter written in bf, and a bf program < 1244142374 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, also... why would the "Would you like to play again?" prevent anything if you answered n ? < 1244142393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, and one of the best things for lostkingdom is to do dead code elimination < 1244142397 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it has some dead loops < 1244142399 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the save could also confuse things < 1244142407 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, save? < 1244142412 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it has save? < 1244142413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how? < 1244142413 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it saves to memory < 1244142418 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1244142419 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you can reload from the same bit of memory < 1244142449 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but isn't that a bit pointless. Or can you ask it to dump it so you can write it in a file? < 1244142468 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no way to dump < 1244142475 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's useful for going back when you've made a mistake < 1244142481 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to prevent having to restart whenever you die < 1244142499 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I do have actual save files of Lost Kingdom, but only because I wrote a serialising BF interp < 1244142938 0 :kar8nga!n=kar8nga@e-30.vc-graz.ac.at JOIN :#esoteric < 1244143217 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what about pasting that annotated one btw? < 1244143239 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ok, if you insist < 1244143322 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION compiles < 1244143462 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: , enjoy < 1244143467 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the annotations are comments starting with % < 1244143477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which are actually comments, they don't affect the program, just comment on it < 1244143550 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: My specialiser does dead code elimination, just because it's trivial. < 1244143676 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If LostKingdom didn't have that "Would you like to restart" bit, it could trivially generate a version of LostKingdom without long or short output... < 1244143729 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Hmm. So, GCC-BF works to some extent? < 1244143736 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Was BF Joust inspired by any other programming game? I haven't seen a capture the flag game before. < 1244143740 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: not really < 1244143748 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that hello world was doctored until it worked < 1244143754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: it was loosely inspired by corewar, I think < 1244143755 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1244143770 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :capture-the-flag wouldn't really work in most langs, I imagine < 1244143779 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Also, Brainfuck Mode... Hmm. < 1244143787 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it's only half of capture-the-flag, as you don't have to transport the flag back to your own base < 1244143961 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION might want the source for that Brainfuck mode < 1244143993 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: it's floating around on pastebin somewhere < 1244144374 0 :tetha!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1244144581 0 :tetha!n=hk@pD9EE52E0.dip.t-dialin.net JOIN :#esoteric < 1244144581 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Remote closed the connection < 1244144581 0 :BeholdMyGlory_!n=behold@d83-183-181-73.cust.tele2.se JOIN :#esoteric < 1244144594 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, thanks < 1244144615 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, err < 1244144617 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that isn't right < 1244144621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :>>>%2512+ < 1244144621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :>>>%2515+ < 1244144621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :>>>%2518+ < 1244144621 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :>>>%2521+ < 1244144624 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what does the % mean? < 1244144632 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it introduces annotations < 1244144635 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which show tape positions < 1244144643 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :%2512 means "the pointer is definitely at tape location 2512" < 1244144656 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and bfrle will dump tape if it isn't, to aid in debugging < 1244144664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anything else that might mess up parsing if you just discard these? < 1244144670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no < 1244144672 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're comments < 1244144676 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what is %mark? < 1244144683 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it means that the pointer is currently at the mark < 1244144689 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is a memory location which can be moved to and from easily < 1244144706 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the mark is marked by writing a 0 in the line of 1s that's at every third location, and that I go to so much trouble setting up < 1244144707 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, there isn't anything describing those idioms your mentioned though < 1244144709 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :? < 1244144716 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I can jump from the mark to the left end of the tape using [>>>] [<<<] < 1244144726 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, one or the other, depending on which way I'm going < 1244144739 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean general ones < 1244144745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like 32-bit addition or such < 1244144752 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(or whatever it was you mentioned before) < 1244144767 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, no < 1244144769 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just gcc-bf source < 1244144772 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stuff that will not mess up for other bf programs that aren't from gcc-bf. < 1244144778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a text file somewhere, but it's wrong and out of date < 1244144779 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :When GCC-BF works moderately well, I think I'll have to write a Brainfuck specialiser in C. ;) < 1244144792 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, Hm. Since I don't have a local copy of the source... < 1244144948 0 :kar8nga!unknown@unknown.invalid QUIT :Remote closed the connection < 1244144958 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, So. Any chance of getting a copy of it? < 1244144969 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Success < 1244144978 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: not right now, I'm busy < 1244144991 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it doesn't work properly yet, although you're free to try to make it work by yourself < 1244145014 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, well. Knowing the idioms would be potentially useful in any case < 1244145020 0 :BeholdMyGlory_!unknown@unknown.invalid NICK :BeholdMyGlory < 1244145027 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't even know how many are correct < 1244145039 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders about some generic way to represent special cased idioms that won't require updating all the optimiser passes < 1244145045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I can't think of one < 1244145073 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: something like OIL? < 1244145117 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm? I mean if I add a "32 bit addition" node I need to add code to all the optimiser passes to tell them how to handle it < 1244145129 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for example < 1244145131 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OIL just used C to represent all the intermediate code < 1244145140 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and only one optimiser pass needed that information < 1244145144 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I just special-cased it < 1244145145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the constant propagation pass needs to know what instructions clobber and what ones doesn't < 1244145150 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and what ones use a value < 1244145151 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1244145155 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: err... < 1244145159 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :same for many other passes < 1244145166 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :c = d; /* d not clobbered */ < 1244145174 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :c = d; d = 0; /* d clobbered */ < 1244145177 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, sure. that would be a polynomial < 1244145195 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but lets say I add "32-bit addition", then that means 4 cells will be clobbered < 1244145195 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you use a simple language to represent the transformations, there's no need for hundreds of special cases < 1244145200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just a few general ones < 1244145208 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :32-bit addition wouldn't be a single node < 1244145211 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I'm not C specific. I can have other backends < 1244145212 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but a C description of what the operation did < 1244145219 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's no real reason to pick C in particular < 1244145226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except it has a decent instruction set for this sort of thing < 1244145238 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you just need some simple arithmetic language to represent what the idioms are doing < 1244145239 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I mean, all code tries to be backend agnostic. I plan to add other output languages too < 1244145242 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I have code in place for it < 1244145254 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OIL's backend agnostic too, doesn't mean it can't use C operators internally < 1244145272 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, sure. But lets consider turning [>] into a special "seek" node. Agree that other passes need to know that it is unbalanced for example? < 1244145285 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no < 1244145287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and passes need to know IO instructions can't be reordered < 1244145292 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it sets the IP to a different value to what it has originally < 1244145302 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :therefore, you can deduce it's unbalanced by looking at the resulting code < 1244145313 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes. But I reorder > relative other stuff (except seek and unbalanced loops). < 1244145323 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :this happen rather early on < 1244145387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I change to use "offsets from current base" and then the > and < pile up in front of the next place they can't move past < 1244145387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they are then merged into a single move node there < 1244145387 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :anyway, later on some other pass might remove that loop if it found out that it was a dead loop < 1244145393 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the constant propagation pass for example < 1244145404 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :they those > are now free to move forwards even more < 1244145411 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, see what I mean? < 1244145424 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244145434 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a case of ip++; ip--; < 1244145437 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which can pile up, and combine < 1244145444 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that's just still a simple C operator < 1244145446 0 :impomatic!unknown@unknown.invalid PART #esoteric :? < 1244145454 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you need to know if something's imbalanced, look to see if it assigns to the IP < 1244145455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, consider: [-]>++<[>>] < 1244145469 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that unbalanced loop is dead < 1244145488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a[x]=0; ip++; a[x]+=2; ip--; while(a[x]) ip+=2; < 1244145502 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :after one pass of your optimiser, that will become a[x]=0; a[x+1]+=2; < 1244145507 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and at that point, there are no assignments to the ip < 1244145512 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the passes, such as "combiner", "shifter", "constant propagator", "loop analysis", "initial memory assumed to be 0" and so on are run after each other until nothing changes < 1244145512 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it now knows the loop is balanced < 1244145518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and can do more optimisations < 1244145521 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lostkingdom takes something like 10 iterations < 1244145525 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you just run all the passes repeatedly until you get no change < 1244145567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, as I just said yes < 1244145567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1244145567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: so really, you don't need a balanced/unbalanced loop flag at all < 1244145567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, the point is, if I add a new type of "node" in my "parse tree", the various passes need to know what to do with it < 1244145567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just as long as you use a simple enough representation for your intermediate forms < 1244145567 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or they could produce broken code < 1244145567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you /do not add new nodes/ < 1244145569 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you use just a few nodes, and assemble programs out of them < 1244145576 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if, while, +, -, *, /, = should be enough < 1244145670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you forgot "repeat". When you know number of iterations < 1244145670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but when unrolling would be a bad idea < 1244145670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like huge ones with lots of stuff that is hard to fold < 1244145670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :while loop with a separate counter? < 1244145670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that'll be optimised by the C compiler better than you could optimise it by hand < 1244145670 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(it turns into something like {int i; for (i=0; i<12; i++) { foo }} < 1244145673 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :) < 1244145681 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1244145693 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's {int i=0; while(i<2) {foo; i++;}} < 1244145693 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but how could a normal loop node represent it? < 1244145708 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they are equivalent, as long as you aren't messing with break/continue, and you aren't < 1244145713 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so there it is, represented with a while node < 1244145723 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but various passes exploit the fact that the iteration count is known < 1244145726 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to optimise better < 1244145735 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they can match that specific pattern, then < 1244145737 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like knowing it will always be run if we hit it < 1244145745 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or do you not have powerful pattern matching? < 1244145758 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what I mean is, you write your repeat node in terms of low-level instructions < 1244145758 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :unlike a while loop in general, which might have 0 for current cell and thus never run < 1244145764 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you don't have to special-case it everywhere < 1244145767 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only in the few places it matters < 1244145778 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm. < 1244145823 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, for loops and loop like I do have a general way. But when you add "complex expression" instead of just "set, add" then things aren't so easy < 1244145940 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1244145993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, in particular the various passes need to know if the instruction 1) has a body (loops, ifs, ...) 2) performs IO (thus need to be strictly ordered compared to other instructions) 3) is unbalanced with variable movement (thus you can't assume values are at the offsets you expect after) 4) moves pointer fixed amount (yes this is needed, otherwise you couldn't figure out a dead unbalanced loop lik < 1244145993 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :e >[-]>++<[>>], the constant propagator need to offsets it's known data at the > before the unbalanced loop) < 1244146005 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :* ais523 wonders how defend7 can /still/ be third on the BF Joust leaderboard, after all this time... < 1244146015 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :5) What cells are read and what cells are written < 1244146030 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if your R/P/S theory is correct, maybe few others have tried to make defenders? < 1244146033 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I guess you could have some generic "introspection" framework for telling this < 1244146041 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: *counterdefenders? < 1244146050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but they have been, to knock defend9 down < 1244146087 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: generic's the idea < 1244146087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, but in general, optimising to high level "intrinsics" allow better output. So just representing things in low level terms isn't such a bright idea either... < 1244146087 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh so defend.* does not mean a defending program? < 1244146093 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I considered a generic "reverse inliner" < 1244146100 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: defend* are defending programs < 1244146101 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :for moving parts often used out in separate functions < 1244146108 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it might be useful for stuff like gcc-bf < 1244146111 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but in order to make a defence program do badly, you need a counterdefence program < 1244146116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :would be quite complex though < 1244146117 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rather than a second defence program < 1244146131 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but I don't think it would be impossible < 1244146177 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: um i thought the other way around, if you have R/P/S then there will always be a balance between the three types, so the only way to truly remove something is by outcompeting it by things in its own class? < 1244146192 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ah, interesting < 1244146195 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course that would only hold up to a poin < 1244146197 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*t < 1244146201 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think the problem is that there isn't a balance < 1244146210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's so much attack there that defence does well and counterdefence does badly < 1244146218 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ic < 1244146252 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so to restore balance, add more defence < 1244146322 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so how would your simple base thing handle that < 1244146333 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :suddenly you have separate trees. < 1244146336 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guess a balance would require all three types to participate equally in the arms race < 1244146354 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you record a description of what the function does < 1244146373 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION automatically thinks of dinosaur growth... < 1244146424 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :except predator/prey is not R/P/S afaik < 1244146428 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, and if you wanted to make an SSA form pass or group of passes then you need the SSA -> BF and BF -> SSA to be able to transform all relevant instructions < 1244146447 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you can express SSA pretty well with just the operators I stated < 1244146485 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sure. Still some stuff ends up better as intrinsics than with those basic things. Because now other passes can see an idiom with much less work < 1244146511 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway you forgot the difference between "output cell" and "output constant list of values". < 1244146571 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :outputting a constant list is just a row of output-constant < 1244146573 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in a simple language < 1244146577 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can handle that specially in the back end < 1244146583 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but there's no need to handle it specially before then < 1244146590 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because special-casing for no good reason = bad < 1244146611 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, as for writing all passes in something like OIL. I can't see that working for more than handling idioms. It wouldn't handle constant/copy/value propagation across long stretches of code very well would it? < 1244146625 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why not? < 1244146636 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you use a proper tree structure, you can just have an "arbitrary code here" node < 1244146650 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd probably need to generalise slightly to "arbitrary code not containing X here" < 1244146652 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, OIL can build some sort of internal state of known state of stuff? < 1244146657 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but not much more than that < 1244146659 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :maybe I misremembered then < 1244146661 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and OIL is a tree-rewriter < 1244146665 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the entire relevant state is on the tree < 1244146673 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :/because/ it's all so simple < 1244146686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you want to know if a particular element is assigned to? See if there's an assignment to it! < 1244146688 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :etc < 1244146692 0 :tombom!i=tombom@wikipedia/Tombomp JOIN :#esoteric < 1244146701 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so what is the proper tree structure for BF? < 1244146711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1244146733 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and my guess is, initially it's just a chain of commands, with [] going to subtrees < 1244146739 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it would get more convoluted as you optimised < 1244146929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : and my guess is, initially it's just a chain of commands, with [] going to subtrees < 1244146931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244146945 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is what I have < 1244146966 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a cons-style linked list < 1244147011 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :constant folding requires carrying some sort of state describing what you know are you are going along < 1244147030 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or pattern matching across the tree < 1244147033 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the tree /is/ the state < 1244147045 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, a bit hard to do across long stretches of code < 1244147049 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as far as I can see < 1244147053 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :err, no? < 1244147200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you just have a generic (lots of code that doesn't mention X or move the IP) < 1244147200 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you suggest I write a DSL then? < 1244147200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it would help to abbreviate lots of repetitive code, yes < 1244147200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wrote OIL because I realised dekludge.c was forming a pattern, and generating it automatically would avoid mistakes < 1244147200 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and speed and ease editing < 1244147268 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, my passes aren't really forming a pattern though, except what can be described in three lines of code: return new parse tree at end of list (either end of loop/if/whatever, or end of program, no need to make a difference, except in one of the passes), recurse into the body of the blocks. < 1244147284 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then you're doing it wrong, piling special-case on special-case < 1244147287 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :two passes, the shifter and the combiner operate on two instructions at a time. < 1244147360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :otherwise most handle one at a time < 1244147360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, writing a new pass isn't a lot of work for the basic bit. I do have some generic information about stuff functions < 1244147360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like "is a loop", "is io" and so on < 1244147379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so I don't even need to care if it is input or output, just "does this clobber anything?" < 1244147407 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, also I'm dropping some special cases, like "set from", since the polynomial code handles that now. < 1244147434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1244147464 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, doesn't gcc has quite a few special cases iirc. Or maybe I misremember < 1244147477 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not saying gcc is a good compiler < 1244147493 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :gcc more has absent cases < 1244147516 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if something doesn't turn up in most of the architectures it targets, the code for it in core generally just doesn't work < 1244147518 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah, you mean it doesn't properly handle stuff thus producing bad code? < 1244147524 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1244147526 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and all the processors that need it have their own workarounds < 1244147537 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that is so wrong... < 1244147546 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why not file patches to fix it < 1244147552 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :in the right places < 1244147575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: what, me? < 1244147588 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you, or others who work on such cpus < 1244147597 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I guess other uncommon ones could hit such code too < 1244147599 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because I'd then have to take the trouble to work out how it all worked < 1244147610 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, what about filing bugs then? < 1244147634 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with some simple test case < 1244147653 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd need to invent a fictional architecture < 1244147688 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway if I do find some copy of gcc-bf source, where would I find the idioms. I think I might have your first public version on another computer (which isn't easy to reach atm...) < 1244147705 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it probably was one only generating asm, and no bf < 1244147710 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: the ABI for them would be in the .md file < 1244147711 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so not sure if it is useful < 1244147718 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the translation of ABI to BF is in bf-ld < 1244147730 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I think that one was from before bf-ld was working < 1244147741 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it still isn't working < 1244147746 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, some ABI just isn't translated < 1244147753 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I saw that hello world you gave me < 1244147756 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244147760 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :_some_ < 1244147761 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1244147781 0 :ehird!unknown@unknown.invalid PART #esoteric :? < 1244147788 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway back then I think there was no bf-ld at all < 1244147795 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and even what is written is mostly untested < 1244147811 0 :ehird!n=ehird@208.78.103.223 JOIN :#esoteric < 1244147813 0 :ehird!unknown@unknown.invalid NICK :ehird_ < 1244147819 0 :ehird_!unknown@unknown.invalid PRIVMSG #esoteric :nooga: you want complex control flow < 1244147822 0 :ehird_!unknown@unknown.invalid NICK :ehird < 1244147835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, would be useful to know the tested idioms though, stuff you know work and which might be useful to optimise better. < 1244147895 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :otherwise I'm going to continue to try to make mandelbrot.b, LostKng.b, life.b as good as possible instead. Because IMO the output from gcc-bf is just too hard to handle < 1244147895 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure I know if any of it works < 1244147896 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :02:12 pikhq: Hahah. I just discovered a partial evaluator for Tcl. < 1244147898 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :linkify < 1244147909 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you know that hello world works I assume? < 1244147910 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :addition sort-of works, but I'm not yet sure if it does carries correctly < 1244147915 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :not that I'm able to compile it. < 1244147920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for all I know that pointer didn't cross a 256-byte boundary < 1244147929 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, compile the output C < 1244147942 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm < 1244147947 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not even with -O0? < 1244147955 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm disappointed < 1244147977 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, gcc OOMs generally. Using a ulimit of 1 GB. Anything more and I end up swap trashing badly < 1244148023 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I guess I could try clang. But the computer with it on has 512 MB RAM and is a pentium3. So maybe when I have time to build it on here instead. < 1244148023 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: http://wiki.tcl.tk/14514 < 1244148038 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Incredibly unuseful. < 1244148041 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :13:33 AnMaster: [.>] would be "output nul-terminated string" wouldn't it? Assuming current cell is known to be non-zero. Otherwise same but in a "if". < 1244148042 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :13:33 AnMaster: that could possibly be optimised somehow... < 1244148046 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what about splitting the output program into several files? < 1244148048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's what OIL does < 1244148051 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... Doesn't even do the first projection usefully. < 1244148051 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the incredibly difficult print(tape) < 1244148065 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: heh, yes < 1244148072 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd have to move the pointer to the end of that bit, though < 1244148073 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, one issue. You need to do strlen() to figure out where the pointer ends up after < 1244148079 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :13:45 ais523: incidentally, Europeans here, have you remembered to vote in the elections? < 1244148084 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bit of a problem there < 1244148085 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you weren't here < 1244148113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :did you nonetheless go to the ballot station and complain about not being given a ballot paper? < 1244148116 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, however, I suspect optimising gcc-bf output just isn't worth it in general. It generates too bloated output for it to currently be a useful high level language to write BF programs in. Even BFBASIC managed better. < 1244148125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no offence meant < 1244148130 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I know it is work in progress < 1244148131 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it's not designed for writing BF < 1244148133 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :14:12 AnMaster: is clang better for C code yet? < 1244148134 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244148135 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but to compile C programs to BF < 1244148139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it can optimize an array into variables for instance < 1244148142 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, see my comments to it < 1244148153 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, before you answer :P < 1244148184 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:39 ais523: not even with -O0? < 1244148184 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:39 ais523: I'm disappointed < 1244148185 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm. Not sure who would use it? < 1244148187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :his computer sucks badly < 1244148201 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it's probably better than mine < 1244148209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:41 AnMaster: ehird, one issue. You need to do strlen() to figure out where the pointer ends up after < 1244148216 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, or similiar < 1244148219 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just put print() or w/es source < 1244148223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and use the tape directly < 1244148227 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:41 ais523: did you nonetheless go to the ballot station and complain about not being given a ballot paper? < 1244148230 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what are you talking about < 1244148233 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure I don't want other 13-year-olds voting < 1244148235 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you have to move the pointer, because that's what [.>] does < 1244148240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in addition to doing output < 1244148246 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but for style points, just use the return value of printf < 1244148249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:43 AnMaster: ais523, hm. Not sure who would use it? < 1244148252 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nobody, it's for fun... < 1244148257 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, thanks for explaining that simple statement to ehird. < 1244148262 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I guess he needed it. < 1244148263 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: i know what the fuck it meant < 1244148264 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :admittedly, that's a bad idea for other reasons < 1244148266 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's still gun < 1244148268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*fun < 1244148269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:43 ehird: just put print() or w/es source < 1244148269 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:43 ehird: and use the tape directly < 1244148274 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, then why say something so stupid < 1244148274 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's exactly what ais523's would do < 1244148278 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.... what the fuck did I say? < 1244148286 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :.... < 1244148294 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i replied to your comment simply then ais523 restated it and you hail him in a passive-agressive complaint at me? < 1244148297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: [.>] is int temp = printf("%s",tape); tape += temp; < 1244148297 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what the hell did I say that was stupid? < 1244148303 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i know that, i'm not an idiot < 1244148309 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i was talking about avoiding printf overhead < 1244148311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster thinks you missed the tape += temp at the end < 1244148316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well i didn't < 1244148323 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I can't see where he mentioned it < 1244148325 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :any print function will advance a local variable pointer for that < 1244148330 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so if you put the print source directly in the program < 1244148333 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'll advance the tape pointer < 1244148341 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe you're the stupid one, for not understanding that? < 1244148350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, So what would "w/es" mean < 1244148355 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :w/e = whatever < 1244148359 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :print() or whatevers < 1244148364 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in whatever's < 1244148369 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, fputs is probably the right command here < 1244148371 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as in print() was a hypothetical fputs(stdout,...) < 1244148373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not puts, because it adds a newline < 1244148375 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right, I just forgot which way fputs was < 1244148378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so I said print() < 1244148382 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as an abstraction < 1244148395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : puts() and fputs() return a non-negative number on success, or EOF on error. < 1244148399 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.......... < 1244148416 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: moron (hey, I can insult people who don't understand too). i said UNROLL THE SOURCE OF THAT INTO THE CODE < 1244148421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AT ONE POINT IT WILL DO "PTR += BUFSIZE" < 1244148426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SO IF YOU S/PTR/TAPEPOINTER/ < 1244148431 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AND UNROLL THE CODE INTO THE GENERATED PRORGAM < 1244148435 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :IT AVOIDS STRLEN() < 1244148436 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AND STILL ADVANCES < 1244148441 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :got it now? < 1244148480 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244148487 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, except unrolling the source of it would be mostly pointless. Since the point of using such a call in the first place was to avoid system call overhead of repeated putchar. < 1244148496 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :.................. < 1244148497 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dude. < 1244148506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what the fuck do you think fputs does? outputs multiple chunks < 1244148518 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, it outputs it in chunks yes. < 1244148524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :........................ < 1244148525 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, I think it blits into the stdio buffer < 1244148529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and flushes if necessary < 1244148530 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and then advances the pointer ithas < 1244148531 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm maybe < 1244148531 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*it has < 1244148535 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so... < 1244148546 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's no syscall involved at all if the output isn't flushed after it IIRC < 1244148550 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: can you explain it to him plz? kthx < 1244148559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, anyway. Then it isn't much different from: while(p[0]) { putchar(p[0]); p++; } < 1244148565 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, even without inlining, you can exploit the return value of fputs < 1244148566 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so there is no point in optimising it < 1244148570 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ... of course it is < 1244148576 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do you know how stdio works at all < 1244148582 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :go read your fpust source < 1244148584 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*fputs < 1244148587 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, no. because putchar also blits into said buffer iirc < 1244148592 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: actually, the putchar version and fputs version could be optimised into the same thing by a decent compiler < 1244148598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of which gcc is not one < 1244148602 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they both translate to a block memcpy, with a bit of bookkeeping < 1244148621 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I know gcc tries to optimise that, I don't know how good at it it is, though < 1244148640 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you can't since it is undefined what the return value means for fputs. Except that it is "non negative on success". < 1244148645 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :Doesn't say it will be the length < 1244148649 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: oh? < 1244148653 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :according to man fputs < 1244148656 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's definitely the length for printf < 1244148657 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : puts() and fputs() return a non-negative number on success, or EOF on error. < 1244148661 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I quoted man page above < 1244148665 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes for printf it is < 1244148680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: that peval is ridiculously broken < 1244148686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :peval? < 1244148691 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://wiki.tcl.tk/14514 < 1244148693 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :read backlog < 1244148714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nah, I can't be bothered < 1244148718 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1244148722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I haven't been to sleep for 24 hours now, come to think of it < 1244148722 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It's a quick hack. ;) < 1244148728 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: then I won't bother linking in future < 1244148738 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :as I am not everyone's personal web/backlog searcher. < 1244148765 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :complex flow control? < 1244148806 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: yes < 1244148809 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it's more that the channel-jumping took me by surprise < 1244148812 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so that the specializer knows more about how the program flows < 1244148816 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :err < 1244148820 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it's referencing something in another channel, no surprise I didn't get it < 1244148821 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i didn't jump channel < 1244148824 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was in this channel < 1244148825 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, complex flow control WHERE? < 1244148828 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: oh < 1244148832 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: read backlog < 1244148834 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I assumed you were linking to the logs of another channel < 1244148838 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION assigns a hotkey to "read backlog" < 1244148838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what specific part of it < 1244148839 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :based on saying "read backlog" and giving a link < 1244148850 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: don't you have a search feature? < 1244148881 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, not easily atm. Since I recently reconnected to bouncer. I'm having hardware problems. So I keep having to restart stuff. < 1244148888 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :load tunes.org, Ctrl-F. < 1244148897 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pretty easy tbh. < 1244148897 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, too much work < 1244148903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: then don't complain to people < 1244148905 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since I don't even have X atm < 1244148912 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :due to said hardware issues. < 1244148913 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: can't imagine how to design something more complex than loops, ifs and functions < 1244148928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: write the SADOL interpreter, and look at any control flow patterns or verbosity < 1244148932 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :invent constructs to shorten them < 1244149007 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1244149165 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, I think ehird means like if you see something like "if (a == 1) ... else if (a == 2) ... else if (a == 4) ... else if (a = 7) ..." you might suddenly get a bright idea and invent "switch (a) { case 1: ... case 2: ... case 4: ... case 7 ... }" instead. < 1244149174 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :But I'm not sure. Considering how cryptic ehird can be < 1244149180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:55 ehird: nooga: write the SADOL interpreter, and look at any control flow patterns or verbosity < 1244149181 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:55 ehird: invent constructs to shorten them < 1244149183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's not cryptic at all < 1244149189 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's perfectly normal english, what do you want me to do, use Basic English? < 1244149197 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, Plain English < 1244149199 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but switch is harder to specialize? < 1244149203 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: DAMMIT < 1244149208 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i was going to say that < 1244149210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: sorry < 1244149213 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, in general. I consider all you say to potentially mean something else. Even if I don't see anything strange in it. < 1244149220 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I guessed you were going to say "I was going to say that" < 1244149221 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it seems to be the best solution for you < 1244149228 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :: < 1244149230 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :D < 1244149231 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if I'd been quick enough, I'd have said "I was going to say that" first < 1244149236 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so as to steal your next response too < 1244149237 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20:59 nooga: but switch is harder to specialize? < 1244149239 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1244149248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: stop thinking about a specializer; just give it the richest structures you can < 1244149249 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then your "I was going to say that" would be a correct description of my "I was going to say that" < 1244149267 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you wicked, wicked man < 1244149395 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :why is writing specialisers so popular suddenly. I mean the concept isn't exactly new. Yet it seems to have been mentioned a lot more in here recently than before... < 1244149523 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Yesterday I mentioned it to nooga for SADOL. < 1244149529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Then pikhq picked up on it and started working on it. < 1244149529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Fin. < 1244149541 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I first saw it in here about a week before that < 1244149547 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :think you mentioned it too then < 1244149553 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or maybe I misremember < 1244149559 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :a week or two ago < 1244149591 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :when I mentioned superoptimisers used to generate better peep hole optimisers. < 1244149609 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, aha! it is all your "fault" ;P < 1244150058 0 :nooga_!n=nooga@dpf107.neoplus.adsl.tpnet.pl JOIN :#esoteric < 1244150318 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :uh < 1244150360 0 :nooga!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244150397 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :o < 1244150420 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :richest structures < 1244150423 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :like what? ehird < 1244150430 0 :comex!unknown@unknown.invalid QUIT :Remote closed the connection < 1244150445 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :switch_on_ints < 1244150460 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :while_without_break < 1244150466 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga_: just do what i said < 1244150471 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :for_some < 1244150472 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :write sadol interp, see patterns in control structures < 1244150474 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :abstract < 1244150495 0 :poiuy_qwert!n=poiuyqwe@bas2-toronto47-1242437224.dsl.bell.ca JOIN :#esoteric < 1244150515 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :sadol interpreter, basically is an recursive function iwth switch inside < 1244150525 0 :nooga_!unknown@unknown.invalid PRIVMSG #esoteric :a* < 1244150766 0 :nooga_!unknown@unknown.invalid NICK :nooga < 1244150793 0 :ais523_!n=ais523@147.188.254.121 JOIN :#esoteric < 1244150804 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :;| < 1244150828 0 :ais523!unknown@unknown.invalid QUIT :Dead socket < 1244150861 0 :ais523_!unknown@unknown.invalid PRIVMSG #esoteric :wow, I don't think I've had /that/ quit reason before < 1244150862 0 :ais523_!unknown@unknown.invalid NICK :ais523 < 1244150896 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1244150904 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1244150909 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot‽ < 1244150910 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that is the right command < 1244150916 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!underload (test)S < 1244150919 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :where's egobot < 1244150923 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :^ul (test)S < 1244150923 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :test < 1244150930 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ph. dear < 1244150932 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*oh, < 1244150936 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust suicide < < 1244150944 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :FFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU < 1244150962 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot is dead, what now? what sadistic plague comes up with now?! < 1244151035 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help . < 1244151036 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :test < 1244151056 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!help userinterps < 1244151078 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yay, wb EgoBot < 1244151079 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION pats EgoBot < 1244151081 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for ais523_suicide: 0.0 < 1244151171 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :userinterps: Users can add interpreters written in any of the languages in !help languages. See !help addinterp, delinterp, show | !userinterps. List interpreters added with !addinterp. < 1244151209 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!show sadbf < 1244151210 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :sadol :M$0 :d:i,45000@>i-01(2]M0:i-i1:S$0:C;3:l#C-01:p:m0@:m%+m1d?=#Cp"1<:m?<-m10-s1-m1?=#Cp"1.!'2#Mm?=#Cp"1,:#Mm'1;0?=#Cp"1[]S-p1?=#Cp"1]?=#Mm00:p[S0:p+p1 < 1244151213 0 :Slereah!n=butt@ANantes-259-1-72-190.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1244151238 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :YOUR BUTT < 1244151246 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :amyway/ < 1244151248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway < 1244151249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :!show sadol < 1244151250 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :That is not a user interpreter! < 1244151253 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1244151304 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :lax < 1244151309 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :my new lang will be called lax < 1244151313 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :YAY! < 1244151357 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: the sadol-interp one? < 1244151364 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :no < 1244151425 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :rather, something like less cryptic sadol < 1244151442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: but used for the sadol compilerterp? < 1244151448 0 :inurinternet!unknown@unknown.invalid QUIT :No route to host < 1244151456 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1244151496 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :i plan to enable some tricks that will enable extending core language with ease < 1244151553 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: that will ruin your specializer hopes < 1244151569 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :so, real custom operators, ability to define constructs that are indistinguishable from i.e. if or while for user < 1244151598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep, bad for a specializer < 1244151720 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :def unless [c t] if not c t nil < 1244151774 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :~2u?-0#_0#_10 < 1244151779 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1244151843 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol ~u2?-0#_0#_10 :a1 !u=a02 < 1244151845 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1244151871 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol ~u2?-1#_0#_10 :a1 !u=a02 < 1244151874 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 < 1244151876 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yay < 1244151898 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol ~u2?-1#_0#_10 :a1 !u=a12 < 1244151900 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :0 < 1244151909 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol ~u2?-1#_0#_10 :a1 !u=a1!2 < 1244151911 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :20 < 1244151915 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :uhm < 1244151924 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :eager eval < 1244151940 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :damn side effects < 1244152084 0 :Slereah_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1244152115 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :night < 1244152131 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :night < 1244152151 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you seem to know the topic < 1244152166 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: why don't you write own specializer < 1244152168 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :? < 1244152174 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :'cuz it's not practical :) < 1244152924 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :nooga, evil isn't he. Since he didn't tell you this? And now really night. < 1244153107 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :err, I told him there's no really good specializers < 1244153114 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what you mean is you didn't erad < 1244153316 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1244153357 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh, by the way < 1244153366 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the decss language thing, remember? < 1244153368 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :he replied < 1244153378 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, interesting < 1244153381 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :on the 2nd, but I'm allowed to be forgetful < 1244153382 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what was the gist of the reply < 1244153385 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, what did you ask? < 1244153421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: subject: "The DeCSS language - I promise not to sue you :-)"; body is my interpreter, i realised after hitting send that it contained my (facetious but not recognizable as so without #esoteric channel context) "# Fuck you, Dave Touretzky." comment < 1244153426 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :his reply: < 1244153429 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[[Oh no! Now I'm a copyright criminal for sure!!!! < 1244153429 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : How could you? < 1244153431 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :-- Dave]] < 1244153435 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :either he didn't notice, or I was lucky ;) < 1244153463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably he was joking in the reply < 1244153472 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no; really?! < 1244153478 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :here I was, ruining his life. < 1244153502 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I am only marginally better than AnMaster at detecting sarcasm < 1244153508 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so it helps to be really obvious < 1244153521 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: four exclamation points < 1244153522 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i guess that handwriting optimized optimizing compiler is more practical < 1244153532 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: but who wants practical < 1244153541 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but of crs, specializer migh be much more fun and challenging < 1244153541 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: ah, I never see people use that many exclamation marks even when joking < 1244153547 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I'm not entirely wure what it means < 1244153547 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244153549 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*sure < 1244153566 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :I just closed the tab containing your code, just when you spoke about it, ehird < 1244153570 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Scary coincidence < 1244153575 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: don't be stupid!!!!!!!! < 1244153598 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: It's synchronicity because oerjan spoke next; just ask him about his ... 1994? incident! < 1244153598 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :lax < 1244153600 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :DUN DUN DUN < 1244153608 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :isnt lax a salmon? < 1244153615 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :lox < 1244153622 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :lax is salmon in swedish < 1244153633 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: lax is what snowlax does < 1244153640 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er < 1244153641 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :snorlax < 1244153642 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :snormlax < 1244153647 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Snorlax. < 1244153649 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :snotflax < 1244153651 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i've seen people use up to 10 !s seriously < 1244153652 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :;D < 1244153658 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: tell FireFly < 1244153670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there must be some esolang with ! as a common character < 1244153680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, I think I've used nine !s in a row in Underload before < 1244153682 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no way!!!!!!!!!!!! < 1244153689 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I didn't intend that to be parsable in English < 1244153697 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://upload.wikimedia.org/wikipedia/commons/a/ae/SunOS_4.1.1_P1270750.jpg < 1244153708 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster's favourite storage mechanism < 1244153761 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :usa - where universities produce commercial software < 1244153783 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :nooga: i don't think that's just usa < 1244153783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :over here in the UK, they produce commercial hardware < 1244153785 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and dictionaries < 1244153785 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :nooga: Where universities are businesses. < 1244153802 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Seriously, we have to pay through the nose. < 1244153856 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i want a full oxford dictionary < 1244153864 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with which to be pedantic in internet grammar/spelling arguments < 1244153874 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Is huge. < 1244153879 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: i know, that's the fun < 1244153891 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also I want a full Britannica, and a full Wikipedia < 1244153901 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Wikipedia's easy. < 1244153903 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :the thing is that i don't really know english < 1244153908 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Unless you want it on dead tree. < 1244153910 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :as well as polish < 1244153949 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Of course. < 1244153988 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: pic on reddit of a printed WP: just the featured articles < 1244153990 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :was huge < 1244153993 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : wikipedia < 1244153998 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : no results < 1244154009 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It truly transcends shittiness, that search. < 1244154045 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: http://www.rob-matthews.com/files/gimgs/5_wikipedia-1.jpg < 1244154051 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WP featured articles, in (iirc) 9pt < 1244154059 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :now, make it all articles, and split into big volumes < 1244154062 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, add pictures < 1244154068 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (you might like that) < 1244154073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's real < 1244154093 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: jpeg? < 1244154095 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for text? < 1244154098 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's a photo of a book < 1244154102 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1244154103 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a gigantic book < 1244154106 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a very, very gigantic book < 1244154113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I thought it was a very, very gigantic image < 1244154117 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which would have been even funnier < 1244154120 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1244154123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but it's a real book! < 1244154126 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's totally awesome. < 1244154155 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://www.rob-matthews.com/files/gimgs/5_wikipedia-2.jpg :) < 1244154161 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1244154167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if it was in volumes, it'd be usable < 1244154171 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :A bit hard to carry around < 1244154173 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Yeah < 1244154174 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if it was in volumes and had all articles, it'd be gigantic < 1244154177 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :BUT TOTALLY AWESOME. < 1244154180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just like britannica & oed < 1244154187 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :considerably bigger, I imagine < 1244154190 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yep < 1244154195 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :You'd need a dedicated library < 1244154195 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :probably take several large bookshelves < 1244154196 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :britannica took up two shelves of our library < 1244154196 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :HUGE library < 1244154202 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: IIRC, it would be 380ft < 1244154205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't imagine Wikipedia fitting in the entire library < 1244154208 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as it wasn't that big < 1244154209 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric := 115 meters < 1244154214 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(school library, that is) < 1244154215 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in one book < 1244154219 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it would fit in the university library without trouble < 1244154223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and, I mean, you could do that with several large bookshelves < 1244154227 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :doesn't need a library < 1244154234 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh, and the best bit? < 1244154252 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"George W. Bush is gay[citation needed] a former President of the United States of America." < 1244154267 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :In serifed text, on good proper dead tree, with leather bindings and whatnot. < 1244154271 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :LMAO < 1244154279 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it should come with two copies < 1244154284 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :on the spare one, write your addition < 1244154286 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cut out the page < 1244154290 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and send to the wikipedia offices < 1244154294 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where they will transcribe and save your change < 1244154295 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :s < 1244154303 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and you can buy update sets < 1244154310 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where you cut out existing pages and paste the new ones to the spine < 1244154318 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it'd be like pokemon, but not < 1244154322 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Maybe some clipping feature? < 1244154328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, it was suggested that printed copies of Wikipedia subsets should come with postcards on which you can send editing suggestions < 1244154332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there is totally a market for this < 1244154345 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: collectible trading card encyclopedias? < 1244154348 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244154355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, IIRC a newspaper did that a while back < 1244154356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but with CDs < 1244154357 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1244154364 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I have the rare one with the big penis on the front page, it was only in print for 15 seconds" < 1244154365 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :It'd be a nice idea < 1244154366 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I seem to recall there being efforts to make a printed Wikipedia. < 1244154367 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :each of which contained a random subset of a children's encyclopedia < 1244154378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes, the press would update in real time < 1244154382 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :whyever not? < 1244154391 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: LMAO < 1244154393 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: how many copies would they sell, though? < 1244154401 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, maybe they can use amazon's new print-on-demand thing < 1244154401 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, you know, 3. < 1244154409 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're setting up a service where they print books as they're ordered < 1244154409 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, does that have old yellowy paper? < 1244154410 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :automatically < 1244154412 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with leather bindings? < 1244154413 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I think not < 1244154419 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably not, unfortunately < 1244154420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: aww, but then you'd have to order it at the tiem < 1244154421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :time < 1244154423 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you might sell more that way < 1244154423 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Have set up. < 1244154425 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :"Can I have that one on Befunge? I collect esolangs. You can have this rubbish history article for that befunge." < 1244154427 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm imagining a bunch of pages flying by every second < 1244154447 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: when articles get deleted, they'd become super-rare < 1244154452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this could totally work. < 1244154458 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1244154465 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it won't really catch on unless you invent a complex card game to play with them < 1244154466 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :As soon as you get your card, delete the article < 1244154476 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Turing-complete. < 1244154484 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: using real-world facts? < 1244154488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why not? < 1244154492 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244154496 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're in abundance in Wikipedia < 1244154499 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I play [[Rabbit]]. It poops." < 1244154502 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, Wikipedia top trumps might be an interesting game < 1244154508 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :where you make up categories on the fly < 1244154510 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :ehird, do you have the poop spell card? < 1244154511 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"I play [[Haskell]]. It gives you a type error" < 1244154524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Poop wins against type errors!" < 1244154548 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :You'd need [[poop]], and [[Rabbit]] may only use [[poop]] if has a link in its article? < 1244154559 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: that's great < 1244154564 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm... < 1244154564 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you could have N-degrees < 1244154574 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you can get from [[Rabbit]] to [[nuclear war]] in 3 clicks, you can use it < 1244154579 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: [[The original authors of the Wikipedia entries will not receive any of this money, but they are acknowledged on the last 30 pages of the book, which lists the handles of all the authors in the most miniscule font possible]] < 1244154581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1244154584 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this could be quite an issue < 1244154592 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you couldn't legally separate them from the volumes, either < 1244154613 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :N < 1244154616 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Um < 1244154619 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Give it a few months. < 1244154625 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Wikipedia's going to be CC soon. < 1244154636 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: still have to attribute < 1244154637 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :N-degrees reminds me of wikirace < 1244154645 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could just attribute on the cards < 1244154645 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Ah, right. < 1244154649 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to make it more fun, on the back of the cards < 1244154657 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you can try to deduce what the article's about by who wrote it < 1244154670 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"In that time there ruled an opinion that a man shouldn’t lift up more than 3 kg." < 1244154676 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's pretty light... < 1244154683 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1244154690 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how can you tie in the card game with the ye olde encyclopediae, though? < 1244154692 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244154695 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*paedia < 1244154700 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :What does a regular laptop weight? < 1244154701 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I think Americans pick up more soda than that at a time, usually. :p < 1244154716 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: link structure sounds like a good idea < 1244154732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes < 1244154747 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this could be played online, actually < 1244154752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but how do you deal with abilities? < 1244154761 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :To do N-degree actions, you'd of course need to have all the cards on your hand, so that you can play them all the way there < 1244154763 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i mean, nuclear war vs photography < 1244154766 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how do you decide which wins < 1244154783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I imagine nuclear war beats most things < 1244154787 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: 2 tons < 1244154787 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244154790 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but if you were going top-trumps style < 1244154798 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(on Jupiter) < 1244154799 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd just invent your own category's < 1244154802 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*categories < 1244154806 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :apostrophe's < 1244154807 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :I don't live at Jupiter < 1244154808 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"how explosive is yours?" < 1244154810 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :I'm afraid < 1244154813 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Lame. < 1244154813 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"well, mine's more explosive" < 1244154818 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that's not really much of a game < 1244154825 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm thinkin' D&D size rulebooks here < 1244154830 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1244154835 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :I'm actually tempted to convert that to our earthen weight now < 1244154853 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wikipedia sized rulebooks! < 1244154859 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :22:31 FireFly: What does a regular laptop weight? < 1244154861 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :2-3kg? < 1244154866 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :And then make a meta-game from that rulebook < 1244154867 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :~3-4 stone < 1244154875 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er < 1244154878 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pounds < 1244154886 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well < 1244154890 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :more like 5 stone < 1244154892 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er < 1244154892 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :I'll stick to my SI units :P < 1244154893 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pounds < 1244154894 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :obviously, the rulebook also has to be editable in real time, and collectible < 1244154897 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which I suppose would make it a nomic < 1244154903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: massively collaborative nomic < 1244154909 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1244154913 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: about 2-3kg < 1244154917 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, I saw < 1244154918 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :netbooks are about 1-1.5kg < 1244154918 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Thansk < 1244154922 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :s/sk/ks/ < 1244154927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: the ideal weight of a laptop is 1kg < 1244154933 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :My DS is lighter < 1244154938 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :because really, netbooks are what a laptop should be; otherwise you just want a luggable computer < 1244154939 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: of course < 1244154940 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :In both weight and processor power :P < 1244154943 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why? how do you know it isn't 890g < 1244154947 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or 1.001kg? < 1244154947 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but 1kg is imperceptible to carry around < 1244154951 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: give or take < 1244154961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, 10"-12" is about the right size for it < 1244154963 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(4:3) < 1244154975 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: D&D-sized rulebooks? T3h lame. < 1244154983 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm thinking encyclopedia volume-sized rulebooks. < 1244154987 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: more substantial than "whichever is better" < 1244154996 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, we should enlist Agora to help write it < 1244154999 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they can inflate the language < 1244155000 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Rulebooks of what beats what? < 1244155001 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :clearly, this should be the most notable game in the world < 1244155010 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sufficiently notable, in fact, that it takes up half of Wikipedia < 1244155015 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then we could have some sort of weird infinite loop < 1244155024 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you're thinking of pokemon < 1244155032 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but those articles were merged < 1244155037 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on the basis that they were mostly identical < 1244155037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yeah, that made me sad < 1244155044 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they were only merged 'cuz people thought it was biased < 1244155047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but they were good articles! < 1244155056 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, they were mostly identical good articles though < 1244155059 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which was the trouble < 1244155067 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i guess < 1244155068 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :But clearly, [[Tea]] beats [[Coffee]] < 1244155075 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244155077 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :imagine if every BF equivalent was explained exactly the same way as BF, but with the commands changed < 1244155090 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd have loads of good articles there which were mostly identical < 1244155106 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Maybe categories could be used to identify the type of ability? < 1244155107 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Note that there's a number of automatically generated articles on Wikipedia. < 1244155117 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I know < 1244155121 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :famously, rambot < 1244155124 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"It was around this time that J. R. R. Tolkien was employed by the OED, researching etymologies of the Waggle to Warlock range" < 1244155127 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yuh. < 1244155128 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I love how that's a substantial range < 1244155132 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the idea was to add stubs to persuade people to edit them < 1244155136 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Is [[Weapon of mass destruction]] in a subcategory of Category:Weapons? Then it's probably pretty strong < 1244155147 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: *Germanic* etymologies specifically. < 1244155148 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Of course, one would still have to compare the strengh somehow < 1244155162 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :number of references, obviously < 1244155165 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I asked in #wikipedia a while back for some work to do. I was told to clean up rambot articles because it made scrappy articles with too many useless digits on numbers, etc. I pointed out that this could be automated and got the IRC equivalent of blank stares. < 1244155166 0 :poiuy_qwert!unknown@unknown.invalid QUIT : < 1244155171 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :strength* < 1244155175 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Bloody mechanical gnomes. < 1244155177 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: haha < 1244155186 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's the sort of thing gnomes enjoy doing < 1244155196 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a wikignome mentality which I don't really understand < 1244155201 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they must have thought you were one looking for work < 1244155207 0 :tombom!unknown@unknown.invalid QUIT :"Peace and Protection 4.22.2" < 1244155218 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(Bot523 on Wikipedia eventually stopped working because a) humans kept beating it to it, and b) I forgot to run it) < 1244155229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, it only ran in IE < 1244155229 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i was asking for work that actually helped people :P < 1244155243 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you're missing the point < 1244155245 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1244155246 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I know < 1244155249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I was just saying < 1244155251 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why couldn't you apply AWB general fixes to 100000 articles? < 1244155262 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even when they made no difference to them? < 1244155265 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :incidentally, Wikipedia went downhill around the point they deleted Willy's article < 1244155278 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i hate automated wiki browsers with a passion < 1244155280 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they're so generic and rubbish < 1244155282 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(nowadays there's consensus that AWB general fixes can only be used if you do something else to the article as well) < 1244155321 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'd run my own specialized scripts to do some useful edits on WP, but people would ban me for BOTTING OMG < 1244155340 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm < 1244155347 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :running bots is legal, you just have to get them approved < 1244155350 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i know < 1244155353 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :What happened to the wikigame? :( < 1244155355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only that became ridiculously political for no apparent reason < 1244155367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :which is a painful process; what's the difference, ais523, between doing work tediously and manually < 1244155372 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, probably betacommand was the reason, and it all spiralled from there < 1244155374 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :vs getting it done fixed and errorless with a script? < 1244155381 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the latter is a lot better, that's what < 1244155388 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: ? < 1244155396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: because of the number of people who think it would be great to own a bot and write rubbish scripts that produce a lot of damage in a short space of time < 1244155398 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Or, rather, the discussion about it < 1244155404 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Wiki-TCG < 1244155406 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: why can't that be handled like any bad user? < 1244155414 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: we can't think of how to do it < 1244155420 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: because admins don't like spending the time to clear up after the bots by hand < 1244155430 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's always a row whenever someone tries to clear up automatically < 1244155442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ais523: gah, wikipedia is so annoying < 1244155443 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because they might revert good edits < 1244155455 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :conservapedia ftw < 1244155457 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Categories builds up an hierarchy, could maybe be used? < 1244155457 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :: < 1244155458 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1244155469 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: yeah, but the basic thing is that we can't go annotating every article ever < 1244155472 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(a fast bot which is 90% correct is really damaging, for instance, but also you don't want to mass-revert it) < 1244155489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, bot perms can be used to DOS the server < 1244155495 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, more effectively than user perms can, anyway < 1244155499 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because bots are allowed to go faster < 1244155505 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you're supposed to use common sense when writing a bot < 1244155511 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WP's server and software setup seems to suck. < 1244155519 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it strikes me as typical PHP < 1244155523 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is not really a good thing < 1244155542 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they should let me administrate their servers < 1244155546 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'd only break them 1-2 times a day < 1244155546 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :One could still make it a computerised TCG, and check wikipedia on demand, but that'd destroy the purpose a bit, I guess < 1244155564 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :time to go home, anyway < 1244155565 0 :ais523!unknown@unknown.invalid QUIT :Remote closed the connection < 1244155765 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust draw >+[[+]+] < 1244155798 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_draw: 0.0 < 1244155836 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Hm, current hill is more tolerant to it < 1244155856 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"In the estimation of some atheists, Craig has won all or nearly all of his debates with atheists and is one of the most impressive debaters currently alive.[1]" < 1244155857 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://conservapedia.com/William_Lane_Craig < 1244155903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust fuck_you_ima_sit_here (-+)*50000 < 1244155917 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for ehird_fuck_you_ima_sit_here: 4.6 < 1244155936 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Time to sleep < 1244155941 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :10 | - - - - - - - 0 0 0 - - - - - - - - - + | 4.6 | -11.6 | ehird_fuck_you_ima_sit_here.bfjoust < 1244155943 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1244155945 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust mirage (+)*300000 < 1244155945 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it should draw < 1244155953 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust fuck_you_ima_sit_here [+-] < 1244155964 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for lament_mirage: 7.7 < 1244155966 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for ehird_fuck_you_ima_sit_here: 6.1 < 1244156001 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: pretty good < 1244156004 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if by good you mean abd < 1244156006 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*bad < 1244156086 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple (>)*9(>[-])*21 < 1244156093 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 7.0 < 1244156158 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple --->>+++>>>--->>>>(>[-])*21 < 1244156164 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 7.5 < 1244156237 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple (>(+)*127)*9(>[-])*21 < 1244156244 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 0.0 < 1244156292 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple >(>(-)*128)*29 < 1244156299 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 0.0 < 1244156381 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple ++>>-->>++>>-->>>(>[-]<<+>>)*29 < 1244156389 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 7.5 < 1244156454 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :slackware just released a 64 bit version < 1244156460 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well just = 2009-05-19 < 1244156464 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how ya doin' slowpoke < 1244156487 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :!bfjoust simple +(>-)*9(>[-].-)*21 < 1244156494 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Score for FireFly_simple: 12.1 < 1244156557 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :Oh, yeah, right.. [23:52:16] Time to sleep < 1244156560 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1244156570 0 :FireFly!unknown@unknown.invalid QUIT :"Later" < 1244157123 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ping < 1244157269 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :6u!d < 1244157332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ic < 1244157339 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: any success w/ self-recognizer? < 1244157500 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um, that wasn't mine < 1244157529 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and i haven't tried any more than what i already commented < 1244157538 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: you talked about it < 1244157560 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that Mirror thing. wasn't that yours? < 1244157574 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i never actually got it working < 1244157580 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :shall I ask #haskell? < 1244157583 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :might be fun! < 1244157608 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well what i suggested would be the beginning of an algebra < 1244157672 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION challenges #haskell < 1244157672 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm if you parametrize on Bool you have an Applicative instance < 1244157710 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :newtype Mirror b = M { runM :: Mirror b -> b } < 1244157724 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm wait that doesn't work < 1244157775 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you cannot map when changing the type < 1244157833 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm a bit of cheating < 1244157838 0 :Corun!n=Corun@94-194-31-231.zone8.bethere.co.uk JOIN :#esoteric < 1244157843 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"A massive hard disk, a DVD-2 drive, and a 400-MHz Pentium II processor make Dell's XPS R400 a prime example of a power-user's PC." < 1244157844 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"Storage is the forte of the XPS R400: A speedy IBM Deskstar hard disk holds a whopping 14.4GB of data." < 1244157851 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WHOA 1998 < 1244157860 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SLOW DOWN BOI < 1244158025 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: On our favourite topic, excessive computers, ... < 1244158034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: http://files.myopera.com/wiz/albums/781632/wiz-desktop1.jpg That machine is fanlessly heatpipe-cooled and uses an SSD. < 1244158049 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Bulky solid state computer + gigantic array of monitors = ????????