diff paste/paste.9977 @ 803:3b1b07d2b34c

<elliott> pastelogs ZOMGMODULES
author HackBot
date Wed, 17 Oct 2012 23:25:39 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paste/paste.9977	Wed Oct 17 23:25:39 2012 +0000
@@ -0,0 +1,301 @@
+2011-04-05.txt:19:06:09: <elliott> not having ZOMGMODULES?
+2011-04-05.txt:19:08:17: <cpressey> from ZOMGMODULES import WINNING
+2011-04-05.txt:19:33:14: -!- ph0ntohpiliac is now known as ZOMGMODULES.
+2011-04-05.txt:19:33:23: <ZOMGMODULES> why are none of these fantastic nicks taken
+2011-04-05.txt:19:33:54: <elliott> ZOMGMODULES: i propose you snatch up one-honking-great-idea while it's still available
+2011-04-05.txt:19:35:09: -!- ZOMGMODULES is now known as EnjoyBeingLocked.
+2011-04-05.txt:19:55:11: -!- EnjoyBeingLocked is now known as ZOMGMODULES.
+2011-04-05.txt:19:56:12: <ZOMGMODULES> elliott: depends on the language
+2011-04-05.txt:19:56:20: <elliott> ZOMGMODULES: C
+2011-04-05.txt:19:56:29: <ZOMGMODULES> i dunno man, should be relaxing
+2011-04-05.txt:19:56:47: <ZOMGMODULES> it's like drumming... it has a cadence
+2011-04-05.txt:19:57:01: <ZOMGMODULES> THIS IS THE WISDOM OF ZOMGMODULES.  HEED IT
+2011-04-05.txt:19:57:37: <ZOMGMODULES> your grammar is pretty much established?
+2011-04-05.txt:19:57:58: <ZOMGMODULES> you wrote it out?  on paper?
+2011-04-05.txt:19:58:04: <elliott> ZOMGMODULES: well, the bootstrap grammar is pretty much established. i'm not going to try fun stuff until i rewrite the compiler in the language.
+2011-04-05.txt:19:58:41: <ZOMGMODULES> you need to write it out, preferably on paper but also in a comment block at the top of the source is acceptable, or it won't be relaxing.
+2011-04-05.txt:19:59:10: <ZOMGMODULES> this is the wisdom
+2011-04-05.txt:19:59:45: <elliott> ZOMGMODULES: pretty impressive ass you have there, with all the ideas you pull out of it ;;;;::DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddddddddddd
+2011-04-05.txt:20:03:03: <elliott> ZOMGMODULES: with yacc-like things, if you have like, [a; b; c] and {a; b; c} both as blocks
+2011-04-05.txt:20:04:56: * ZOMGMODULES ACKNOWLEDGES NOT THESE "YACC-LIKE THINGS"
+2011-04-05.txt:20:05:15: <elliott> ZOMGMODULES: I WOULD LIKE TO SEE YOU WRITE THIS PARSER RECURSIVE-DESCENT
+2011-04-05.txt:20:07:19: <ZOMGMODULES> void parse() { if(tokeq("["){expect("["); parse_list(); expect("]");} else if (tokeq("{"){expect("{"); parse_list(); expect("}");} else error(); }
+2011-04-05.txt:20:07:28: <elliott> ZOMGMODULES: no i don't mean that
+2011-04-05.txt:20:07:56: <ZOMGMODULES> void parse_list() { parse_elem(); while(tokeq(";")){ expect(";"); parse_elem(); } }
+2011-04-05.txt:20:09:02: <ZOMGMODULES> i'd love to, it's very relaxing.  unfortunately, can't spend all day here
+2011-04-05.txt:20:09:19: <ZOMGMODULES> though 'dem smalltalk thangles' is a little underspecified for my taste
+2011-04-05.txt:20:09:55: <elliott> ZOMGMODULES: message is expr messagepart*
+2011-04-05.txt:20:12:29: <ZOMGMODULES> i would just accept ident or ident: interchangeably and filter out the bad stuff at the static analysis phase
+2011-04-05.txt:20:12:33: <ZOMGMODULES> if that's legal
+2011-04-05.txt:20:12:41: <elliott> ZOMGMODULES: oh that's not the problem
+2011-04-05.txt:20:12:51: <ZOMGMODULES> hey,... ghci's "let" does something like that, right oerjan?
+2011-04-05.txt:20:13:02: <ZOMGMODULES> if it's good enough for ghci it's good enough for me
+2011-04-05.txt:20:13:19: <ZOMGMODULES> elliott: that's a dumb grammar
+2011-04-05.txt:20:13:25: <elliott> ZOMGMODULES: that's smalltalk
+2011-04-05.txt:20:13:33: <elliott> ZOMGMODULES: really :s are banned in identifiers altogether
+2011-04-05.txt:20:13:36: <elliott> ZOMGMODULES: it's just that they're valid _symbols_
+2011-04-05.txt:20:13:37: <ZOMGMODULES> "That's our Smalltalk!"
+2011-04-05.txt:20:13:43: * ZOMGMODULES canned laughter
+2011-04-05.txt:20:14:19: <ZOMGMODULES> this is pretty much why i never got into smalltalk
+2011-04-05.txt:20:14:30: <ZOMGMODULES> this very part of it seemed unnecessarily brutal
+2011-04-05.txt:20:14:42: <ZOMGMODULES> :'s
+2011-04-05.txt:20:14:58: <elliott> ZOMGMODULES: hmm, i dunno
+2011-04-05.txt:20:15:34: <ZOMGMODULES> my brain just does not think like that
+2011-04-05.txt:20:16:02: <elliott> ZOMGMODULES: well, it's nicer than /python's/ approach to the "argument positions are meaningless" problem.
+2011-04-05.txt:20:16:05: <ZOMGMODULES> using the same label mechanism for all those things
+2011-04-05.txt:20:16:26: <ZOMGMODULES> that's ok.  it's been a long time and i don't remember
+2011-04-05.txt:20:22:06: <ZOMGMODULES> I do not know if I agree with the sentiment that adding a random number to every character in your program and interpreting it as Perl counts as your language being "Turing-complete"
+2011-04-05.txt:20:26:12: <oerjan> <ZOMGMODULES> hey,... ghci's "let" does something like that, right oerjan? <-- well that's what it looked like...
+2011-04-05.txt:20:26:26: <elliott> ZOMGMODULES: look at dat lack of braces
+2011-04-05.txt:20:27:57: <ZOMGMODULES> C needs a ";;" operator that is a high-precedence ";" to avoid the need for braces
+2011-04-05.txt:20:28:10: <elliott> ZOMGMODULES: and we could call it ocaml
+2011-04-05.txt:20:28:12: <ZOMGMODULES> if (x==y) printf("hi") ;; printf("there")
+2011-04-05.txt:20:28:30: <ZOMGMODULES> oh uh
+2011-04-05.txt:20:28:31: <ZOMGMODULES> SURWE
+2011-04-05.txt:20:28:34: <ZOMGMODULES> *SURE
+2011-04-05.txt:20:28:43: <ZOMGMODULES> the more ;'s the higher the precedence
+2011-04-05.txt:20:29:11: <ZOMGMODULES> yeah that's not quite my vision
+2011-04-05.txt:20:37:33: <ZOMGMODULES> they do research on viewpoints
+2011-04-05.txt:20:37:56: <ZOMGMODULES> "We found that a certain percentage of the population hold one opinion, while the rest hold another."
+2011-04-05.txt:20:38:14: <elliott> ZOMGMODULES: careful. alan kay might punch you
+2011-04-05.txt:20:38:15: <Phantom_Hoover> Who's ZOMGMODULES
+2011-04-05.txt:20:38:24: * ZOMGMODULES IS ZOMGMODULES
+2011-04-05.txt:20:38:43: <ZOMGMODULES> Phantom_Hoover YOU ASK A LOT OF QUESTIONS
+2011-04-05.txt:20:39:59: <ZOMGMODULES> Phantom_Hoover PERHAPS YOU SHOULD TRY /whois
+2011-04-05.txt:20:40:25: <Phantom_Hoover> ZOMGMODULES!
+2011-04-05.txt:20:40:25: <elliott> ZOMGMODULES: wait your name is Christopher? kinda assumed you were always just Chris THIS IS LOGICAL OK
+2011-04-05.txt:20:41:11: <olsner> who's ZOMGMODULES?
+2011-04-05.txt:20:42:35: <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
+2011-04-05.txt:20:42:35: <Phantom_Hoover> ZOMGMODULES, you're named after a werewolf.
+2011-04-05.txt:20:42:44: <elliott> ZOMGMODULES: So, like your parents then?
+2011-04-05.txt:20:42:52: <elliott> `addquote <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
+2011-04-05.txt:20:42:55: <HackEgo> 351) <ZOMGMODULES> elliott: parents who put just "Chris" on a birth certificate are... like parents who put just "Bob" on a birth certificate.
+2011-04-05.txt:20:43:04: <ZOMGMODULES> that was quotable?
+2011-04-05.txt:20:43:50: <ZOMGMODULES> elliott: Topher Grace?
+2011-04-05.txt:20:44:31: <ZOMGMODULES> Phantom_Hoover: Which werewolf would that be?
+2011-04-05.txt:20:44:52: <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
+2011-04-05.txt:20:45:00: <ZOMGMODULES> Phantom_Hoover: this is news to me
+2011-04-05.txt:20:45:16: <elliott> `addquote <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
+2011-04-05.txt:20:45:17: <HackEgo> 352) <Phantom_Hoover> ZOMGMODULES, St. Christopher, saint and werewolf.
+2011-04-05.txt:20:51:27: <ZOMGMODULES> Not Ørjanette?
+2011-04-05.txt:20:52:43: <oerjan> ZOMGMODULES: hm that might also work
+2011-04-05.txt:20:56:28: <elliott> ZOMGMODULES: IS THAT RIGHT, O WISE RECURSIVELY-DESCENDING MASTER
+2011-04-05.txt:21:00:18: <ZOMGMODULES> elliott I AM STILL TRYING TO WRAP MY HEAD AROUND THE ENGLISH GROUP
+2011-04-05.txt:21:01:56: <ZOMGMODULES> elliott: does your accept() have a side-effect
+2011-04-05.txt:21:02:05: <elliott> ZOMGMODULES: accept() is
+2011-04-05.txt:21:03:00: <ZOMGMODULES> huh. i always use expect(), and never accept()
+2011-04-05.txt:21:03:12: <ZOMGMODULES> i use tokeq() which doesn't consume
+2011-04-05.txt:21:03:17: <ZOMGMODULES> fewer side-effects in tests
+2011-04-05.txt:21:03:18: <elliott> ZOMGMODULES: well i copied accept() from wikipedia :) but accept is actually quite nice i think
+2011-04-05.txt:21:03:30: <ZOMGMODULES> if you like side-effects in tests, SURE
+2011-04-05.txt:21:03:42: <elliott> ZOMGMODULES: if (ident() && accept(COLON) && expr()) return 1;
+2011-04-05.txt:21:03:52: <elliott> ZOMGMODULES: (ok so that wouldn't be as nice-looking in practice cuz you have to build an ast, but that's not bad)
+2011-04-05.txt:21:04:51: <elliott> ZOMGMODULES: PRETTY
+2011-04-05.txt:21:08:00: <ZOMGMODULES> wow, I took almost all day to come up with two lines of code
+2011-04-05.txt:21:08:49: <elliott> ZOMGMODULES: http://sprunge.us/iQeM hey this grammar is actually pretty simple
+2011-04-05.txt:21:09:56: <ZOMGMODULES> if your tests consume tokens, you won't have infinite loops
+2011-04-05.txt:21:10:24: <ZOMGMODULES> at least you have THAT assurance, with those side-effects
+2011-04-05.txt:21:10:38: <elliott> ZOMGMODULES: i'm practically a nazi
+2011-04-05.txt:21:10:50: <ZOMGMODULES> expects are... more like exit()s in C
+2011-04-05.txt:21:11:05: <elliott> ZOMGMODULES: right but like if you have a
+2011-04-05.txt:21:11:10: <ZOMGMODULES> unless you do some fancy catching thing with them
+2011-04-05.txt:21:11:18: <ZOMGMODULES> in which case they're more like throw
+2011-04-05.txt:21:11:52: <ZOMGMODULES> you will eventually run out of tokens
+2011-04-05.txt:21:12:02: <elliott> ZOMGMODULES: accept doesn't consume if it doesn't match
+2011-04-05.txt:21:12:12: <ZOMGMODULES> oh, right
+2011-04-05.txt:21:12:46: <ZOMGMODULES> THAT IS WHY ZOMGMODULES USES IT ALMOST EXCLUSIVELY
+2011-04-05.txt:21:12:53: <elliott> ZOMGMODULES: GOOD ADVICE
+2011-04-05.txt:21:13:07: <ZOMGMODULES> I even do things like { if tokeq(";") { expect(";"); ... } }
+2011-04-05.txt:21:13:22: <ZOMGMODULES> simplicity > efficiency
+2011-04-05.txt:21:13:58: <elliott> ZOMGMODULES: um but that's exactly what accept is :D
+2011-04-05.txt:21:14:06: <ZOMGMODULES> yes
+2011-04-05.txt:21:14:22: <ZOMGMODULES> that's why accept is an UNNECESSARY
+2011-04-05.txt:21:14:55: <elliott> ZOMGMODULES: BLAHHH
+2011-04-05.txt:21:15:08: <ZOMGMODULES> also, ...
+2011-04-05.txt:21:15:19: <elliott> ZOMGMODULES: so your routines, do they call the tokeniser or does the tokeniser call it?
+2011-04-05.txt:21:15:35: <ZOMGMODULES> void parse_foo() { expect("foo"); }   void parse_bar() { if (tokeq("foo")) parse_foo(); }
+2011-04-05.txt:21:16:27: <elliott> ZOMGMODULES: actually with recursive descent the latter would only be possible with continuations i think :D
+2011-04-05.txt:21:16:29: <ZOMGMODULES> elliott: I call the tokenizer, generally
+2011-04-05.txt:21:16:34: <ZOMGMODULES> elliott: you got it
+2011-04-05.txt:21:16:41: <ZOMGMODULES> elliott: with something continuation-like, anyway
+2011-04-05.txt:21:16:44: <elliott> ZOMGMODULES: which means: we need that C continuation lib!
+2011-04-05.txt:21:16:55: <elliott> ZOMGMODULES: I APPROVE OF MY PROBLEM-SOLVING METHOD
+2011-04-05.txt:21:17:02: <ZOMGMODULES> once, in Erlang, I did neither.  I had the lexer and parser be seperate processes which messaged each other
+2011-04-05.txt:21:17:22: <elliott> ZOMGMODULES: that's ... almost beautifully hideous
+2011-04-05.txt:21:21:56: <elliott> ZOMGMODULES: so does writing a compiler that compiles to machine code hurts?
+2011-04-05.txt:21:29:58: <ZOMGMODULES> tswettbot: you rock
+2011-04-05.txt:21:30:12: * ZOMGMODULES is hoping a dozen debug windows just opened up for tswett
+2011-04-05.txt:21:30:47: <ZOMGMODULES> < elliott> ZOMGMODULES: so does writing a compiler that compiles to machine code hurts? <-- no, not really... depends, I guess
+2011-04-05.txt:21:31:33: <elliott> ZOMGMODULES: yeah but my compiler has to have, liek, two backends!
+2011-04-05.txt:21:31:42: <elliott> ZOMGMODULES: x86-64/linux and x86-64/NOTHING
+2011-04-05.txt:21:32:23: <ZOMGMODULES> elliott: then it's not, generally speaking, that painful... everything is partitioned nicely.
+2011-04-05.txt:21:32:31: <ZOMGMODULES> lexer, parser, ast, codegen.
+2011-04-05.txt:21:32:42: <elliott> ZOMGMODULES: oh the compiler parts don't scare me.
+2011-04-05.txt:21:32:53: <ZOMGMODULES> it's if you want to do it all "narrow" where it gets hairy
+2011-04-05.txt:21:33:13: <ZOMGMODULES> nothing too painful about generating x86 code, is there?
+2011-04-05.txt:21:33:21: <elliott> ZOMGMODULES: well no. but i want mnemonics!
+2011-04-05.txt:21:33:36: <ZOMGMODULES> you want to generate assembler?
+2011-04-05.txt:21:34:07: <elliott> ZOMGMODULES: no.
+2011-04-05.txt:21:34:17: <elliott> ZOMGMODULES: i want to generate machine code using an assembler-ish dsl
+2011-04-05.txt:21:34:20: <ZOMGMODULES> then you lost me at "mnemonics"
+2011-04-05.txt:21:34:54: <ZOMGMODULES> then you (in effect) want to write an assembler, and generate assembly for that assembler
+2011-04-05.txt:21:35:07: <elliott> ZOMGMODULES: yes. that's true. but i don't want to _generate_ it, i want to invoke its routines directly.
+2011-04-05.txt:21:35:16: <elliott> ZOMGMODULES: and the assembler doesn't actually have to be convenient...
+2011-04-05.txt:21:35:52: <ZOMGMODULES> elliott: then you are writing a codegen.
+2011-04-05.txt:21:36:22: <ZOMGMODULES> a codegen with an API whose entry points have names that mnemonics.  much like, well, every API
+2011-04-05.txt:21:36:27: <ZOMGMODULES> *that are
+2011-04-05.txt:21:37:12: <ZOMGMODULES> there are many codegens that let you switch out backends to target a different architecture.  if that's what you're saying
+2011-04-05.txt:21:37:21: <elliott> ZOMGMODULES: no no no.
+2011-04-05.txt:21:38:22: <ZOMGMODULES> elliott: I've basically coded that API (in C, not Smalltalk)
+2011-04-05.txt:21:38:50: <elliott> ZOMGMODULES: sure. it's easy enough for a subset. just IDEALLY i'd generate it from the big instruction table things :)
+2011-04-05.txt:21:39:23: <ZOMGMODULES> generating it from an instruction table, yes: I've never done that and it would have some nice to it.
+2011-04-05.txt:21:39:53: * ZOMGMODULES SAYS ONLY EXACTLY WHAT ZOMGMODULES MEANS
+2011-04-05.txt:21:40:18: * ZOMGMODULES DISMISSES TSWETTBOT!!!!
+2011-04-05.txt:21:40:25: <ais523> wow, ZOMGMODULES fits better in here than most of the regulars
+2011-04-05.txt:21:52:54: <ZOMGMODULES> I dismiss you, livejournal.
+2011-04-05.txt:21:53:17: <elliott> ZOMGMODULES: lots of cool people use livejournal. i'm not sure why.
+2011-04-05.txt:22:01:36: <ZOMGMODULES> tswettbot8: HOW'S IT GOING, MAN
+2011-04-05.txt:22:05:13: <elliott> ZOMGMODULES: please advise
+2011-04-05.txt:22:08:39: <ZOMGMODULES> how can you expect a debugger to be bug-free
+2011-04-05.txt:22:08:51: <ZOMGMODULES> at least smalltalk has the foresight to try to debug it
+2011-04-05.txt:22:09:04: <ZOMGMODULES> with
+2011-04-05.txt:22:09:06: <ZOMGMODULES> itself
+2011-04-05.txt:22:09:19: <elliott> ZOMGMODULES: what do asts look like again
+2011-04-05.txt:22:09:29: <ZOMGMODULES> elliott: ...
+2011-04-05.txt:22:09:33: <ZOMGMODULES> TREES
+2011-04-05.txt:22:09:36: <ZOMGMODULES> they look like TREES
+2011-04-05.txt:22:10:09: <elliott> ZOMGMODULES: i'm only half joking, why doesn't c have support for data structures :/
+2011-04-05.txt:22:10:28: <ZOMGMODULES> C has fine support for sexprs once you code them up
+2011-04-05.txt:22:10:43: <ZOMGMODULES> well
+2011-04-05.txt:22:11:12: <ZOMGMODULES> i usually end up with a hideous enum and a union of structs, but I'm usually not aiming for the simplest kind of data structure
+2011-04-05.txt:22:11:27: <elliott> ZOMGMODULES: well it's just... does that e--
+2011-04-05.txt:22:12:10: <ZOMGMODULES> elliott: if you are trying to code objects in C, that's your own damn fault
+2011-04-05.txt:22:12:15: <elliott> ZOMGMODULES: i'm not i'm not
+2011-04-05.txt:22:12:44: <ZOMGMODULES> struct expr { struct expr *lhs; struct expr *rhs; char *op; }
+2011-04-05.txt:22:12:48: <ZOMGMODULES> there's your ast
+2011-04-05.txt:22:13:04: <ZOMGMODULES> NULL
+2011-04-05.txt:22:50:07: <ZOMGMODULES> hey tswettbot,
+2011-04-05.txt:22:50:20: <ZOMGMODULES> hey tswettbot, say
+2011-04-05.txt:22:50:35: <tswett> ZOMGMODULES: the space on the end is necessary.
+2011-04-05.txt:22:50:43: <ZOMGMODULES> hey tswettbot, say I dismiss you, tswettbot.
+2011-04-05.txt:22:51:03: <ZOMGMODULES> I made it ragequit!
+2011-04-05.txt:22:53:41: <ZOMGMODULES> 1-based indexing, huh
+2011-04-05.txt:22:53:57: <ZOMGMODULES> DOES IT CONFLATE THEM WITH DICTIONARIES LIKE LUA
+2011-04-05.txt:22:54:05: <elliott> ZOMGMODULES: NO
+2011-04-05.txt:22:54:05: <ZOMGMODULES> BECAUSE THAT IS SOOOOOO AWESOME
+2011-04-05.txt:22:54:10: <elliott> ZOMGMODULES: hey wait
+2011-04-05.txt:22:54:21: <ZOMGMODULES> YES
+2011-04-05.txt:22:54:23: <ZOMGMODULES> YES YES YES
+2011-04-05.txt:22:57:01: <ZOMGMODULES> THIS IS HOW CHILDREN LEARN
+2011-04-05.txt:22:57:27: <elliott> everything cp... ZOMGMODULES says sounds better in caps
+2011-04-05.txt:23:00:52: <ZOMGMODULES> soooooooooo........ there's this code, that is never called by these unit tests.  but changing the code causes the unit tests to fail.
+2011-04-05.txt:23:01:43: <ZOMGMODULES> oh, no. i had wrong method. whew.
+2011-04-05.txt:23:02:01: <elliott> ZOMGMODULES: :D
+2011-04-05.txt:23:15:40: <ZOMGMODULES> |help
+2011-04-05.txt:23:15:41: <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
+2011-04-05.txt:23:15:46: <ZOMGMODULES> |errors
+2011-04-05.txt:23:15:47: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+2011-04-05.txt:23:15:50: <ZOMGMODULES> |help errors
+2011-04-05.txt:23:15:50: <storkbot> ZOMGMODULES: To get more interesting error messages, set ~/errmsgs=snark.
+2011-04-05.txt:23:15:59: <ZOMGMODULES> |~/errmsgs=snark
+2011-04-05.txt:23:16:00: <storkbot> ZOMGMODULES: snark
+2011-04-05.txt:23:16:05: <ZOMGMODULES> |foo
+2011-04-05.txt:23:16:06: <storkbot> ZOMGMODULES: That's wonderful for you!
+2011-04-05.txt:23:16:23: <ZOMGMODULES> |poop
+2011-04-05.txt:23:16:24: <storkbot> ZOMGMODULES: What is this I don't even
+2011-04-05.txt:23:16:32: <ZOMGMODULES> |save
+2011-04-05.txt:23:16:32: <storkbot> ZOMGMODULES: State saved.
+2011-04-05.txt:23:16:35: <ZOMGMODULES> storkbot: YOU LIE
+2011-04-05.txt:23:16:36: <storkbot> ZOMGMODULES: That's wonderful for you!
+2011-04-05.txt:23:17:23: <ZOMGMODULES> and the scary thing is that that feature requires lua 5.1
+2011-04-05.txt:23:17:26: <elliott> ZOMGMODULES: needs moar errors
+2011-04-05.txt:23:17:30: <elliott> ZOMGMODULES: can you let us define our own errmsgs
+2011-04-05.txt:23:17:52: <ZOMGMODULES> |~/errmsgs=('That's stupid.'; 'You''re stupid.')
+2011-04-05.txt:23:17:53: <storkbot> ZOMGMODULES: ('That's stupid.'; 'You''re stupid.')
+2011-04-05.txt:23:18:09: <ZOMGMODULES> |true that
+2011-04-05.txt:23:18:09: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+2011-04-05.txt:23:18:15: <ZOMGMODULES> not hard to implement
+2011-04-05.txt:23:18:16: <ZOMGMODULES> ANYWAY
+2011-04-05.txt:23:18:23: <ZOMGMODULES> storkbot: DIE DIE
+2011-04-05.txt:23:18:24: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+2011-04-05.txt:23:18:30: <ZOMGMODULES> storkbot: helllllp
+2011-04-05.txt:23:18:31: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+2011-04-05.txt:23:18:36: <ZOMGMODULES> storkbot: help
+2011-04-05.txt:23:18:36: <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
+2011-04-05.txt:23:18:44: <ZOMGMODULES> storkbot: help goto
+2011-04-05.txt:23:18:44: <storkbot> ZOMGMODULES: To evaluate a string as a command, issue 'goto command'.  This discards control context.
+2011-04-05.txt:23:18:53: <ZOMGMODULES> storkbot: goto help
+2011-04-05.txt:23:18:53: <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
+2011-04-05.txt:23:18:58: <ZOMGMODULES> oh yeah, THIS bot.
+2011-04-05.txt:23:19:02: <ZOMGMODULES> ok
+2011-04-05.txt:23:19:12: * ZOMGMODULES shuffles over to the other monitor
+2011-04-05.txt:23:19:26: <ZOMGMODULES> good night
+2011-04-05.txt:23:19:35: -!- ZOMGMODULES is now known as storkbot.
+2011-04-05.txt:23:56:16: -!- ZOMGMODULES has joined #esoteric.
+2011-04-05.txt:23:56:21: <elliott> ZOMGMODULES: hi!
+2011-04-05.txt:23:56:25: <ZOMGMODULES> ZOMG HI
+2011-04-05.txt:23:56:28: <elliott> ZOMGMODULES: plz not to be suing me for what i've done
+2011-04-05.txt:23:56:47: <ZOMGMODULES> WHAT HAVE YOU DONE
+2011-04-05.txt:23:56:56: <elliott> ZOMGMODULES: DECIDED TO MAKE A BOT THAT'S ALL THAT STORKBOT COULD BE
+2011-04-05.txt:23:57:01: <ZOMGMODULES> :(
+2011-04-05.txt:23:57:08: <ZOMGMODULES> what does that mean, though?
+2011-04-05.txt:23:57:19: <ZOMGMODULES> or when lambdabot's here, use it
+2011-04-05.txt:23:57:46: <ZOMGMODULES> i nurture it... on and off
+2011-04-05.txt:23:57:58: <ZOMGMODULES> i don't think it's a language yet exactly
+2011-04-05.txt:23:58:19: <ZOMGMODULES> total agreement
+2011-04-05.txt:23:58:46: <ZOMGMODULES> i was going to... implement persistence
+2011-04-05.txt:23:58:59: <ZOMGMODULES> except now i look at its lua source code and i hate it... oh hi storkbot
+2011-04-05.txt:23:59:09: <ZOMGMODULES> |~/
+2011-04-05.txt:23:59:10: <storkbot> ZOMGMODULES:
+2011-04-05.txt:23:59:15: <ZOMGMODULES> |~/*
+2011-04-05.txt:23:59:15: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+2011-04-05.txt:23:59:21: <elliott> ZOMGMODULES: AWESOME Y/N
+2011-04-05.txt:23:59:37: <ZOMGMODULES> i was thinking about how to distinguish commands from variables
+2011-04-05.txt:23:59:45: <ZOMGMODULES> i have no idea
+2011-04-06.txt:00:00:09: <ZOMGMODULES> yesh, it kind of drifting in that direction
+2011-04-06.txt:00:00:17: <ZOMGMODULES> all variables are variables that can expand themselves
+2011-04-06.txt:00:00:23: <ZOMGMODULES> said expansion is execution
+2011-04-06.txt:00:01:09: <ZOMGMODULES> |goto ~/send
+2011-04-06.txt:00:01:10: <storkbot> ZOMGMODULES:
+2011-04-06.txt:00:01:21: <ZOMGMODULES> |~/send=help
+2011-04-06.txt:00:01:22: <storkbot> ZOMGMODULES: help
+2011-04-06.txt:00:01:26: <ZOMGMODULES> |~/send
+2011-04-06.txt:00:01:26: <storkbot> ZOMGMODULES: help
+2011-04-06.txt:00:01:32: <ZOMGMODULES> |goto ~/send
+2011-04-06.txt:00:01:32: <storkbot> ZOMGMODULES: help
+2011-04-06.txt:00:01:35: <ZOMGMODULES> :(
+2011-04-06.txt:00:01:36: <elliott> ZOMGMODULES: that seems broken a bit to me
+2011-04-06.txt:00:01:55: <ZOMGMODULES> i thought it did -- not with | though
+2011-04-06.txt:00:02:11: <ZOMGMODULES> goto should totally derefence
+2011-04-06.txt:00:02:28: <ZOMGMODULES> oh wait
+2011-04-06.txt:00:02:30: <ZOMGMODULES> |help exp
+2011-04-06.txt:00:02:30: <storkbot> ZOMGMODULES: All items in [brackets] are replaced by their value, in a recursive, depth-first manner.
+2011-04-06.txt:00:02:46: <ZOMGMODULES> |[~/send]
+2011-04-06.txt:00:02:46: <storkbot> ZOMGMODULES: Help is available for: assignment expressions print goto tell source errors
+2011-04-06.txt:00:02:51: <ZOMGMODULES> see
+2011-04-06.txt:00:02:57: <ZOMGMODULES> execute = []
+2011-04-06.txt:00:03:04: <elliott> ZOMGMODULES: but but
+2011-04-06.txt:00:03:23: <ZOMGMODULES> |~/send=~/send
+2011-04-06.txt:00:03:23: <storkbot> ZOMGMODULES: ~/send
+2011-04-06.txt:00:03:27: <ZOMGMODULES> |[~/send]
+2011-04-06.txt:00:03:27: <storkbot> ZOMGMODULES: ~/send
+2011-04-06.txt:00:03:34: <ZOMGMODULES> |goto [~/send]
+2011-04-06.txt:00:03:34: <storkbot> ZOMGMODULES: ~/send
+2011-04-06.txt:00:03:43: <ZOMGMODULES> |~/send=goto ~/send
+2011-04-06.txt:00:03:43: <storkbot> ZOMGMODULES: goto ~/send
+2011-04-06.txt:00:03:46: <ZOMGMODULES> |[~/send]
+2011-04-06.txt:00:03:46: <storkbot> ZOMGMODULES: goto ~/send
+2011-04-06.txt:00:03:58: <ZOMGMODULES> |~/send=[goto ~/send]
+2011-04-06.txt:00:03:59: <storkbot> ZOMGMODULES: goto ~/send
+2011-04-06.txt:00:04:02: <ZOMGMODULES> |[~/send]
+2011-04-06.txt:00:04:02: <storkbot> ZOMGMODULES: goto ~/send
+2011-04-06.txt:00:04:04: <ZOMGMODULES> grrrr
+2011-04-06.txt:00:04:24: <ZOMGMODULES> i think currently expansion is SOMETIMES
+2011-04-06.txt:00:04:54: <ZOMGMODULES> i totally figured out how to do a loop in this, once
+2011-04-06.txt:00:05:11: <ZOMGMODULES> |/global=hi
+2011-04-06.txt:00:05:11: <storkbot> ZOMGMODULES: hi
+2011-04-06.txt:00:05:15: <ZOMGMODULES> |/global
+2011-04-06.txt:00:05:15: <storkbot> ZOMGMODULES: hi
+2011-04-06.txt:00:05:19: <ZOMGMODULES> |ls
+2011-04-06.txt:00:05:19: <storkbot> ZOMGMODULES: Unknown command.  Type '|help' for help.
+[too many lines; stopping]