< 1137369659 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :By the way, I wrote EgoBF, and that is of course why I think it's the best :P < 1137369683 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137369767 0 :Gs30ng!i=L@211.209.201.219 JOIN :#esoteric < 1137369902 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How about !bf >+[>+] < 1137369922 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That would be mean. < 1137369935 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :EgoBF is autoexpanding. < 1137369942 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ooh... < 1137369964 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And no on-the-fly data compression? < 1137369970 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :No :P < 1137369980 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :And why no !bf1? :-) < 1137369989 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That's !bch < 1137369995 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1137370002 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :With @ to flip? < 1137370004 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(BitChanger) < 1137370007 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yuh < 1137370016 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :EgoBch, the only implementation of BitChanger :) < 1137370024 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137370041 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So BF-PDA could be emulated by replacing > with [@]>? < 1137370081 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :BF-PDA could be implemented, and that would be easier :P < 1137370086 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137370088 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1137370090 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ihope: ps < 1137370099 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hell, it could be implemented in Glass. < 1137370116 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Does BitChanger have any I/O? < 1137370130 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :http://www.esolangs.org/wiki/BitChanger < 1137370151 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1137370191 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1137370193 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :long time no see < 1137370197 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I don't know whether I used -lazy-io in EgoBot ... < 1137370200 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hi Gs30ng < 1137370210 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :If I used -lazy-io, then ',' and '.' are supported as well. < 1137370332 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hah, I just remembered something. I wrote a MISC VM and never released it. And MISC is still marked unimplemented :P < 1137370339 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hah! < 1137370349 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I want a functional programming language that produces BF programs. < 1137370356 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Ow. < 1137370386 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Just have BF instructions be primitives. < 1137370431 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :i'm trying to understand Glass < 1137370468 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Me too, < 1137370476 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Heehee < 1137370478 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :World domination ^_^ < 1137370482 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-D < 1137370491 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Jix got it pretty quick. < 1137370500 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Heck, I'd settle for world denomination. < 1137370515 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_d)(Debug!)"JixMath"(_d)(fl).?]} < 1137370531 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Whoops < 1137370536 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_d)(Debug)!"JixMath"(_d)(fl).?]} < 1137370540 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :c c__ log p sp sqrt < 1137370542 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :well, actually it's been a dead long time since i first tried to understand this < 1137370558 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :and still i don't get it < 1137370564 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Heee < 1137370572 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :not like another works of GregorR < 1137370610 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :What, 2L was easy? < 1137370626 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :2EZ? < 1137370632 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1137370657 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, /me bangs a gavel. Glass class is now in session. < 1137370677 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #1: Classes < 1137370690 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Glass is an Object Oriented programming language, and therefore has classes < 1137370704 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Gasp! < 1137370724 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ihope: not Gasp, Glass < 1137370726 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To declare a class, use the character {, then the name of the class, then the content of the class (to be discussed later), then a }. < 1137370734 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :My mistake... < 1137370749 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The name of the class must start with a capital letter (all global variables start with a capital letter). < 1137370756 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :For example, for a class named M: < 1137370758 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :{M...} < 1137370767 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M...} < 1137370770 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :OK < 1137370779 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That class won't do anything btw :P < 1137370781 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :lolo < 1137370783 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137370797 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :If a variable has more than one letter in the name, it must be surrounded in (). So, for a class named Main: {(Main)...} < 1137370803 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Any questions about classes? < 1137370814 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Do classes have scope? < 1137370821 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or rather, scopes? < 1137370826 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You can't have subclasses, if that's what you mean. < 1137370838 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking "local classes". < 1137370844 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...Yah know? < 1137370855 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :ok i have a question < 1137370868 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :All class definitions are global, objects (class implementations) can be global, local, etc. < 1137370869 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :did the name came from the class? < 1137370872 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :*come < 1137370887 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Gs30ng: What do you mean? < 1137370897 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :origin of the name Glass < 1137370902 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Oh, yeah. < 1137370909 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Class + Gregor = Glass < 1137370913 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ah < 1137370921 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :whoa < 1137370925 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :cool. < 1137370933 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :omg ur so vane < 1137370936 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yup < 1137370943 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Time for lesson #2? < 1137370945 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1137370959 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yeah! < 1137370974 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #2: Functions or methods, whatever you want to call them :P < 1137370984 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Functions... < 1137370999 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Inside of a class (and ONLY inside of a class), you may declare functions. < 1137371026 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To declare a function, use the character [, then the name of the function, then the content of the function (to be discussed later), then a ]. < 1137371035 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :oops. < 1137371042 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :only inside of a class? < 1137371046 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[a]} < 1137371046 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :All function names must start with a lower case letter. < 1137371046 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yes. < 1137371050 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :NO M.m! < 1137371055 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1137371070 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :For example, for a class named M with a function named m: {M[m...]} < 1137371088 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It's important to note the function M.m, as that's the starting point for a Glass program. < 1137371105 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :As with classes, if the name has more than one letter, it must be surrounded in ()s. < 1137371113 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Like {(Main)[(main)...]} < 1137371127 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How about classes inside parentheses? < 1137371141 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Parentheses just hold variable names. < 1137371147 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137371172 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :If you used a {, }, etc, it would consider that as part of the variable name - the only character invalid in a variable name is ). < 1137371192 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I gotta go in about five minutes... < 1137371195 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions about functions (not the contents, the declaration)? < 1137371206 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ihope: You'll have to get the rest of the lesson in the logs then :) < 1137371245 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137371247 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1137371274 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waits for questions. < 1137371303 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :i prefer functional rather than object-oriented, but it seems to be possible to code functional in Glass < 1137371333 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :There is no Lesson #x: How to abuse Glass < 1137371342 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1137371350 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Shall we proceed? < 1137371355 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1137371361 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #3: Basic Code < 1137371366 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Glass is a stack-based language. < 1137371377 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :what < 1137371381 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Every operation either pushes something onto the stack or does some operations on the stack. < 1137371394 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A pushity-poppity 'pooter lingo. < 1137371425 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :ah... that's why the language is reverse polish notation < 1137371429 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To push a /pointer/ to a variable onto the stack, simply use the name of the variable. For example, to push the variable a, all you have to do is 'a' < 1137371457 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :and now i understand what the hell is 'pointer' < 1137371463 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Now is a good time to mention that any variable that starts with a capital letter is global, lowercase is class-local, _ is function-local. < 1137371490 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :If the name of the variable has more than one character, it must be surrounded in ()s. < 1137371498 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to push _a, use: '(_a)' < 1137371517 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is pushing a pointer rather like pushing the variable name In a Different WaY? < 1137371520 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :*Way < 1137371528 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Very much so. < 1137371532 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1137371545 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, this is the point where I step out and let logs do all the work. < 1137371552 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Bye ihope. < 1137371558 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Buh-bye < 1137371561 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :bye < 1137371584 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Now, let's say that you didn't want the pointer to _a on the stack, but the value. < 1137371598 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The operator * dereferences the top element on the stack. < 1137371607 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to push the /value/ of _a onto the stack: (_a)* < 1137371612 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions so far? < 1137371652 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1137371656 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :you mean, i only want to define something, and have nothing to do with a stack, then i add * after the definition? < 1137371694 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :No, that puts the value of _a onto the stack. < 1137371702 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You don't need to define variables, they're defined on use. < 1137371718 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :value... aha < 1137371737 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :While just doing (_a) pushes a pointer to _a on the stack, doing (_a)* puts the value of _a on the stack. < 1137371746 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(By pushing a pointer then dereferencing it) < 1137371771 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :mhm < 1137371789 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :if a = 3, (a) or a pushes a, and a* pushes 3, right? < 1137371798 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Precisely. < 1137371804 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1137371808 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You can also push other things onto the stack. To push a number, use . < 1137371812 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :<0>, <1>, etc. < 1137371818 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Or <0.1435432542> :) < 1137371835 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To push a string, use "..." < 1137371837 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :then also <0xFF>? (: < 1137371844 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :No hex ATM :P < 1137371858 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Just decimal. < 1137371877 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You can also push values from deeper into the stack onto the top of the stack. < 1137371897 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :'0' will duplicate the top value on the stack, '1' will duplicate the second value, etc. < 1137371908 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You can also put those in () if you need 10 or higher. < 1137371917 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions on any of those? < 1137371922 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1137371937 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, now let's set the value of a variable. < 1137371946 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Let's say you want to set the value of _a to 1. < 1137371957 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You need the operator =. < 1137371974 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric := sets the variable in stack position 1 to the value in stack position 0, then pops them both off. < 1137371990 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, push the pointer to the variable, then the value you want to set it to, then use = < 1137371999 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_a)<1>= < 1137372014 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(And there's the reverse polish notation :) ) < 1137372028 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Got it? < 1137372032 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :no syntactic sugar. i like that < 1137372033 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :yeap < 1137372040 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :oh, well < 1137372046 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :? < 1137372050 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :then <1>(_a)= causes an error? < 1137372058 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, that wouldn't work. < 1137372063 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1137372094 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(Hm, what should I go to next ...) < 1137372111 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Oh, heh - to just pop something from the stack, use ',' < 1137372136 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I guess it's time for classes :) < 1137372160 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To make an instance of a class, use !. < 1137372206 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :First push a pointer to the variable in which you want the instance to the class, then push a pionter to the class itself. Then use '!', and it will pop those and set the variable to an instance of the class. < 1137372222 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to make _o an instance of class O: < 1137372224 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_o)O! < 1137372227 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions? < 1137372241 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :very clear so far < 1137372252 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, brb < 1137372307 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, so now you have a variable with an instance of a class. Now you need to be able to get to functions in it. < 1137372345 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Simply push the pointer to the instance of the class, then a pointer to the function, and use '.'. It will dereference the pointer in the scope of the class, and leave a pointer to the function itself on the stack. < 1137372370 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to get a pointer to the function O.o when you have an instance of O in _o: < 1137372374 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_o)o. < 1137372383 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That cannot possibly have been clear :P < 1137372426 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Still understanding? < 1137372458 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :yeap < 1137372463 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, good ^_^ < 1137372475 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To call a function that you have on the stack, simply use '?' < 1137372492 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to call O.o for the instance _o: < 1137372495 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_o)o.? < 1137372517 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :then how can i give some arguments? < 1137372528 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It has the same stack you do. < 1137372531 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So arguments are on the stack. < 1137372550 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It's all one big main stack :) < 1137372578 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :aha... they are on the stack, ok < 1137372582 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yup < 1137372609 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, if you had a function that was passed a number, you could do something like the following to put that number in _a: < 1137372614 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_a)1=, < 1137372644 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That would push a pointer to _a, then the value one in the stack below it, and put that value in _a, then pop off the value still left in the stack, therefore getting the variable where you want it. < 1137372653 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and return values are generally on the stack as well. < 1137372673 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And by "generally" I mean "always" < 1137372705 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions on passing-by-stack? < 1137372769 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1137372773 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hoopla < 1137372826 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To set a variable to 'this' (that is, the instance of the current class), push a pointer to the variable, then use the operator '$'. < 1137372831 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_t)$ < 1137372834 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :For example. < 1137372879 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And that's all for lesson #3, anything unclear before lesson #4? < 1137372941 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :clear < 1137372945 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Good < 1137372952 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #4: Loops < 1137372960 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #4: Loops *and conditionals < 1137372980 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :There is only one branching operation in Glass, the while loop. It can be used, however, to emulate a conditional. < 1137373005 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :feeling the Glass page of wiki is kinda unkind < 1137373018 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hah, I'm sure it is :P < 1137373022 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :A while loop is declared very much like a class or method: a character /, then the name of the variable to loop on, then the content, then \. < 1137373051 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It will loop so long as the supplied variable is not a zero or an empty string. < 1137373081 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :As with everything else, if the variable is more than one character, it must be in (). < 1137373085 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, to loop on the variable _a, use /(_a)...\ < 1137373107 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :There's not much interesting we can do with loops or conditionals until we get into built-in classes, the next lesson. < 1137373116 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, questions? < 1137373141 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :easy < 1137373148 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Figured, short lesson ^_^ < 1137373160 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :what a language < 1137373160 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #5: Built-In Classes < 1137373181 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You may notice at this point that all of this provides nothing useful - no math, no I/O, just the very basic. < 1137373199 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Well, that's because in Glass, most real functionality is ousted to built-in classes. < 1137373212 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That includes I/O, string manipulation, and even basic arithmetic. < 1137373243 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Err, brb. < 1137373304 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Back < 1137373319 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, so let's start with simple I/O, so we can finally make the elusive Hello, World! program. < 1137373328 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :There's a builtin class called 'O' < 1137373333 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Which stands for 'Output' < 1137373340 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And allows you to output strings. < 1137373349 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And numbers. < 1137373361 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It has two functions: O.o, and O.on. < 1137373371 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :O.o outputs the string on top of the stack, then pops it off. < 1137373379 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :O.on outputs the number on top of the stack, then pops it off. < 1137373392 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, you should now know enough to implement Hello, World! < 1137373416 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :All you need to do is instanciate a class O, then push "Hello, World!", then call O.o for that instance. < 1137373426 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And brb again (too much stuff going on P ) < 1137373430 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :*:P < 1137373551 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ACTION upgrades that brb into a bbiab. < 1137374162 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, back. < 1137374166 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Gs30ng: Still there? < 1137374401 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :i've been afk to have something before starving < 1137374407 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :ok i'm totally back < 1137374425 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Then I think it's time for assignment #1 :P < 1137374438 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Without using the Wiki page, do a Hello, World in Glass. < 1137374449 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Using !glass if you'd like of course. < 1137374455 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :i'll try < 1137374475 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :mhm i should start with the class M and function m... < 1137374483 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yup < 1137374509 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M < 1137374533 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :function declaration starts with... (scrolling) ... [ < 1137374544 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M[m < 1137374610 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :and then to instantiate the class O < 1137374619 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :(_g)O! < 1137374672 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So far looks good. < 1137374725 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :now i call O.o and give "Hello, World!" as its argument < 1137374744 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :argument should be on the stack before the function call, so "Hello, World!" < 1137374758 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M[m(_g)O!"Hello, World!" < 1137374824 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :to get method o from _g, (_g)o. < 1137374840 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M[m(_g)O!"Hello, World!"(_g)o. < 1137374851 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :and then call it < 1137374853 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M[m(_g)O!"Hello, World!"(_g)o.? < 1137374864 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :{M[m(_g)O!"Hello, World!"(_g)o.?]} < 1137374910 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Feel free to use !glass < 1137374919 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_g)O!"Hello, World!"(_g)o.?]} < 1137374923 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, World! < 1137374928 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :whoa < 1137374966 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Congrats :) < 1137374983 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You're well on your way to being a Glass expert ^_^ < 1137375010 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :thanks, Professor GregorR < 1137375012 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1137375021 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Next built-in: Input < 1137375045 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The class 'I' (short for Input of course) handles, err, input. < 1137375055 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It has three functions: I.l, I.c and I.e. < 1137375071 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That I.l as in line, not I.I as in Input :P < 1137375092 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I.l inputs a line of input and pushes it onto the stack, L.c inputs a character. < 1137375099 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Err, I.e, sorry. < 1137375103 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Err, I.c < 1137375106 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lemme try that again. < 1137375112 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I.l inputs a line of input and pushes it onto the stack, I.c inputs a character. < 1137375137 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I.e pushes the number 1 on eof, or the number 0 if not. < 1137375159 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And that's all there is to the I class, questions on it? < 1137375190 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :of course not, very easy < 1137375209 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :By the way, three more built-ins to cover, then one more lesson, then we're done ;) < 1137375214 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And the next lesson is a short'n. < 1137375222 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, onto arithmetic! < 1137375239 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The builtin 'A' class handles simple arithmetic. < 1137375282 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It has 11 binary operations (that is, operations with two operands), and 1 with one unary operation. < 1137375286 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The binary operations are: < 1137375331 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Gah, brb < 1137375350 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :brb too < 1137375494 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :a (add), s (subtract), m (multiply), d (divide), mod (modulus), e (equals), ne (!=), lt (<), le (<=), gt (>), ge (>=) < 1137375521 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To use a binary operation, push the two operands in order, call it, and it will pop them, then push the result. < 1137375537 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The unary operation is floor (that is, round down) < 1137375552 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To use it, just push the value, then call it, and it will pop it, then push the floored value. < 1137375579 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Err, sorry, the unary operation is f, which stands for floor >_> < 1137375626 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :so they are not in the shape of +-*/ < 1137375656 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :No, they're all by-name. < 1137375667 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and dividing by zero will of course do nasty things, don't do it ^_^ < 1137375724 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :So, for a simple example, to increment _a, you would push a pointer to _a, then the value to _a, then a 1, then call A.a (to add the value to 1), then use = to set that new value in _a. < 1137375743 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :(_m)A!(_a)(_a)*<1>(_m)a.?= < 1137375748 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :*whew* < 1137375751 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Questions? < 1137375780 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_a)A!<1><0>(_a)d.?]} < 1137375793 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :that seems a bit verbose < 1137375797 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I doubt that it'll actually give any output. < 1137375807 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :oops. < 1137375813 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The reference interpreter is relatively debug-output free :) < 1137375825 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :lament: How so? < 1137375836 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_o)O!(_a)A!<1><0>(_a)d.?(_o)o.?]} < 1137375848 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To output a number, use O.on < 1137375854 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_o)O!(_a)A!<1><0>(_a)d.?(_o)on.?]} < 1137375858 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :GregorR-L: that's a lot of work to increment something :) < 1137375866 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :To push a variable with more than one character, put it in () < 1137375874 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :lament: Yeah, that's the joy of builtin classes XD < 1137375883 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :!glass {M[m(_o)O!(_a)A!<1><0>(_a)d.?(_o)(on).?]} < 1137375889 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 < 1137375906 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :If you divide by zero, the results will be unpredictable :P < 1137375935 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :its TOO object-oriented. < 1137375940 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :it's* < 1137375941 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Heehee < 1137375956 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, two more builtins: string manipulation and anonymous variables. < 1137375995 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :*whew* *cough* *sputter* < 1137376015 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Maybe I should just tell you to read the wiki for those XD < 1137376038 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ACTION draws a lazy card: Please read the wiki for those, they're described adequately. < 1137376055 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, questions on any of the builtins I went over before the final (very short) lesson? < 1137376077 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1137376099 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Lesson #6: Constructors and Destructors < 1137376129 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Naturally, many classes have to be prepared before any functions in them are run. < 1137376140 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :That is of course the purpose of a constructor. < 1137376143 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :i don't know why every functions should be in the class < 1137376155 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Because if they didn't, it wouldn't be OO :) < 1137376165 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :In Glass, the constructor for a class is named c__ < 1137376174 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It's simply a function like any other. < 1137376202 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :The destructor (which is of course called when the class no longer has any references) is called d__ < 1137376218 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I think that's about all I can teach about Glass, so it's general question time. < 1137376314 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yay, no questions, I must be the best teacher ever 8-D < 1137376332 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1137376370 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I'll post a link to this log on the Glass wiki entry. < 1137376400 0 :Gs30ng!unknown@unknown.invalid PRIVMSG #esoteric :that is one good idea < 1137376603 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :OK, 's linked. < 1137376618 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You are now officially a minion of Glass :P < 1137377504 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes to bed < 1137377826 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is back! < 1137377844 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Aand I have to go :-P < 1137377860 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Hah < 1137377861 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Bye < 1137377869 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well... bye, and thanks for all the fish... I mean, um. < 1137377872 0 :ihope!unknown@unknown.invalid QUIT :"Chatzilla 0.9.69.1 [Firefox 1.5/2005111116]" < 1137378002 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1137378005 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ooh, almost forgot... < 1137378014 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :How do you put quote characters inside a string? < 1137378056 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :\" < 1137378062 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137378064 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :You can also use \n < 1137378069 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :IIRC < 1137378070 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1137378074 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Any other escape codes? < 1137378097 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...And there is \\, right? < 1137378116 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Yeah < 1137378127 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Anything else? < 1137378131 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :And IIRC, that's it - otherwise, you have to use S.ns < 1137378143 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Okay. Thanks < 1137378148 0 :ihope!unknown@unknown.invalid QUIT :Client Quit < 1137379904 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Well, back home. < 1137379905 0 :GregorR-L!unknown@unknown.invalid QUIT : < 1137382217 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Well, back home. < 1137384765 0 :CXI!unknown@unknown.invalid QUIT :Success < 1137384803 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Success! < 1137386820 0 :Gs30ng!unknown@unknown.invalid QUIT :"CCCiRC :: Console-based Convenient Client for IRC :: http://www.perarin.net/s.html" < 1137398399 0 :clog!unknown@unknown.invalid QUIT :ended < 1137398400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1137398798 0 :CXI!n=Sanity@dialup-197.88.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1137400066 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I miss the good ol' days (you know, two months ago) when I could come in here and be endlessly entertained by #esoteric antics. < 1137400295 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ah, where have all the flowers gone < 1137400302 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1137400308 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets out his lute. < 1137400777 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets out his viola d'amore < 1137400994 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets out his harpsichord (yeah, I can play a harpsichord and a lute simultaneusly) < 1137401869 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets out his organ < 1137401903 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gets arrested for indecent exposure < 1137401908 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1137404986 0 :fungebob!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1137405805 0 :EgoBot!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1137405811 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Whooooooooops < 1137406015 0 :EgoBot!n=EgoBot@198.107.20.174 JOIN :#esoteric < 1137408281 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll file://glass/dice.glass < 1137408283 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137408287 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1137408297 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Whoops, lemme do that right :) < 1137408300 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll glass file://glass/dice.glass < 1137408301 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137408305 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 4 < 1137408306 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137408323 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, sent that to me, one more kink to work out ... < 1137408417 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Bah, just accidentally made a bunch of zombies ... < 1137408423 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!raw QUIT *fix* < 1137408424 0 :EgoBot!unknown@unknown.invalid QUIT :"*fix*" < 1137408692 0 :EgoBot!n=EgoBot@198.107.20.174 JOIN :#esoteric < 1137409358 0 :Keymaker!n=nobody@wire74.adsl.netsonic.fi JOIN :#esoteric < 1137409364 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137409367 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1137409381 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :hmm, it doesn't work! < 1137409388 0 :Keymaker!unknown@unknown.invalid PRIVMSG #esoteric :lousy robot!! < 1137410802 0 :Keymaker!unknown@unknown.invalid PART #esoteric :? < 1137411241 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Grrr, Haskell professor sent out patch that doesn't actually correct the probel *at* *all*. < 1137411279 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I spent 3 hours tracking that bug down, while I could have been in the pub. < 1137411393 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :fortunately I could see the proble with his patch for it immediately. < 1137412981 0 :perky!unknown@unknown.invalid QUIT :Remote closed the connection < 1137413535 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes < 1137415009 0 :CXII!n=Sanity@dialup-206.89.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1137415034 0 :CXI!unknown@unknown.invalid QUIT :Nick collision from services. < 1137415036 0 :CXII!unknown@unknown.invalid NICK :CXI < 1137419362 0 :jix!i=jix@C7eca.c.strato-dslnet.de JOIN :#esoteric < 1137428696 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1137428719 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Does EgoBot ever check its memos? < 1137435025 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1137438774 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ihope: ... No, why would it. < 1137439585 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!reload < 1137439588 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!help daemon < 1137439594 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Use: daemon Function: start a daemon process. < 1137439611 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll glass file://glass/dice.glass < 1137439620 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 1 < 1137439624 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hoopla. < 1137441172 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, Haskell is suprisingly powerful. < 1137441210 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I have just written a parser for a language which in a moment will become more powerful that the original LISP." < 1137441241 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I wrote this with basically no proir knowlage of parsing or interpreting in just a few hours. < 1137441248 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Ooops < 1137441262 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I meant to say it's an interpreter as well. < 1137441269 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hah < 1137441290 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :You can do better in C++ I assume. < 1137441327 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Nah, parsers are easier in Haskell. < 1137441347 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That wasn't a "HAH, PUNY MORTAL" laugh. < 1137441471 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok < 1137442612 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1137443093 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION curses XOFF < 1137444889 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1137445171 0 :ihope_!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1137446146 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1137446853 0 :ihope_!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1137446858 0 :ihope_!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1137446862 0 :ihope_!unknown@unknown.invalid NICK :ihope < 1137447617 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :ruby is the only language for writing good parsers (or anything else that can be written ;) ) < 1137447622 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :goodnight everyone < 1137447668 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1137447784 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes. < 1137448185 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION comes < 1137449124 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Which is better: Unlambda or Lazy K? < 1137449679 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :better? < 1137449739 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Aye, better. < 1137449762 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :better? < 1137449767 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Aye, better. < 1137449778 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :better? < 1137449791 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Nay, butter. < 1137449875 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :Though my experience with those languages is sadly limited, I can safely state that neither of them is butter. < 1137449887 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ah. < 1137453949 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Umm < 1137453966 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :1-3, unlambda is better, 4-6, LazyK is better. < 1137453968 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137453971 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 3 < 1137453977 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Looks like Unlambda is better. < 1137454000 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Okay. Thanks. < 1137454075 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is there a way to have these daemons take parameters? < 1137454137 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, anything after ! is given as input. < 1137454149 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh... < 1137454221 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is there a way for any programming lanugage to do EgoBot commands? >:-) < 1137454296 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Not any implemented in EgoBot. < 1137454306 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot doesn't parse its own output. < 1137454317 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oh, unless you mean to implement a daemon in any language - any language can have a daemon, yes. < 1137454363 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I mean something like a Glass class that does !bf_txtgen. < 1137454374 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, that would be totally doable. < 1137454383 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1137454387 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon < 1137454389 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lambda lazyk malbolge pbrain rail sadol sceql trigger udage01 unlambda < 1137454403 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A suicidal Unlambda program? < 1137454412 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!unlambda `e`.*i < 1137454417 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :* < 1137454421 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1137454425 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ihope: ps < 1137454476 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :You know, e acts as a comtinuation for the whole program. < 1137454479 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or something like that. < 1137454576 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon g_bf glass {M[m(_i)I!(_f)(_i)e.?=(_t)<1>=/(_f)(_f)<0>=(_t)<0>=\/(_t)(_b)(BF)!(_i)l.?(_b)(bf).?(_f)(_i)e.?=(_t)<1>=/(_f)(_f)<0>=(_t)<0>=\\]} < 1137454582 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen Hello, World! < 1137454603 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :118 +++++++++++[>++++++>+++++++++>+++>++++<<<<-]>++++++.>++.+++++++..+++.>>.<-.<<+++++++++++++++.>.+++.------.--------.>+. [154] < 1137454614 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!g_bf +++++++++++[>++++++>+++++++++>+++>++++<<<<-]>++++++.>++.+++++++..+++.>>.<-.<<+++++++++++++++.>.+++.------.--------.>+. < 1137454646 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, maybe I didn't do that right >_> < 1137454690 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Glass programs are quite lucid... < 1137454725 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Well, that's the condensed version ^_^ < 1137454741 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon g_bf < 1137454742 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!kill 2 < 1137454745 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, World! < 1137454747 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 2 killed. < 1137454749 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :GARR < 1137454752 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It worked :P < 1137454774 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137454792 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I don't think it just took that long, I think the buffers didn't flush properly >_> < 1137454797 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I wonder why < 1137454799 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!roll < 1137454803 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 4 < 1137454804 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Works, but g_bf doesn't < 1137454857 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :*shrugs* < 1137454861 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OH < 1137454863 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Of course. < 1137454867 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It didn't output a \n < 1137454872 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen Hello, World!\n < 1137454883 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen \a < 1137454886 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1137454891 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ihope: bf_txtgen < 1137454893 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 GregorR: undaemon < 1137454895 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :4 GregorR: bf_txtgen < 1137454895 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :!kill 2 < 1137454897 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :5 ihope: bf_txtgen < 1137454899 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :6 ihope: ps < 1137454901 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 2 killed. < 1137454909 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :40 +++++++++++++[>+++++++>>><<<<-]>+.+++++. [39] < 1137454909 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Woah, undaemon is running? >_O < 1137454919 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!kill 3 < 1137454920 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Eep! < 1137454921 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1137454923 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, one sec, have to check undaemon. < 1137454929 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :137 ++++++++++++++[>+++++>+++>++++++++>+++++++<<<<-]>++.>>>+++.<----..+++.<++.------------.<+++++++++++++++.>>.+++.------.>-.<<+.<+++++.>>++. [424] < 1137454945 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I see the problem. < 1137454972 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...So, wait, where's my \a? < 1137454994 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It only parses \n :P < 1137455000 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137455017 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!reload < 1137455026 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll glass file://glass/dice.glass < 1137455037 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 3 < 1137455056 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon g_bf glass {M[m(_i)I!(_f)(_i)e.?=(_t)<1>=/(_f)(_f)<0>=(_t)<0>=\/(_t)(_b)(BF)!(_i)l.?(_b)(bf).?(_f)(_i)e.?=(_t)<1>=/(_f)(_f)<0>=(_t)<0>=\\]} < 1137455065 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!g_bf ++++++++++++++[>+++++>+++>++++++++>+++++++<<<<-]>++.>>>+++.<----..+++.<++.------------.<+++++++++++++++.>>.+++.------.>-.<<+.<+++++.>>++. < 1137455094 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!show 1 < 1137455098 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heheh, it actually showed \n :P < 1137455111 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :So clearly it isn't doing what I though :P < 1137455124 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon g_bf < 1137455125 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!kill 2 < 1137455129 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, World!\n < 1137455131 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 2 killed. < 1137455149 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, feel free to add daemons *shrugs* < 1137455150 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Can I !bf_txtgen .....................................................................................................................................................................................................................................................................................................................................? < 1137455179 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Umm ... < 1137455182 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, but it won't do anything ... < 1137455214 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137455375 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :One more fix ... < 1137455377 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!kill 1 < 1137455381 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 1 killed. < 1137455382 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!reload < 1137455400 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll glass file://glass/dice.glass < 1137455405 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1137455408 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 GregorR: daemon roll glass < 1137455411 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 GregorR: ps < 1137455414 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon roll < 1137455416 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 1 killed. < 1137455420 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Cool :) < 1137455421 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!daemon roll glass file://glass/dice.glass < 1137455428 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, all is right int he world. < 1137455430 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :*in the < 1137455440 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :You rolled a 1 < 1137455622 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders what else would work well in daemon mode. < 1137455649 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Some sort of game ... < 1137455665 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Hmm... < 1137455706 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ihope: Did the log help you learn Glass at all, btw? :) < 1137455741 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I think so, < 1137455929 0 :blahm!n=ampm8104@dialup-29-188-19-204.hip.cam.org JOIN :#esoteric < 1137455932 0 :blahm!unknown@unknown.invalid PART #esoteric :? < 1137455939 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :BLAHM! < 1137455945 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :He's in and he's out. < 1137455948 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Just like that. < 1137455949 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1137455949 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :BLAHM! < 1137455957 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :He's out and about. < 1137455960 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :He's like that.