00:00:15 If you do all the setup right, maybe you can have the loop iterate Many, Many Times... 00:00:35 not if it's just a single loop - that's the point. 00:00:53 ...Yeah, you 00:00:55 're right. 00:00:58 if there are two loops on the other hand ... 00:01:10 I'm not sure yet what you can do with that 00:02:06 You can do a bunch! 00:07:37 Well, we obviously can't fit two useful loops into 6 spots. 00:08:41 We need at least 2 .'s, an @, something to set the top bit to zero, and the brackets. 00:08:44 [[<]?] or [?[<]] :) 00:09:32 ...So we have @[loopguts]? 00:09:49 hmm. that's pointless 00:10:06 you can omit the outer [] then 00:10:32 ...Yep. 00:11:10 ok, so we need at least 2 characters before the loop, two for the outer loop, three for the inner loop and two dots. 00:11:45 actually, we need one more for the outer loop to make sense - [[...]] is equivalent to []. 00:11:49 [...] 00:12:04 that makes a minimum of 8 for two loops. 00:12:39 for one loop, I have a lower bound of 13 characters now, and the above example with 14. 00:13:58 Wait, you mean that one loop needs to have at least 13 characters to be of any use? 00:14:39 no. that was the total program length if the program contains only one loop. 00:14:52 ...Right. 00:16:27 So [1..12] maps onto [1..12]? 00:16:30 in fact it should be possible to prove that this program structure, @<<<<@[....>@], is the best possible. 00:16:43 for a single loop program. 00:17:38 ihope: I'm not 100% sure. I'm sure that 1 to 7 map to 1 to 7. 00:23:21 At least PDA-BF kann model every PDA. 00:23:41 simulate. 00:24:59 Well, BF-PDA has two symbols but can have many states. I will have to ask my TC lecturer. 00:25:52 if you encode bits as 10 and 01 on the stack, you can test a bit using [>> code for 1 <<]>[> code for 0 >]> 00:26:15 previous to last > -> < 00:27:01 if you number the states in binary and keep the current state on the top of the stack you can decode it, modify the stack and push a new state onto it. 00:27:35 ah, of course 00:27:36 You can then use the topmost bit to allow the program to terminate. 00:30:39 New version of the language is up. 00:31:06 !reload 00:31:07 !help 00:31:12 help ps kill i eof flush show ls 00:31:13 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lazyk malbolge pbrain rail sadol sceql udage01 unlambda 00:31:16 Enjoy. 00:31:34 Yay! 00:32:38 !unlambda ```````````````.T.h.i.s. .i.s. .a. .t.e.s.t..i 00:32:41 This is a test. 00:32:45 :-) 00:33:43 Up to 18 languages, only 2 more to hit 20 :) 00:33:48 Suggestions? 00:34:02 BF-PDA? :-) 00:34:08 !unlambda `.i````ss``s`k`s.i``s`k`ki|``s``s|.```s``s|..``s``s|.i``s``s|.```s``s|.```s``s|.```s``s|.```s``s|.s``s``s|.s``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.k``s``s|.```s``s|.s``s``s|..``s``s|.i``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.k``s``s|.```s``s|.k``s``s|.i``s``s|.|i``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.```s``s|.s``s``s|.|``s``s|..i 00:34:11 `.i````ss``s`k`s.i``s`k`ki|``s``s|.```s``s|..``s``s|.i``s``s|.```s``s|.```s``s|.```s``s|.```s``s|.s``s``s|.s``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.k``s``s|.```s``s|.s``s``s|..``s``s|.i``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.k``s``s|.```s``s|.k``s``s|.i``s``s|.|i``s``s|.```s``s|.```s``s|.s``s``s|.```s``s|.```s``s|.s``s``s|.|``s``s|..i 00:34:18 Step one: write interpreter. Step two: Add interpreter to EgoBot :P 00:35:43 Incidentally, is BDSM the interpreter named purposely after BDSM the sexual fetish? 00:36:35 ihope: if I make that number big, that acts like a tape, right? i.e. infinity: would behave like a normal brainfuck program (if allowed)? 00:36:58 int-e: yes, except you can't use infinity :-) 00:37:59 int-e: if you're going to run programs like that, can you use pastebin or just /msg please 00:38:52 SimonRC: it was a one time demonstration of a quine. I wasn't going to repeat it. 00:39:01 ah, ok 00:39:19 That's damn short for a BF quine. 00:39:29 it's Unlambda. 00:39:37 !bf 00:39:38 that's what I meant 00:39:45 * SimonRC keeps calling UL BF 00:39:50 A shorter quine. 00:40:21 !unlambda `ii 00:40:29 ihope: that one's been done 00:40:38 I was an IOCCC entry one year 00:40:47 What's that 00:40:48 ? 00:41:04 Note to self: look things up BEFORE asking. 00:41:26 hmm firefox just died 00:41:36 kablam! just disappeared 00:41:50 ihope: nnn:@[>>[>]@[<]<]>[>.] ... this or something similar like that should print nnn digits :) 00:42:05 :-) 00:42:55 * SimonRC humms the _Terminator_ theme. 00:43:27 dadadaaaaah daadaadaaaaah dadadaaaadadadaadaaah. 00:43:44 * ihope doesn't know that one, so he hums Mission Impossible 00:43:46 * SimonRC feels inspired to create a new Esolang. 00:43:50 nnn:@[>>[>]<[@<.]<] should print something like 2^nnn*nnn digits. 00:43:57 :-D 00:44:29 err, no, 2^nnn. the nnn factor is wrong. 00:44:39 How about printing a number equal to Graham's number, but doing nnn iterations instead of 64? 00:46:04 ihope: It could be isomorphic to BF, da > dah < daa + daah - daaa [ daaah ] daaaa . daaaah , 00:46:21 Yeah! 00:46:27 whitespace would be ignored 00:47:04 Would "daaaaah" be something like [-]+[]? 00:50:36 no 00:51:30 more like: daaadaah daaahdaa daaadaaah 00:51:49 !reload 00:51:50 !help 00:51:53 help ps kill i eof flush show ls bf_txtgen 00:51:55 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lazyk malbolge pbrain rail sadol sceql udage01 unlambda 00:52:00 !bf_txtgen Hello, World! 00:52:29 add false! 00:52:46 false is ugly though. 00:52:47 lament: Give me an interpreter that isn't awful ^_^ 00:53:00 oh, add lambda calculus. 00:53:09 Good idea! 00:53:28 except i'm not sure if it's a good idea to add pure LC 00:53:41 where as output you just get a LC expression 00:53:46 those tend to be LONG 00:54:02 so it would have to be LC with some sort of output (and perhaps even input) 00:54:22 Clone Lazy K's? 00:54:23 !bf_txtgen Hello, World! 00:54:27 No repeats. 00:54:32 ihope: making the nnn a variable is an interesting problem 00:54:32 Heheh 00:54:36 !bf_txtgen Hello, World! 00:54:38 I want a LC interpreter that people could extend with definitions 00:54:44 from the channel 00:54:48 int-e: what do you mean? 00:54:53 116 ++++++++++++++[>+++++>+++++++>+++>++++++<<<<-]>++.>+++.+++++++..+++.>++.------------.>+++.<<.+++.------.--------.>+. [829] 00:54:58 Like how my Glass interpreter works. 00:55:08 or how falsebot worked 00:55:09 !bf ++++++++++++++[>+++++>+++++++>+++>++++++<<<<-]>++.>+++.+++++++..+++.>++.------------.>+++.<<.+++.------.--------.>+. 00:55:13 Hello, World! 00:55:31 The interpreters are the most fun when they're user-expandable. 00:55:32 I can write such an interpreter (in about ten minutes) but it will be slow 00:55:37 ihope: for every value of nnn you have a PDA. But by increasing nnn you can increase the PDAs state space - so the problem becomes what PDAs you can encode in that space ... 00:55:39 Slow is fine. 00:56:00 GregorR: EgoBot executes the program anew each time? 00:56:06 lament: Yes. 00:56:13 lament: So it would need some method of caching to file. 00:56:15 okay 00:56:18 i'll do that 01:01:05 * GregorR is leaving in 30min. 01:02:06 Say, did you find those extra lives you had? 01:02:13 Probably, seeing as how you 01:02:13 Yeah, I got em. 01:02:17 Only one left now. 01:02:22 're not [dead] anymore. 01:02:44 I'll have to find a green mushroom somewhere and eat it. It'll either be moldy and then I'll have zero left, or it'll be magic and I'll have two again. 01:02:55 Ooh! 01:03:03 What are the chances of it being moldy? 01:03:16 Depends on where I find it :P 01:03:23 Ah... 01:03:37 how does !bf_txtgen work? 01:03:38 Don't the best ones grow at the bottom of the Valley Gorge? 01:03:58 SimonRC: it turns text into BF code which outputs it? 01:04:03 ihope: No, they're in boxes with big question marks on them. 01:04:08 Oh... 01:04:11 SimonRC: What ihope said. 01:04:39 I meant how does it create the program? 01:04:47 SimonRC: http://lilly.csoft.net/~jeffryj/programs/bf/textgen.java 01:05:56 !bf_txtgen 01:05:59 No repeats. 01:06:11 ...Anyway, that gave me a nice long error message. 01:06:41 that looks rather alarming 01:06:49 It *evolves* them? 01:07:03 Gasp! 01:07:15 EVIL HEATHENS! 01:07:17 !malbolge_txtgen Hello, world! 01:07:18 ;-) 01:07:33 You want to write malbolge_txtgen? I'll include it if you do :P 01:08:01 IIRC, there is one that was used to create a Malbolge hello world program 01:08:28 Did that actually output "Hello, world!"? 01:08:32 But its selection function was very liberal. 01:08:38 ihope: almost 01:08:38 !bf_txtgen 01:08:41 java.lang.IllegalArgumentException: n must be positive 01:08:47 Heh 01:08:57 Ah, wait, no, it creates the BF programs by Intelligent Design, not evolution. 01:09:19 omgwtfbbq! 01:09:19 No, it creates the BF programs by Divine Creation. 01:09:32 It creates them by Creation. 01:09:38 That I know. 01:09:40 :P 01:09:44 The Divine sort. 01:09:50 * SimonRC could resist the stab. 01:11:03 Well, I can't imagine it'd be too hard to write a "Hello, world!" program in Malbolge. 01:11:13 Hahahahahahhahahahha 01:11:16 Famous last words. 01:11:29 First, you execute j about three times. 01:11:45 This should put the data pointer in a random memory location, more-or-less. 01:12:16 Actually, there is a 99 bottles of beer program in Malbolge. 01:12:24 (gasp!) 01:12:39 Then you do all the appropriate "stuff", and bang! 01:12:40 It consists of a load or crap that outputs a gzipped text of the song. 01:12:50 gzipped :-P 01:12:58 Waitamo, was that Dis? 01:13:08 I don't so. 01:13:14 ihope: it gets much shorter when gzipped 01:14:27 SimonRC: but not shorter than "Hello, world!", I'm sure... 01:14:57 I still refuse to believe in said 99bob in Malbolge. 01:16:01 GregorR: It only has to output 807 bytes, rather than 11785 01:16:10 Never mind, found it. 01:16:16 test it 01:16:49 It doesn't say anything about gzipping. 01:17:02 !malbolge http://www.99-bottles-of-beer.net/download/995?PHPSESSID=db289c2cadd3cce36d2f1ee62e193ebe 01:17:07 invalid character in source file 01:17:12 Burn. 01:17:15 :-D 01:17:24 fuck 01:17:28 i hate debugging 01:17:43 I can't get it to tell me anything but that :P 01:17:51 lament: Your interp not going so well? :P 01:19:09 GregorR: IIRC, it might be the one that cheats by using chars > 127 01:19:44 Okidoke ... 01:20:32 ihope: calculating Graham's number to nnn steps is not possible that way. 01:21:16 ihope: (in PDA-BF version 2) 01:23:33 !malbolge files://99.mal 01:23:37 invalid character in source file 01:23:44 GregorR: no 01:23:47 !malbolge file://99.mal 01:23:51 and now my brother came and is playing the drumset downstairs 01:23:52 99 bottles of beer on the wall, 01:24:00 Well, it works. 01:24:05 so it's pretty much impossible to think 01:24:08 :| 01:24:24 17:23:52 Take one down, pass it around, 01:24:24 17:23:54 Process 1 killed. 01:24:33 ihope: OTOH I believe (2^(nnn/2))! is doable. (also (2^(nnn*(1-epsilon)) for all epsilon) 01:24:40 Exciting conclusion too :P 01:25:01 -!- ihope_ has joined. 01:25:09 epsilon>0 01:25:56 [2^(nnn*(1-epsilon))]! ... there. 01:34:14 -!- ihope has quit (Nick collision from services.). 01:34:21 -!- ihope_ has changed nick to ihope. 01:35:09 GregorR: you're there? 01:35:19 i have something working now 01:36:42 * SimonRC goes to bed 01:44:03 -!- int-e has quit ("Bye!"). 01:50:13 my interpreter is cool :) 01:50:36 it also doesn't work 01:51:11 an annoying side-effect of coolness 01:51:19 Heh. 01:52:08 and i want to kill my brother 02:03:41 What's the shortest TLD? 02:05:53 i don't think there're any one-character ones 02:06:18 So tv, maybe? 02:07:11 -!- ihope has quit ("Chatzilla 0.9.69.1 [Firefox 1.5/2005111116]"). 02:20:40 -!- GregorR-L has joined. 02:21:19 lament: Will you still be here in two hours? 02:24:26 I suspect not, since you're not here now ^_^ 02:25:59 actually i am 02:26:04 but my interpreter doesn't work 02:26:27 OK, so the alternative question is, will it work in 2 hours? :P 02:26:49 that remains to be seen :| 02:27:05 Well, I'll be back home in two hours. 02:27:07 So we'll see. 02:29:21 okay. 02:38:01 okay i think it works 02:40:07 lua:~/python/lambda_eso lament$ python lambda.py 02:40:07 plus two two "*" i 02:40:08 **** 02:40:10 :D 02:40:39 "*" is evaluated to the identity function with the side effect of printing * 02:44:05 Cool - upload it somewhere, I'll convert it to a /real/ programming language like C++, and then I'll add it to EgoBot. 02:44:14 huh 02:44:24 what do you mean convert to a real programming language 02:44:27 I'm being sarcastic about the C++ part to harass you ;) 02:44:37 oh 02:44:49 one sec, i'll add a function to show expressions 02:45:00 Well, I can't add it now anyway. 02:45:15 Only in about 1.5 hours. 02:45:21 okay 02:48:31 heh 02:49:01 lua:~/python/lambda_eso lament$ python lambda.py 02:49:01 #show (plus two two "*" i) 02:49:02 \m.(\n.(\f.(\x.(m f n f x)))) \f.(\x.(f f x)) \f.(\x.(f f x)) "*" \x.x 02:49:47 (it's lazyish so (plus two two "*" i) doesn't get evaluated when it's being shown) 02:50:07 (but name substitution is actually performed during parsing) 02:52:06 that didn't quite work right 02:52:11 but now it does: 02:52:27 lua:~/python/lambda_eso lament$ python lambda.py 02:52:27 #show (plus two two " *" i) 02:52:28 \m.(\n.(\f.(\x.(m f n f x)))) \f.(\x.(f f x)) \f.(\x.(f f x)) " *" \x.x * * * * 02:52:48 first the expression is shown, then it still gets evaluated as normal, printing * * * * 02:55:53 Not knowing the language, I'll just smile and nod... 02:56:22 what 02:56:28 you don't know lambda calculus! 02:56:47 Rather, remember. 03:00:11 hm 03:00:21 would be nice to have a way to show something evaluated 03:00:28 i wonder how to do that 03:01:15 perhaps #show should just always evaluate its argument immediately 03:01:23 i'll try that 03:01:59 #show (plus two two " *" i) 03:01:59 * * * *\x.x 03:02:09 not very satisfactory, either :) 03:19:05 This class (or at least, the first few days) is dull. 03:37:47 Could you toss that on a URL somewhere? 03:40:13 okay 03:40:28 Good - then I can just grab it and install it when I get home. 03:40:38 Then I'll probably update the egobot in the files archive ... 03:49:41 Well, off to home. 03:49:42 -!- GregorR-L has quit. 04:15:36 -!- CXI has quit (Connection timed out). 04:37:24 I note that you haven't tossed it on a URL somewhere :P 04:39:46 http://z3.ca/~lament/lambda_eso.zip 04:40:26 ready for consumption 04:43:05 It would be nice if it were under some license >_> 04:44:03 well 04:44:16 as the matter of fact, i was planning to sue you tomorrow for using it without permission. 04:45:41 Well, I have permission. 04:45:48 But it would still be nice if it was under a license. 04:45:52 Or if I had written permission :P 04:46:30 !reload 04:46:32 !help 04:46:36 help ps kill i eof flush show ls bf_txtgen 04:46:38 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lambda lazyk malbolge pbrain rail sadol sceql udage01 unlambda 04:46:47 !lambda #list 04:46:50 []Traceback (most recent call last): 04:47:13 Fixable, one sec. 04:47:32 ha, that's the only thing i don't check for exceptions on 04:47:36 naturally it's what broke :) 04:48:08 !reload 04:48:17 !lambda #list 04:48:19 Hmm, don't think I needed to reload there :P 04:48:21 [and c0 c1 c2 c256 c3 false i if iszero k not or plus pred s show succ true] 04:48:25 awesome 04:49:09 !lambda if (iszero (pred c1)) "zero" "not" 04:49:13 zero 04:50:02 that's about the extent of my actual lambda calculus programming capabilities. 04:50:10 lol 04:50:29 !lambda #show iszero 04:50:34 \n.(n \x,x,y.y \x,y.x) 04:51:04 errr 04:51:12 that's broken. 04:51:21 ? 04:51:30 #show is a bit broken 04:51:48 won't affect the actual running of programs 04:51:51 Well, only you can make it a bit fixed :P 04:52:00 \x,x,y is a rather strange list of arguments 04:52:03 hehe 04:52:34 anyway, to extend the definitions, you do something like 04:52:57 !lambda c4 = (succ c3); 04:53:16 !lambda c4 "*" i 04:53:20 **** 04:53:27 c4 is the 4th church numeral. 04:53:46 !lamda #list 04:54:00 Err 04:54:02 !lambda #list 04:54:05 [and c0 c1 c2 c256 c3 c4 false i if iszero k not or plus pred s show succ true] 04:54:07 And now we need somebody who actually can program in lambda calculus to create some useful definitions. 04:54:12 Hah 04:55:55 !lambda y = \f.(\x.f(x x)) (\x.f(x x)); 04:55:59 Parser error: Unbound variable: x 04:56:22 !lambda y = \f.((\x.f(x x)) (\x.f(x x))); 04:56:25 Parser error: Unbound variable: x 04:56:32 eh 04:57:32 !lambda y = \f.((\x.(f(x x))) (\x.(f(x x)))); 04:57:37 jeez 04:58:21 !glass {M[m(_o)O!"Glass is already extendable, and more fun :P"(_o)o.?]} 04:58:25 Glass is already extendable, and more fun :P 04:58:47 !glass {M[m(_e)(Emote)!"agrees!"(_e)e.?]} 04:58:51 ACTION agrees! 04:59:03 !lambda mult = \m,n,f.(n(m f)); 04:59:24 * lament hopes the following is gonna work 05:01:15 !lambda fact = \f,x.((iszero x) 1 (mult x (f pred x)))); 05:01:17 Tokenizer error: Tokenizer can't comprehend '1' 05:01:24 !lambda fact = \f,x.((iszero x) c1 (mult x (f pred x)))); 05:01:28 Parser error: 05:02:03 -!- Sgeo has quit. 05:02:21 clearly it doesnt :) 05:03:37 woohoo i just made Python segfault 05:04:10 Glad it's only a subproc :P 05:06:01 mm 05:06:10 well, mult works 05:16:06 the only thing worse than debugging Python is debugging Lambda Calculus. 05:16:20 Hah 05:16:30 Idonno, debugging Malbolge has to suck. 05:20:33 !lambda exp = \m,n.(n m); 05:20:59 some things are so pretty with church numerals 05:22:18 I have to take EgoBot down for a sec to update the archive (I need to clean the source, etc) 05:22:36 -!- EgoBot has quit ("*tinker tinker*"). 05:26:11 phew, i got it 05:28:17 I notice that every included interpreter that has a configure script was written by me :P 05:29:53 -!- EgoBot has joined. 05:33:27 !lambda fact = \f,x.((iszero x) c1 (mult x (f (pred x)))); 05:34:02 !lambda y = \f.(\x.(f x x) \x.(f x x)) 05:34:04 Parser error: list index out of range 05:34:23 !lambda y = \f.(\x.(f x x) \x.(f x x)); 05:34:31 i blame my brother and his drumset 05:34:43 (he stopped playing hours ago, but i think the effect is permanent) 05:34:48 !lambda fact = y fact; 05:35:02 !lambda fact c4 "*" i 05:35:06 ************************************************************************************************************************************************************************************************************************************************************************************************************************************ 05:35:18 hey, it ALMOST works 05:35:31 I see a lot of stars :P 05:35:49 Note that there's a maximum line length. 05:36:05 way too many stars. 05:36:11 Oh :P 05:36:14 !lambda fact c2 "*" i 05:36:19 ** 05:36:23 !lambda fact c3 "*" i 05:36:26 ************************ 05:36:30 wow 05:36:47 !lambda c3 "*" i 05:36:50 *** 05:37:04 i implemented some function 05:37:12 it's not factorial 05:37:37 it's some mystery function 05:37:54 Hah 05:38:04 anybody care figure out what it is? 05:38:04 So now you have to take the results and figure out what it's doing :P 05:38:09 data so far 05:38:31 f(2) = 2, f(3) = 25, f(4) = 325 05:38:57 (unless 325 is the line limit) 05:39:05 Which it is. 05:40:08 works on my machine... 05:40:34 lol 05:41:03 The BF interpreter in Glass works here, but not in EgoBot. 05:41:05 So you're not alone :P 05:41:28 !lambda fact = \f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) ; 05:41:49 !lambda fact c3 "*" i 05:41:52 **** 05:42:01 heh 05:42:22 (i just copied the result of #show fact from my machine) 05:42:38 !lambda fact c4 "*" i 05:42:41 ***** 05:42:57 oh, wrong fact 05:43:08 !lambda fact = \x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) 05:43:12 Parser error: list index out of range 05:43:27 !lambda fact = \x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \x.(\f,x.(\n.(n \x,x,y.y \x,y.x) x \f,x.(f x) \m,n,f.(n m f) x f \n,f,x.(n \g,h.(h g f) \u.x \u.u) x) x x) \n,f,x.(n \g,h.(h g f) \u.x \u.u) x); 05:43:34 i will soon have to kick myself for flooding 05:43:41 !lambda fact c4 "*" i 05:43:46 **** 05:44:04 Too bad four is a prime number :P 05:44:27 Oh, factorial, not factor :P 05:44:28 * lament sighs 05:45:14 !glass {M[m(_s)S!(_o)O!<34>(_s)(ns).?"{M[m(_s)S!(_o)O!<34>(_s)(ns).?""1(_o)o.?2(_o)o.? 05:45:15 1(_o)o.?2(_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]}"1(_o)o.?2(_o)o.?1(_o)o.?2 05:45:15 (_o)o.?2(_o)o.?0(_o)o.?2(_o)o.?0(_o)o.?]} 05:45:17 Crup. 05:45:21 OK 05:45:23 Sorry 'bout that flood >_> 05:49:34 okay, fixed 05:49:44 !lambda fact 4 "*" i 05:49:49 Tokenizer error: Tokenizer can't comprehend '4' 05:49:56 haha 05:50:00 !lambda fact c4 "*" i 05:50:02 ************************ 05:50:13 24 stars :) 05:50:31 or is it 25 05:50:42 no, 24 05:50:48 24 05:50:50 wc -c says so :P 05:50:56 awesome 05:51:42 !lambda c5 = succ c4; c6 = succ c5; c7 = succ c6; c8 = succ c7; c9 = succ c8; c10 = succ c9; fact c10 "*" i 05:52:03 that should crash it 05:53:56 although perhaps it will eat all your memory first. 05:54:47 !ps 05:54:53 1 lament: lambda 05:54:55 2 lament: ps 05:54:57 !kill 1 05:55:05 Process 1 killed. 05:55:16 !lambda c5 = succ c4; c6 = succ c5; c7 = succ c6; c8 = succ c7; c9 = succ c8; c10 = succ c9; 05:55:23 oh well 05:56:11 there're limitations to lambda calculus, even when the implementation is not written in python without any attempt to speed it up 05:56:14 !ps 06:02:13 did i kill egobot? 06:08:46 1 lament: lambda 06:10:11 2 lament: lambda 06:11:02 3 lament: ps 06:19:14 -!- GregorR-L has joined. 06:19:29 Wow. When FlightGear crashes, it REALLY crashes. 06:19:40 Takes the whole f***ing system down with it. 06:20:40 Also, I really need to upgrade my 200gig hard disk to ext3 :P 06:25:32 GregorR-L: i'm torturing egobot 06:25:38 how do i kill processes? 06:25:50 No, you weren't. 06:26:00 It would have been doing fine if flightgear wasn't crashing. 06:26:06 I rebooted my system, GregorR and EgoBot are ghosts. 06:26:11 Anyway, it's !kill 06:26:13 oh 06:26:29 !kill 1 is correct? 06:26:36 Yeah. 06:26:54 I should dig up my Appe Workgroup server and run EgoBot on that ^_^ 06:27:00 *Apple 06:38:12 -!- GregorR has quit (Read error: 110 (Connection timed out)). 06:40:41 -!- EgoBot has quit (Read error: 110 (Connection timed out)). 06:48:04 -!- GregorR has joined. 06:48:27 -!- GregorR-L has quit. 06:51:07 -!- EgoBot has joined. 07:14:43 !lambda #list 07:14:47 [and c0 c1 c2 c256 c3 c4 exp fact false fr i if iszero k mult not or plus pred s show succ true y] 07:15:27 !lambda c5 = succ c4; c6 = succ c5; c7 = succ c6; c8 = succ c7; c9 = succ c8; c10 = succ c9; 07:17:59 -!- nooga has joined. 07:18:02 hi 07:18:34 'ello 07:19:06 lament made a Lambda Calculus interpreter with caching, which is now in EgoBot :) 07:19:51 !lambda "hello world" 07:19:55 hello world 07:22:41 wog 07:22:43 woh 07:22:56 i don't even understand lambda claclulus :D 07:23:03 calculus 07:38:07 but i think it's cool 07:38:42 Agreed on both points ;) 07:48:46 * GregorR begins to write the Glee extension to Glass, which will allow you to access certain C functions. 07:49:33 wow 07:50:14 i've planned using ) function from SADOL to call functions from dlls 07:50:33 so that we'll be albe to port i.e. SDL for SADOL :> 07:51:21 dlopen is one of the first things I'll get to work for Glee ^_^ 07:51:41 Or try to anyway. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:13:18 hm 08:13:44 Yes, probably fail to ;) 08:13:59 Trying to generically call functions = no fun. 08:14:16 Maybe I can build a va_list ... 08:15:09 Hmm, strange. 08:15:51 My interface to open, read, write and close worked, but open apparently didn't set the mode, so the file was mode 0000 08:24:00 :] 08:24:06 e 08:24:12 i have a question 08:24:25 does egobot use fork() or some internal threading? 08:25:38 fork 08:25:52 Because the interpreters are external. 08:25:56 It indeed uses fork and exec. 08:26:59 The code is available on the files archive if you're interested. 08:28:24 i am 08:29:09 http://esoteric.voxelperfect.net/svn/esofiles/egobot/egobot-0.5.tar.bz2 08:34:49 mh mhm cool 08:58:32 OK :P 09:01:30 what? :D 09:01:57 Idonno, just wondering what "hm mhm cool" means :P 09:20:15 I've decided that it's impossible to write a generic interface to dlopen :( 09:20:29 (In Glass) 09:25:58 why? 09:55:31 -!- CXI has joined. 10:04:01 -!- lirth has quit ("you should feel more feel you should take more take"). 10:31:29 well 10:31:33 im bored 12:35:23 hm, where to get the list of functions which i can use in NPC script? 12:35:32 whoops :D 12:35:36 wrong window 12:55:32 -!- nooga has quit ("Lost terminal"). 14:30:33 -!- jix has joined. 14:45:51 -!- lirthy has joined. 18:59:47 -!- Keymaker has joined. 19:00:17 hello 19:55:36 Mmmmmmmmmmmmmoxie 8-D 19:55:53 :D :D :D :D 19:55:59 Oh, my sweet sweet Moxie, it's been too long. 19:56:28 hey, gregorr, i got an idea for your esobot, perhaps you could add trigger in it? 19:56:45 esolangs.org/wiki/Trigger 19:57:10 since you asked about language suggestions, was it yesterday.. ;) 20:00:47 !reload 20:00:48 !help 20:00:59 hm? :) 20:01:27 ... 20:01:28 ? 20:01:36 are those bot commands? 20:01:39 Yeah 20:01:44 ah 20:01:51 !help 20:01:55 No repeats. 20:01:58 !blah 20:02:00 Err 20:02:12 !help 20:02:15 help ps kill i eof flush show ls bf_txtgen 20:02:17 1l 2l adjust axo befunge bch bf{8,[16],32,64} glass glypho kipple lambda lazyk malbolge pbrain rail sadol sceql trigger udage01 unlambda 20:02:21 aah 20:02:21 That didn't come out as dramatic as I would have liked :P 20:02:26 hehe :D 20:02:29 it is there already! 20:02:30 I did !help too fast after !reload, so it didn't get it :P 20:02:31 cool 20:02:39 hehe 20:02:51 how do i test it? 20:03:00 !help trigger 20:03:05 To use an interpreter: Note: can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 20:03:27 ok 20:04:39 do i start it with "!trigger"? 20:04:43 or just "trigger" 20:04:48 !trigger 20:04:54 !trigger http://koti.mbnet.fi/yiap/trigger/hello.tri 20:04:59 do'h 20:05:17 And my network connection is sort of sucky right now, so http:// might or might not work >_< 20:05:21 should it work that way? 20:05:22 ah 20:05:33 It should work that way. 20:05:36 !trigger HHHeeelll lllooo wwwooorrrlllddd!!! 20:05:38 Hello world! 20:05:40 !trigger hhhiii gggrrreeegggooorrr 20:05:42 hi gregor 20:06:28 i just invented small silly esolang 20:06:35 gonna write the specs and interpreter later today 20:06:47 Write the interpreter in Glass! 8-D 20:07:09 i couldn't sorry.. glass is too obscure for me 20:07:20 i can't understand languages like that :) 20:07:29 !glass {M[m(_d)(Debug)!"BF""bf"(_d)(fc).?]} 20:07:33 (_a)A!(_o)O!(_s)S!(_t)$(_p)1=,(_pp)<0>=(_pc)(_pp)*(_p)*(_s)l.?(_a)(le).?=/(_pc)(_pcur)(_p)*(_pp)*(_s)i.?(_s)(sn).?=(_isc)(_pcur)*<43>(_a)e.?=/(_isc)(_isc)<0>=(_c)(mp)*mg.?=(_c)(_c)*<1>(_a)a.?=(mp)*(_c)*ms.?\(_isc)(_pcur)*<45>(_a)e.?=/(_isc)(_isc)<0>=(_c)(mp)*mg.?=(_c)(_c)*<1>(_a)s.?=(mp)*(_c)*ms.?\(_isc)(_pcur)*<60>(_a)e.?=/(_isc)(_isc)<0>=(mp)(mp)*<1>(_a)s.?=(_b)(mp)*<0>(_a)(lt 20:07:43 Ahhhhh, Brainfuck :) 20:08:19 that'd be better, but i think i'll just go with the python because the language needs to do stuff with strings 20:08:35 Glass is great for strings ;) 20:08:56 heh :) 20:09:02 i gotta go, be back later 20:09:05 -!- Keymaker has left (?). 21:14:54 -!- ihope has joined. 21:14:59 Hello everyone 21:15:44 -!- _meat` has quit (Read error: 113 (No route to host)). 21:15:52 I'm thinking of writing a "library" for Unlambda that would provide "better" I/O. 21:16:51 It would be pretty similar to Lazy K's I/O system. 21:17:49 But output gets tricky when there's no way to grab every character ever used in computing and put them all in the source file. 21:18:39 So just which characters should I use? The ASCII printables, or all of ASCII, or extended ASCII, or...? 21:29:36 -!- Sgeo has joined. 21:30:30 'Ello 22:07:13 Who invented SADOL? 22:15:47 I mean, what is his/her online name 22:15:48 ? 22:17:05 "SADOL (Sadistic And Damn Odd Language) is a functional esoteric programming language made by Martin 'nooga' Gasperowicz (User:nooga) in 2005." 22:17:18 * SimonRC should have RTFM. 22:18:21 his online hours aren't terribly convinient for me 22:34:57 omg omg omg!!!!11 llol 22:48:55 what? 22:49:21 :-D roflmao 22:50:06 (And you're supposed to reply "wat io dont get it/".) 22:56:01 -!- Keymaker has joined. 22:59:36 hi 23:04:17 hi 23:04:26 Hello 23:04:36 hello:) 23:06:27 finally got back in front of computer.. 23:20:08 -!- meat` has joined. 23:22:06 Anyone want to hear two vaguely heretical views? 23:22:18 well, go ahead 23:22:20 1) False is not Turing-complete. 23:22:35 2) SADOL isn't functional. 23:22:58 1) actually only applies if you don't mind the stack getting very large 23:23:04 but still 23:23:59 SADOL isn't functional? 23:24:09 yes 23:24:27 There are two interpretations of "functional"... 23:25:30 The first is that functions are first-class objects and you naturally write higher-order functions. This is exemplified by the paper _Why functional programming matters_. 23:28:18 The second is an idea that tends to be closely associated with the first, because languages which are functional in the first sense tend to be it also, which is being declarative. I.e. you use powerful expressions rather than loops and gotos, and variables are only assigned once. 23:28:42 things like Scheme and Haskell are both of these. 23:28:58 Being non-declarative is practiacally impossible in Haskell. 23:29:49 It *is* impossible, isn't it? 23:30:41 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:30:43 Oh, it's certainly _possible_ to write ugly non-declarative-like code in Haskell. 23:30:56 And downright easy in Scheme. 23:30:56 *cough* http://haskell.org/ghc/docs/latest/html/libraries/base/Data-IORef.html *cough* 23:31:35 It's even quite possible to write non-declarative-like code in Prolog, which is the first language I think of when someone says "declarative programming". 23:31:38 SADOL, however, does not have firs-class functions, and some of its most important data-structure operators: [] are clearly imperative. 23:32:24 FORTH-like languages can be functional in the first sense but not the second. 23:33:23 However, sensible declarative langs AFAIK (I don't know Prolog) need first-class functions for the most basic stuff such as fold and map. 23:57:29 Prolog doesn't have functions, only predicates (well, it's pure logic), but they are arguably close to being first-class: they are built of the same kind of data the program uses (lisp-like), you can assert/retract them to add them to the program, and call then with "call". 23:58:31 You can't really "return" them or "pass" them, though. (There's no variable passing either, just unification, but the uses are quite close to passing and returning values.) 23:59:48 A variable can be unified with a predicate, but you'd need to use assert to add it to the program before it can be used.