< 1165709285 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :this guy has abused a bit the concept of a 'one-liner': http://www.dustindiaz.com/basement/js/dom.js (beware the link crashes my Mozilla; it works fine in Firefox 1.5) < 1165709547 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :btw, that's part of the source of http://www.dustindiaz.com/basement/tetris.html < 1165709567 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :8-D < 1165709570 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :dHTML TETRIS! < 1165709576 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That's better than http://www.codu.org/evilpong/ < 1165709759 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I prefer XML Tetris. < 1165709785 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :http://www.codu.org/rxml.php < 1165710099 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :yay, rxml rox < 1165710199 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :xml tetris? < 1165710237 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :is that based in the turing-completeness (I think) of xslt? < 1165710314 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Actually, it's nearly pure SVG. < 1165710315 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Has a tiny bit of embedded Javascript. < 1165710333 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :crap crap < 1165710507 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1165710549 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION borked his keyboard < 1165710645 0 :pgimeno!unknown@unknown.invalid PRIVMSG #esoteric :oh and btw there's a version with bgm: http://www.dustindiaz.com/basement/tetris-s.html < 1165713259 0 :wooby!unknown@unknown.invalid QUIT : < 1165713412 0 :CakeProphet!n=CakeProp@h121.230.213.151.ip.alltel.net JOIN :#esoteric < 1165714191 0 :CakeProphet!unknown@unknown.invalid PRIVMSG #esoteric :Anyone recommend a good Lisp implementation... that's... easy to setup on Windows? < 1165714780 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sure. < 1165714790 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Install a real OS, then use SBCL < 1165714803 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Emacs. < 1165714822 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Although realise that running Windows makes everything comparatively hard to setup. < 1165714846 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I got a windows version of xemacs running in 30 seconds < 1165714901 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I got a GNU/Linux version of Emacs running in 0 seconds. < 1165714909 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1165714922 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :well...it takes like 2 seconds to start up < 1165714935 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But it takes 0 seconds for me to install it. . . < 1165714939 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Preinstalled. ;) < 1165714941 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165714961 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I can't believe an OS would ship without a decent text editor < 1165716689 0 :jix_!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1165719608 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :emacs is not a good lisp implementation. < 1165719693 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :It is a good emacs lisp implementation < 1165719712 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm not even sure of that. < 1165719726 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It is *the* Emacs Lisp implementation. < 1165719745 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so? < 1165721077 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to bed. < 1165723361 0 :GreaseMonkey!n=thematri@222-152-161-21.jetstream.xtra.co.nz JOIN :#esoteric < 1165723384 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes a guess that GreaseMonkey likes Greasemonkey < 1165723559 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :ACTION takes a guss that pikhq is correct < 1165723625 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Connection error: Monkey too Greasy < 1165723639 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :yep <:D < 1165723835 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION makes out with BFM < 1165723897 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :kinky < 1165723987 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And incestous. < 1165727290 0 :GregorR-L!n=GregorR-@66.206.87.115 JOIN :#esoteric < 1165727435 0 :calamari!unknown@unknown.invalid QUIT :Remote closed the connection < 1165727459 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1165727468 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1165727489 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :nonwrapping bf.. 5 - 12 = ? < 1165727523 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric : 5-12=-7 < 1165727542 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so one cell to store the sign ? < 1165727590 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, in nonwrapping BF, the cell is signed and either bound-checked or bignum. < 1165727616 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Could be either *shrugs* < 1165727722 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I always assumed a nonwrapping program would work in a wrapping interp.. guess that isn't always the case < 1165727783 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :In a wrapping interp, 5-12=-7==248. < 1165727824 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :248 / 2 = 124 -7/2 = 3 < 1165727829 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :err -3 < 1165727967 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's the whole "mod 255" thing that's mildly confusing. . . < 1165728090 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Any ideas on how to best mutilate Windows? < 1165728114 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: I have some word documents you could open.. and some special multimedia files for your enjoyment < 1165728134 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Now... how to get them from Host to Guest :/ < 1165728202 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: what assumptions does your c compiler make about cells? < 1165728209 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :calamari, Win98 is running under VMware < 1165728216 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh < 1165728235 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: format C: < 1165728236 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :here's something fun you can do < 1165728243 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, I tried that < 1165728246 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :run debug < 1165728253 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, it wouldn't let me < 1165728254 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :then enter this program: < 1165728259 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :a < 1165728263 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cli < 1165728268 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :jmp 101 < 1165728270 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :g < 1165728380 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: how'd it go? < 1165728398 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I just got "^ Error" < 1165728411 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :where < 1165728416 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :on the g ? < 1165728419 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Yes < 1165728428 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :sorry you need to push enter again after jmp 101 < 1165728438 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :So it's < 1165728440 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :a < 1165728441 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :cli < 1165728444 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :jmp 101 < 1165728446 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric : < 1165728446 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :g < 1165728447 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :? < 1165728448 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1165728456 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :but you're still okay < 1165728457 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Should I close and restart debug? < 1165728462 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :you can just push enter < 1165728468 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :then g < 1165728505 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :The cursor just sort of... froze.. < 1165728510 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah :) < 1165728524 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :windows is probably gone < 1165728537 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(frozen) < 1165728545 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Something that left it in a pseudousable state would have been preferable.. < 1165728548 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :(more fun) < 1165728566 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I think it is cool how easy it is to screw up the multitasking in win98 < 1165728583 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :What does that debug thing do anyway? < 1165728605 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :first it disables maskable interrupts < 1165728606 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :calamari: Win98 doesn't really multitask. < 1165728613 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :then it enters a very tight loop < 1165728618 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It just imitates it for the user. < 1165728618 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1165728623 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: yeah it does.. p[reemptive too < 1165728644 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, it isn't exactly good multitasking if one can preempt the preempting. < 1165728662 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Night allk < 1165728666 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: I didn't say it was good.. just saying it does do multitasking < 1165728684 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I call that merely an imitation of multitasking. ;) < 1165728730 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is confused < 1165728732 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Night all < 1165728743 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I call that an imitation of an argument :) < 1165728748 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cya sgeo < 1165728754 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :As do I. ;) < 1165728761 0 :Sgeo!unknown@unknown.invalid QUIT :Remote closed the connection < 1165728833 0 :GregorR-L!unknown@unknown.invalid QUIT :"Leaving" < 1165730776 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1165731083 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"Connection error 130 (Monkey too greasy)" < 1165734831 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1165737599 0 :clog!unknown@unknown.invalid QUIT :ended < 1165737600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1165745562 0 :tgwizard!n=tgwizard@c-923fe155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1165745958 0 :ivan`!i=ivan@wikipedia/ivan JOIN :#esoteric < 1165754509 0 :jix_!n=jix@L6138.l.strato-dslnet.de JOIN :#esoteric < 1165760352 0 :jix__!n=jix@L61dd.l.strato-dslnet.de JOIN :#esoteric < 1165761328 0 :jix_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1165762511 0 :ivan`!unknown@unknown.invalid QUIT :" HydraIRC -> http://www.hydrairc.com <-" < 1165763302 0 :Sgeo!n=Sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1165765922 0 :kipple_!n=kipple@167.80-202-102.nextgentel.com JOIN :#esoteric < 1165767775 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1165774736 0 :CakeProphet!unknown@unknown.invalid QUIT :"haaaaaaaaaa" < 1165775874 0 :jix__!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1165778587 0 :jix_!n=jix@L61dd.l.strato-dslnet.de JOIN :#esoteric < 1165781128 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Most fun way to fubar Win98? < 1165781805 0 :EgoBot!n=EgoBot@c-71-193-149-252.hsd1.or.comcast.net JOIN :#esoteric < 1165782677 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: F00F bug? < 1165782704 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :No clue what that is < 1165782738 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it makes your computer go up in smoke *F00F* < 1165782858 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Would it be impolite of me to shorten the Deadfish interpreter? < 1165782958 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Wait a minute... < 1165783011 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It _really_ does not read any commands < 1165783191 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :OK if I am to believe the example then the interpreter is buggy rather than intentional < 1165783435 0 :GregorR!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1165783472 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :http://216.239.59.104/search?q=cache:4DSsRj2iMo4J:www.x86.org/errata/dec97/f00fbug.htm+f00f+bug&hl=en&gl=uk&ct=clnk&cd=1 < 1165783499 0 :EgoBot!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1165783760 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Gah. I can't believe I forgot what scanf does. < 1165783919 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :printf except backwards < 1165783967 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :But it doesn't discard the rest of the line, does it? < 1165784001 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :scanf(3) < 1165784022 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I am already reading it. < 1165784282 0 :GregorR!n=gregor@c-71-193-149-252.hsd1.or.comcast.net JOIN :#esoteric < 1165784486 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Meh. It's hard to forget C. < 1165784524 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Easy to forget clib functions < 1165784545 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :scanf? < 1165784558 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1165784569 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :My brain confused it with sscanf I think. < 1165784578 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Aha. < 1165784593 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :woot C has continuations < 1165784595 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :So somehow I got the idea the program never read input. < 1165784616 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Continuations? call/cc style? < 1165784620 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165784621 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Since when? < 1165784628 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :How? < 1165784628 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :since never < 1165784651 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i assume he's talking about setjmp/longjmp? < 1165784661 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :setcontext(2) < 1165784694 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Switching between multiple threads of control within a process. < 1165784733 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :swapcontext(3) < 1165784734 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Oh. Hmm... < 1165784739 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh, huh, that does look like continuations < 1165784746 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, it does. < 1165784754 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1165784758 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Who knew. < 1165784827 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :damn, right after I discover this, I have to do homework < 1165784872 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :That's probably what all the Scheme interpreters use to implement call/cc. < 1165784912 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I think that Scheme terps actually use call/cc to implement call/cc. < 1165784921 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :Razor-X: except for the overwhelming majority that are written in Scheme < 1165784942 0 :Razor-X!unknown@unknown.invalid PRIVMSG #esoteric :Well... I'm thinking Gambit/Stalin/Chicken. < 1165784953 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :You can add it to a graph-reduction-based interpreter without too much trouble, I suspect. < 1165785010 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Maybe the C-based ones have an explicit (spaghetti) stack rather than an implicit one, whereupon call/cc become easier. < 1165785027 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hum, my linux box has swapcontext, but not my bsd box < 1165785082 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Always read the CONFORMING TO section. < 1165785141 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SUSv2, POSIX 1003.1-2001. < 1165785375 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :methough bsd was posix complient < 1165785393 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I don't know what revision *shrugs* < 1165789088 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1165789118 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1165789163 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has an idea .. :) < 1165789187 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION prepares to shoot calamari < 1165789191 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waits < 1165789206 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I want to see if I can convert labels and gotos into if's, while's, etc < 1165789244 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the idea would be to break down a complex program (using gotos, while, if, break, etc) into just gotos, then reconstruct it again < 1165789256 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :this would be handy for break/continue removal < 1165789273 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :if,whiles are implemented with gotos < 1165789288 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: yes, I know < 1165789299 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :calamari: It is possible, but you may need to introduce some temporary variables. < 1165789322 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: yeah.. the hard part at least for my brain is building some kind of tree or such < 1165789337 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well, you just need one variable, to save the next label < 1165789343 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :then I can figure out where the loops are < 1165789344 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, BFBASIC manages to handle arbitrary gotos with just while loops. < 1165789346 0 :CakeProphet!n=CakeProp@h121.230.213.151.ip.alltel.net JOIN :#esoteric < 1165789359 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: yeah it does.. but I cheated and used labels and gotos < 1165789377 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: I'm trying to avoid that and hopefully produce more efficient code < 1165789403 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :with the goal of making it easier to translate a language such as spaghetti or linguine into bf < 1165789410 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and then a giant case statement in a while (1) < 1165789423 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: that's eseentially what I do with bfbasic < 1165789430 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the case statement is then easily turned into nested if then else < 1165789487 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :and it's kinda slow :) < 1165789511 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :would be better to unravel the goto's, even if it means duplication of code blocks < 1165789513 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I think the tricky one is 10 FOO; 20 BAR; 30 MAYBE GOTO 10; 40 MAYBE GOTO 20; < 1165789594 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION spots that a "do{}while()" is just a backward jump and an "unless(){}" is just a forward one. < 1165789599 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1165789672 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: okay I've decomposed that tricky loop < 1165789708 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :how? < 1165789711 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :not sure how to write it in here tho.. let me try < 1165789719 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ABCDE < 1165789734 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :B-C goes to A < 1165789737 0 :jix_!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1165789750 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :D-E goes to B .. that's the original < 1165789769 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :do you follow the notation for the original program? < 1165789806 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :A,B,C,D,E are blocks of code < 1165789806 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :rather difficult to match 5 letters with 4 statements < 1165789817 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1165789828 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :like I said.. hard to write in irc < 1165789830 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1165789839 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :let me translate it into basic like you did < 1165789896 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think possibly you are dealing with the wire-crossing problem < 1165789922 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :no I'm dealing with a text interface problem < 1165789933 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as in, just if and while cannot build flowcharts with crossing wires without extra temporary variables < 1165789943 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :who said anything about that < 1165789951 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I was just saying I was able to unravel it < 1165789977 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if anyone wants to say it is impossible then prepare to own up to it hehe < 1165790016 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :let me draw a little diagram and post it < 1165790048 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I will boldly assert that it is impossible to translate my code into plain loops and ifs without either duplicating code or creating superfluous temporary variables. < 1165790060 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually that example does not really have wire-crossing < 1165790086 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: right.. if you duplicate code < 1165790094 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's what I intend to do < 1165790096 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it does if you require that all the points are on the x-axis and all wires must only go through the upper half-plane < 1165790104 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if you duplicate part of the coee, it is easily unraveled < 1165790125 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :right, that makes sense < 1165790133 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's what I was just drawing up < 1165790149 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :guess I don't need to now hehe < 1165790158 0 :ihope!n=foo@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1165790161 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :11.1265006 milligrams. < 1165790176 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :of crack < 1165790184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh, a drive-by chemist! < 1165790195 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1165790228 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes for pizza, and then to bed, most likely. < 1165790248 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think it is possible to make code which cannot be unraveled simply with duplication < 1165790301 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's easy.. a break statement < 1165790362 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hmm maybe that can be unraveled as well < 1165790367 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :need to map these out < 1165790398 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :anyhow, I think I'm on to something... translate into gotos, then recompose for the target language < 1165790419 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :should be more efficient than the huge switch statement hack < 1165790663 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this is essentially a finite state machine problem < 1165790697 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: cool < 1165790707 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :can every FSA be implemented with just while and case (getc()) statements? < 1165790725 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well, bf implements everything with just while < 1165790741 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i am still talking about avoiding temporary variables < 1165790745 0 :kipple_!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1165790745 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic < 1165790759 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so if you had a bf with one cell < 1165790788 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Every FSA can be implemented using only goto. < 1165790793 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :right < 1165790804 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION bops ihope on the head < 1165790810 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if and goto < 1165790813 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we are discussing _removing_ gotos < 1165790818 0 :kipple_!n=kipple@167.80-202-102.nextgentel.com JOIN :#esoteric < 1165790820 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1165790864 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ihope: my idea is to decompose a program into goto's and labels then rebuild it for a target language < 1165790883 0 :kipple_!unknown@unknown.invalid QUIT :Client Quit < 1165790898 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :intriguing < 1165790921 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :this looks like a job for an esoteric BASIC coder! < 1165790923 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the first step is to unravel weird goto loops into traditional structured code < 1165790927 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :hehe < 1165790929 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION runs for his cape and cowl < 1165791112 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah, I can see how conditional jumps could become tricky to unravel. < 1165791138 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the tough part is seperating gotos that are branches from gotos that form loops < 1165791183 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for one thing, while loops always have just two exits < 1165791200 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :graphically speaking < 1165791210 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :some loops can be directly unfolded, but others are integral to the functioning of the program- the main loop, at least < 1165791217 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165791272 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :blah I think I made a mistake in SimonRC's problem above < 1165791289 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the code duplication doesn't seem to be working for that one < 1165791297 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1165791341 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :is the goal to create space-efficient code or speed-efficient code, or either? < 1165791369 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :speed efficient < 1165791374 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1165791401 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ahh got it finally < 1165791433 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :the problem was that I was trying to keep the d-while.. needed to convert it to a plain while < 1165791454 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok based on the limit to two exits for a while loop, here is a test case: < 1165791474 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :4 statements, each of which can branch to any of the others < 1165791488 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cool :) this is helpful stuff < 1165791609 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waits for the code < 1165791628 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh i thought it was obvious what i meant < 1165791635 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :no < 1165791685 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :10 MAYBE GOTO 30 OR 40 : 20 MAYBE GOTO 10 OR 40 : 30 MAYBE GOTO 10 OR 20 : 40 GOTO 10, 20 OR 30 < 1165791708 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I don't understand statement 40 < 1165791737 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok make that 40 MAYBE GOTO 20 OR 30 : 50 GOTO 10 < 1165791744 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1165791771 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh and by the way the MAYBE is to mean that one option is not to jump at all < 1165791792 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :??? < 1165791809 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :couldn't each "maybe" be first broken into a pair of "jump or not" instructions? < 1165791823 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165791826 0 :tgwizard!unknown@unknown.invalid QUIT :Remote closed the connection < 1165791828 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if I understand < 1165791829 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so for each statement, there are 3 possible statements to do next < 1165791841 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :still unrollinging the first problem, it's long hehe < 1165791870 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i am sort of trying to be brief < 1165791917 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :there done finally with the first one < 1165791928 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :shall I write it in code? < 1165791949 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :perhaps abbreviated.. < 1165792004 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :A B WHILE C { A B } WHILE D { B WHILE C { A B } } < 1165792014 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :a and b are foo and bar < 1165792235 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm. interesting < 1165792243 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: check that this is equiv to your code: < 1165792310 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :10 MAYBE 30 ELSE 15 : 15 MAYBE 40 ELSE 20 : 20 MAYBE 10 ELSE 25 : 25 MAYBE 40 ELSE 30 : 30 MAYBE 10 ELSE 35 : 35 MAYBE 20 ELSE 40 : 40 MAYBE 20 ELSE 45 : 45 MAYBE 30 ELSE 10 < 1165792315 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :btw my code is just a flowchart in the form of the edges of a tetrahedron < 1165792403 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :you can also remove the "else xxx" and add 50 goto 10 < 1165792407 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(as you had) < 1165792429 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :ACTION draws it  < 1165792498 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :looks fine to me < 1165792538 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if that doesn't work then we need an example with real wire crossing < 1165792581 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if you can find a very simple one that'd be great < 1165792590 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :this is rather long hehe < 1165792663 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well the two simplest non-planar graphs are the complete graph on 5 points (i.e. 5 statements all connected) and the 3 + 3 bipartite graph (the famous 3 houses connected to 3 utilities puzzle) < 1165792713 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so you gave the first ? < 1165792738 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no i just gave you 4 points, thought that might still be impossible < 1165792826 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i have this feeling this has something to do with the fundamental group of the graphs < 1165792888 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I still haven't finished drawing the original problem yet hehe < 1165792925 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh, draw a square with one diagonal, and then a curved line between the other two points < 1165792950 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oic < 1165792964 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I'm drawing it as a flow chart < 1165792981 0 :Aardwolf!unknown@unknown.invalid QUIT :"Ik zen der is mee weg" < 1165793004 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guess you need to duplicate the lines then < 1165793015 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1165793029 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I can already see a huge mess brewing < 1165793123 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :okay done drawing.. now the part that should be impossible < 1165793130 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :maybe try just 3 points first, i am not quite sure about that case < 1165793155 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :there is no exit.. interesting :) that's okay I guess < 1165793184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well you can just add a couple if you want :) < 1165793200 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :right.. 50 maybe 10 < 1165793421 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I discovered the two great secrets to writing great fiction. < 1165793427 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :But then I forgot one. < 1165793500 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the other one is to have an unfallible memory :) < 1165793613 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A photographic memory? < 1165793625 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That'd help, yes. < 1165793706 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i don't need photographic memory. < 1165793709 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i have a camera. < 1165793747 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :what about this much smaller problem: 10 MAYBE GOTO 50 : 20 MAYBE GOTO 50 : 30 FOO : 40 GOTO 10 : 50 BAR < 1165793770 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :that's the break statement < 1165793822 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Take pictures of your novel and stick them in your ears? < 1165793834 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That'd probably work, yes. < 1165793930 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So assuming having a photographic memory is one secret to writing good fiction, the other just might be to describe the world the characters are in. < 1165794012 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I can't remember.. were you disallowing temp variables for the solution? < 1165794024 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1165794032 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :if so, I don't see a way to solve my problem, and it's a subset of yours < 1165794037 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If you describe the world where it's not actually important that the world be described, the effect is that the world doesn't seem to exist only where it's important to the plot. < 1165794042 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :mine translates to the following code < 1165794052 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :while A { if B { C } } < 1165794076 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :not seeing a way to turn that if into a while without a temp variable < 1165794099 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eh, i have certainly not disallowed _if_s < 1165794102 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If one day somebody visits a store, and you didn't describe the store earlier, it seems like it spawned out of nowhere as soon as the person decided to visit it. < 1165794136 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: oh, I thought the point was to only use while loops < 1165794330 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :although, I only need one variable to convert as many nested if's as I want into whiles < 1165794331 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it was you who stated the problem, i just disallowed temporary variables so we couldn't use that giant case statement you said was inefficient < 1165794338 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :right < 1165794489 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what kind of language is it you want to translate into by the way? < 1165794523 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well bf.. but I was hoping this could help for other langs too < 1165794549 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah, then you definitely want to disallow ifs < 1165794584 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :well, like I say above, I can do them with constant memory in bf < 1165794589 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :so I think it's fine < 1165794665 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :then you could do case statements as well < 1165794675 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah I know < 1165794718 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :I think in the case of your problem, both methods would be about the same speed < 1165794758 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :but in the typical cases, not using case statements in bf would be a win < 1165794826 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :one idea is to encode the label in binary and use a branching tree for the case statement < 1165794846 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :yeah, we thought of that too :) < 1165794857 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :but didn't implement it < 1165794874 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :instead we decided to trade memory for speed < 1165794892 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :(in the second version of bfbasic labels) < 1165794924 0 :lament!unknown@unknown.invalid NICK :Lament < 1165794942 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :of course one advantage of not using the case statement is I won't have a limit on the number of branch points < 1165794958 0 :Lament!unknown@unknown.invalid NICK :lament < 1165795005 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hey, how many people have read about this thing before? http://www.retrothing.com/2006/12/the_tinkertoy_c.html < 1165795051 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i have < 1165795093 0 :calamari!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1165795102 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I found an article explaining how it worked a while back, but it never had any pictures of the device