00:00:29 oerjan: what? 00:01:20 e^x 00:01:52 and what's d(e^x)? 00:02:12 might be e^x dx 00:03:16 and what's dx? 00:03:49 d(e^x)/e^x 00:04:06 Um, wait... 00:04:22 +- 00:04:33 d(e^x) = e^x dx, indeed... 00:05:11 oklopol: +-? 00:05:20 ihope: my keyboard fell. 00:05:48 actually, that's not all that likely... 00:05:57 those aren't next to each other 00:05:59 you're so tired that your keyboard knows more math than you? :) 00:06:06 hmm 00:06:10 well it was wrong :) 00:06:31 it isn't +- e^x dx 00:06:57 so... i owned my keyboard 00:06:59 _bad_ keyboard, no, um, what kind of rewards do keyboards get anyway? 00:07:08 hah! and you thought i was tired... proved you wrong 00:07:24 -!- lament has set topic: dx = d(e^x)/e^x. 00:07:27 err... i touch them? 00:08:02 yeww! 00:08:05 you pervert! 00:08:18 well... i kinda have to :| 00:08:33 hah, that's what they all say. 00:08:35 -!- lament has set topic: dx=d(e^x)/e^x | c=sqrt(e/m). 00:50:19 -!- kwertii has joined. 01:01:05 -!- Haikz has joined. 01:45:54 -!- Sgeo has joined. 02:30:20 -!- oerjan_ has joined. 02:31:07 -!- oerjan_ has quit (Client Quit). 02:31:16 -!- oerjan has quit (Remote closed the connection). 02:31:23 -!- oerjan has joined. 03:22:25 What we really need is a language where most syntax constructs can be defined easily. 03:22:29 ihope: lisp 03:28:31 What we need is a language without much syntax. (like Lisp) 03:29:26 * oerjan bets pikhq is thinking of a language with 3 letters in its name 03:32:13 That's the other nice one. 03:32:58 -!- oerjan has quit ("Good night"). 03:33:08 * pikhq can't help but think that either (+ 2 2) or + 2 2 is much nicer than defining some extra syntax for a *function*. 03:48:23 -!- revilodraw has joined. 03:49:04 -!- revilodraw has left (?). 04:27:04 -!- GregorR-L has joined. 04:52:48 -!- GreaseMonkey has joined. 05:16:44 -!- RodgerTheGreat has quit. 05:27:10 -!- nwf has joined. 05:28:36 F=-GMm/WOLVES! 05:51:22 -!- Figs has joined. 05:51:30 hey oklopol 05:51:33 you around? :P 05:52:33 -!- nwf has quit ("Lost terminal"). 06:03:08 now am 06:03:14 though back to sleep 06:03:16 hi 06:03:37 did you get a chance to play through the rest? 06:03:42 after 30 hours awake, 6 hours of sleep just doesn't seem to be enough 06:03:47 rofl :P 06:03:50 yeah 06:04:15 I tend to have about 18 hours up, 6 hours down 06:04:38 i haven't played after that, i was at a friend's :\ i'll try to play once i wake up or something, night now --> 06:04:42 of those 18 hours or so up, usually at least 10 are online 06:04:50 ok 06:04:51 cya 06:04:52 -!- Figs has left (?). 06:06:15 -!- Sgeo has quit ("Ex-Chat"). 06:27:09 -!- goban has joined. 06:32:43 -!- goban has quit (Read error: 104 (Connection reset by peer)). 06:36:10 -!- GregorR-L has quit (Read error: 110 (Connection timed out)). 06:42:38 -!- Arrogant has joined. 07:40:59 leaving now, cya 07:41:04 -!- GreaseMonkey has quit (Read error: 104 (Connection reset by peer)). 07:43:54 -!- Arrogant has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:51:16 -!- Sukoshi has joined. 09:06:38 -!- jix has joined. 09:13:46 -!- kwertii has quit. 11:08:02 -!- ehird` has joined. 11:11:40 -!- ehird` has set topic: fib<-{=0=>0->=1=>1->$(-1)+$(-2)}. 11:11:49 since, apparently, this is #change_the_topic_to_something_random 11:30:05 That's good to know. 11:32:43 -!- Haikz has set topic: fib<-{=0=>0->=1=>1->$(-1)+$(-2)} // Happy birthday, Maria Filatova! Born in 1961, Maria is a retired soviet gymnast of great significance.. 11:43:49 -!- ehird` has set topic: hello world. 12:05:19 -!- jix has quit (Nick collision from services.). 12:05:33 -!- jix has joined. 12:06:15 hmmmm .. lots of infinite loops should be easy to detect in the lambda calculus, no? 12:06:33 store a list of each stage of reduction, and if any frame repeats, it's an infinite loop so error out 12:06:47 doesn't solve the halting problem of course but it should catch lots of things 12:11:40 i had this dream my friend's mind was stuck in my brain and we took turns controlling my body 12:12:43 ehird`: yes, if same state occurs twice, it's an infinite loop... that's true for any language 12:13:01 oklokok, so why don't more languages error out on it? :) 12:13:17 an unconditional infinite loop without any I/O is useless 12:13:27 and there are plenty of io-less languages. 12:13:33 because lambda calculus is the only one where it's hard to make a program that has a complex state 12:13:45 not the only one 12:13:53 but onyl onish. 12:13:55 *only 12:14:42 sk-calculus# 12:14:52 you can just as well do that in brainfuck, every loop just stores a list of all states it's been in at the beginning of that loop 12:15:15 that will most likely be more efficient in finding loops 12:15:39 i mean infinite loops 12:16:14 so why don't more languages do it i wonder. 12:16:19 because in lambda calculus, if 10 numbers of 5 digits each are passed around, that'd be depending on the representation 50 or something bytes 12:16:22 -!- blahbot` has joined. 12:16:25 true 12:16:28 whereas in brainfuck that'd be 5, always. 12:16:33 well 12:16:36 well, ram is plentiful 12:16:43 maybe the states could be gc'd 12:16:46 they don't do it since it sounds so easy to do in ski 12:17:16 with ski, even though people know it's tc, they often don't actually think of it as such 12:17:25 indeed 12:17:26 because 12:17:36 you need very complex stuff to actually utilize it's tcness 12:17:46 yeah, i'd like to see a turing machine in SKI 12:18:23 oerjan's done something pretty sick in it... may have been a ski interpreter in ski 12:18:26 don't remember 12:19:24 http://home.nvg.org/~oerjan/esoteric/interpreter.unl 12:21:46 actually, unlambda is most likely actually one of the hardest languages to store state for, since simple rules usually lead to much bigger memory hogging 12:22:05 a high-level language would be much better at that 12:24:33 it's just if you try whether a language finds infinite loops, in c you do int i=1;while(i){i++;if(i==0)i=1;} or something creative "to bluff the infinite loop detector" 12:24:56 in unlambda you'll do siisii and hail at the clever bitch 12:25:05 wow it understood that's a loop 12:25:26 omg to me that's just a random bunch of letters and the interpreter knew it was an infinite loop 12:25:41 i'm gonna do one eating now. 12:29:23 ehird`: what's gc'd? 12:29:29 garbage collected 12:29:32 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 12:29:34 states could be hashed, that's always a possibility 12:29:37 :O 12:29:54 -!- ehird` has joined. 12:30:00 states could be hashed, that's always a possibility 12:30:10 but what do you mean garbage collected? 12:31:07 i know what the term means of course but what's it gonna help :) 12:32:33 it seems my parents implemented me some macaroni or something yesterday 12:32:37 parsing lambda calculus by hand isn't easy 12:32:40 cool, i can actually eat something 12:32:43 stupid "expr expr" grammars 12:33:12 :( 12:33:41 it isn't easy because you have to handle large blocks at once as soon as you actually *do* something... but that's true of any tc language, once again :) 12:34:23 oklokok, well, for one thing 12:34:33 once you reduce a certain part of an expression you can trash all the hashes for it 12:34:44 every time you fully reduce anything you can get rid of the state history 12:35:01 yes, that is the exact same thing as having [] 12:35:04 ... 12:35:11 and, indeed, hashed states - but if a state isn't used for a certain amount of reductions, you can trash it 12:35:17 yes, that is the exact same thing as having []'s in brainfuck have their own state lists 12:35:42 hmm 12:36:08 you can't really trash anything, *any* sequence might occur again, later 12:36:15 since a lambda program has nothing but state 12:36:25 i mean, it has just one kind of state 12:36:42 that is a memory state, and can be completely changed 12:37:06 whereas in brainfuck you have two states, one of which actually does some discarding with no return possibility 12:37:11 the program state 12:37:24 memory state once again can't be gc'd in brainfuck either 12:37:26 -!- puzzlet_ has joined. 12:37:49 you can't really trash anything, *any* sequence might occur again, later <-- yes but you dont want to keep something that only appeared 10 reductions ago 12:38:02 why? 12:38:06 memory usage 12:38:26 what if the next s-combinator accurately replicates whatever was there 10 reductions ago? 12:38:49 then that same state will be discarded again if discarding rules are deterministic 12:38:57 well, sure 12:39:19 i only mean ones from previous reductions 12:48:58 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 12:49:02 parsing left-recursive grammars is evil 12:51:12 well, math is left-recursive 12:51:26 any left-associative operators require left-recursion 12:51:50 well okay 12:51:56 not really 12:52:22 other way around 12:52:47 lambda-calculus :) 12:53:03 whut about it? 12:53:04 i'm parsing \x.\y.\z.xyz as x(yz) not (xy)z, right now 12:53:09 okay 12:53:11 stupid parsing. 12:53:47 well... why don't you make your notation tell how to parse it... 12:54:02 how'd you do (xy)z in that parsing? 12:54:10 (xy)z i guess 12:54:51 oklokok, because i'm hand-coding this. 12:54:59 also, 12:55:05 \xy.xy is being parsed as (\xy.x)y 12:55:09 which is ANNOYING MAXIMUM 12:55:12 *MAXIMUS 12:56:23 how's the problem left-recursion= 12:56:25 ? 12:57:13 use unlambda notation and you can have my ololobot code :) 12:58:48 well yeah, that's the thing i don't want to use unlambda notation 12:59:43 (\nfx.f((nf)x))(\fx.fx) looks nicer than `^n^f^x`$f``$n$f$x^f^x`$f$x 13:00:23 anyway, you take the first, and give it as arguments everything until the end. 13:00:35 and ta-da, both your things will work 13:00:53 ( will be recursed into, and parsed so that ) is the end 13:01:04 the upmost level has as ) 13:01:11 well explained, oklo 13:01:12 ... 13:01:16 now, really, food -> 13:15:34 (14:37:53) (ehird`) well, sure 13:15:35 (14:38:14) (ehird`) i only mean ones from previous reductions 13:15:41 yes? 13:15:41 what did you mean by this, actually, i know realize i didn't understand 13:15:59 once finishing a reduction, trash its states 13:16:03 free their memory 13:16:16 every step in the program is a reduction 13:16:30 so basically you would just store 10 last states? 13:16:37 no 13:16:58 once you've done lots of reductions and a particular sub-expression is irreducable, you can forget the states for that subexpression 13:18:57 you mean, if a part in the state keeps unchanged, you can stop storing the whole state for that part separately, and instead just have a way to point to where that part was last in the program state? 13:19:29 s/ if a part in the state /if a part of the whole program state 13:20:55 -!- Baughn has quit (anthony.freenode.net irc.freenode.net). 13:20:55 -!- tokigun_ has quit (anthony.freenode.net irc.freenode.net). 13:22:41 -!- Baughn has joined. 13:22:41 -!- tokigun_ has joined. 13:24:37 * ehird` wonders why () don't work 13:24:48 (x) -> (apply "x" nil) 13:25:04 (\x.x) -> Unmatched ( 13:26:40 ahhhh i seee 13:26:44 hm 13:26:45 no i don't 13:39:04 -!- oerjan has joined. 13:42:17 hi örjan 13:42:34 hi oklopol 13:42:50 (i'd actually used your name if i were able to type that letter) 13:43:05 Ørjan 13:43:11 right? 13:43:36 i actually couldn't see if you were typing my name since i am not UTF8-clean 13:44:01 you dirty boy. 14:03:03 * ehird` wonders why lambda calculus defies simple parsing 14:04:42 almost every programming language does, then. 14:06:28 well most languages do defy hand-parsing 14:06:37 especially goddamn left-associative languages! 14:07:19 actually it _is_ easy. 14:08:25 just keep an accumulating parameter 14:08:30 he he he 14:08:43 i've been trying to parse LC that only consists of single-character names, \x(... and more).y and (x) 14:08:46 and xy 14:08:49 it's taking ages. 14:09:19 not even application? 14:10:27 ehird`: doesn't sound hard to do :| 14:10:38 oerjan, xy is application.. 14:10:43 oerjan: ab == application 14:10:44 oklopol, sure - just tedious 14:10:46 ueah 14:10:53 i don't believe it is 14:11:03 i think it's < 15 lines in python 14:11:22 okay, <20 14:11:25 i'm not sure 14:12:21 ~320 lines of ruby right now 14:12:29 O_O 14:12:44 something is very wrong there 14:13:17 hehe 14:13:19 i was about to say < 5 lines in Haskell :) 14:13:25 ruby is no ordinary language xD 14:13:35 oh 14:13:40 ~320, i though -320 14:13:41 :D 14:14:07 err, wait 14:14:09 not 320 lines 14:14:10 20 lines 14:14:12 XD 14:14:16 ah 14:14:25 haha, 320 lines would be insane! 14:14:31 -320 would've been more insane. 14:14:42 just make self-modifying code that removes characters 14:15:04 have the parser just take code from other bits of the program and remove characters (320 of them) until you get a parser. 14:15:07 "yes, lambda calculus is so easy to parse it actually shaves lines off your code" 14:21:19 OK rewrite time. 14:21:24 taking a stack-based approach. 14:24:00 blah, i wish all i ever had to parse was s-expressions 14:24:01 those are easy 14:31:11 parsing is fun :) 14:32:10 i highly doubt an LC parser could fit into 20 lines of python anyway 14:32:49 i'll try later 14:33:57 identifiers being anything but a space, a tab, or a newline, lambdas being \ followed by many identifiers, followed by a period, followed by an expression, and application being implicit and left-associative, but with parens supported (e.g. (\n f x. f ((n f) x))(\f x. f (f x))) 14:34:00 honestly looks like more than 20 lines to me 14:35:37 we'll see after these two episodes i'm still gonna watch 14:41:01 -!- oerjan has quit ("leaving"). 14:45:17 -!- DaFive has joined. 14:45:26 hi2all 14:46:20 -!- RodgerTheGreat has joined. 14:47:23 hi guys 14:48:12 ðø 14:48:13 hi 14:50:17 is there anybody from russia? 14:52:10 -!- DaFive has left (?). 14:54:27 -!- kwertii has joined. 15:10:55 -!- kwertii has quit (No route to host). 15:11:34 in the lambda calculus, is it possible to create a function (G f) such that (N1 (G f) N2) is (f N1 N2), assuming N1 and N2 are church numerals? 15:12:17 hmm 15:12:34 how do you represent church numerals? 15:12:48 \f\f\f\f\f\fx? 15:13:07 err 15:13:09 i mean 15:13:16 \fx.fffffx 15:14:07 no 15:14:26 Church numeral N is \f x. (f^N)x 15:14:30 then how? 15:14:32 so 3 is \f x. f (f (f x)) 15:14:36 and 0 is \f x. x 15:14:46 and 5 is \f x. f (f (f (f (f x)))) 15:15:00 so exactly what i said 15:15:07 ah 15:15:08 no 15:15:20 \fx.fffx is \f x. ((f f) f) x 15:15:23 you need the parens 15:15:25 oh 15:15:37 left-associative and all that 15:15:50 i'm parsing \x.\y.\z.xyz as x(yz) not (xy)z, right now 15:15:56 i though you still were 15:16:02 i was describing a bug 15:16:13 yeah, indeed you were 15:16:19 besides, i'm suspending my parsing efforts until I see yours because my efforts are going overblown and insane 15:16:27 oh 15:16:34 then i better do it someday xD 15:16:39 hmm, i'll do it now 15:17:50 :P 15:18:26 grammar: an identifier is any string but cannot contain a space, tab, newline, (, ), or \. 15:18:53 oh 15:18:53 an expression can be \(1 or more identifiers). expr, \x y.z is \x.\y.z 15:19:04 so \fx.fffx has other problems too., 15:19:06 \ x y.z is equal to \x y. z (whitespace doesn't really matter) 15:19:09 since fx=fx. 15:19:21 ws is for tokenizing, that is. 15:19:21 a b c d is ((a b) c) d (left-associative) 15:19:27 oklopol, yeah 15:19:31 it should be \f x. f f f x 15:19:37 or \ f x. f f f x 15:19:42 or \f x.f f f x 15:20:07 or \f x.((f(f))f)x 15:20:11 or any sort of combination like that 15:21:36 also (expr) is an expr. 15:21:47 whitespace, as you can see, is ignored apart from to seperate tokens 15:36:54 :P 15:38:10 ehird`: am i allowed to use regexes? :) 15:38:20 possibly ;) 15:38:26 sure 15:38:36 i'm having a hard time keeping this under 20 when a single identifier match is like 6 lines... 15:41:45 hehe, i'll give you... hmm... 50 :P 15:47:40 hmm 15:47:44 gimme something to parse 15:48:04 i think i have it, 21 lines, no densing sone yet 15:48:07 *done 15:48:23 (\n f x. f (n f x)) \f x. f (f (f x)) 15:48:27 and: 15:48:45 (\ n f x.(f((n f)x))\f x.f (f(f x)) 15:48:48 are equivilent. 15:49:02 \x y. x y z is (\x y. x y z), not (\x y. x y)z 15:49:13 (i.e. lambda abstractions stretch as far right as possible) 15:49:29 a b c d e is equivilent to (((a b) c) d) e 15:49:49 if 21 lines parses all that 15:49:51 i'm impressed. 15:50:47 also: 15:51:03 \x.x\y.y is (\x. x (\y. y)) 15:51:19 not (\x. x)(\y. y) 15:51:24 (because of the lambda-stretches-right rule) 15:53:31 and, of course: 15:53:45 (\x y z. E) is equal to (\x. \y. \z. E) 15:55:00 kay, other keyboard stopped working fully 15:55:06 *entirely 15:55:07 heh 15:55:10 "TOO MUCH PARSING!" 15:55:23 i love it how pyidle will just crash completely is i do an infinite loop 15:56:04 me no likey idle 16:06:10 i'll restart, i realized at some poing i was actually doing a b c = a (b c)... 16:06:36 my memory is pretty selective. 16:06:47 =p 16:06:56 it's not easy to parse left-associative grammars.. 16:11:09 especially considering, if you're parsing recursive-descent style, it's impossible 16:11:21 well you could still try i guess, making a mashup of styles :) 16:12:48 okay 16:13:00 every time i close the source and reopen it, i have to remake all tabs 16:19:53 ehird`: this parses right everything except expressions with lambda creation 16:20:03 oklokok, example? 16:20:06 function assignation works perfectly 16:20:11 your example was one 16:20:21 lambdas work if they aren't used 16:20:22 :) 16:20:25 example where it fails + works 16:20:33 (\ n f x.(f((n f)x))\f x.f (f(f x)) 16:20:37 your example was one 16:21:12 which example 16:21:17 okay, i'm not sure it works... 16:21:22 plus what is (\ n f x.(f((n f)x))\f x.f (f(f x)) parsed equivalent to? 16:21:22 i'll check 16:21:27 ehird`: that example. 16:21:34 that was your example 16:21:42 ok 16:21:42 (\ n f x.(f((n f)x))\f x.f (f(f x)) 16:21:45 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this one 16:21:47 so what is (\ n f x.(f((n f)x))\f x.f (f(f x)) parsed as? 16:21:48 yeah :) 16:21:59 i.e. what is an expression that parses to the same thing? 16:22:04 just the first lambda, the assignation works 16:22:08 *works not 16:22:13 right 16:22:19 what about ((\ n f x.(f((n f)x))(\f x.f (f(f x)))) 16:22:21 hmm 16:22:31 wait wait 16:22:38 anyway my point is that i have to leave soon 16:22:41 ok 16:22:42 :| 16:22:51 the problem might be, by the way, that you aren't recognizing an expression after an expression 16:22:58 i'll finish this, but can't promise it'll happen now 16:23:04 i.e. after parsing an expression, you're not looking ahead for another 16:23:08 ehird`: i know my problem 16:23:19 it's not a bug, it's that i'm trying to be terse :) 16:23:43 forget about being terse then :P 16:24:10 if you manage to parse it in any sort of 1/4th of kind-of-sanity, i'm impressed 16:24:15 "g s (e b f (y h rt) d x) (s w) fwe" 16:24:16 becomes 16:24:16 [[[['g', 's'], [[[[['e', 'b'], 'f'], [['y', 'h'], 'rt']], 'd'], 'x']], ['s', 'w']], 'fwe'] 16:24:34 this is trivial to archieve in ~10 lines 16:24:36 you really want :apply and :lambda prefixes 16:24:43 it's the lambdas that are a problem 16:24:44 "x y" -> ["apply", "x", "y"] 16:24:48 ehird`: huh? 16:24:56 "x y z" -> ["apply", ["apply", "x", "y"], "z"] 16:25:03 no god 8| 16:25:10 it's simpler than just arrays 16:25:18 no it isn't 16:25:31 "\x y. x y" -> ["lambda", "x", ["lambda", "y", ["apply", "x", "y"]]] 16:25:35 i'll just have '^' be a special macro for lambdas 16:25:41 ouch. 16:25:45 that's ugly 16:25:50 i'm not gonna do that, i want a readable output 16:25:54 i mean, not your thing 16:26:18 if you know any lisp, you'll find mine good. 16:26:28 i know lots of lisp 16:26:37 then you do find it good. 16:26:39 but lisp is not the lambda-calculus 16:26:59 anyway, what's wrong with a lisp-like way to do that? 16:27:13 macros are not LC 16:27:17 why use "apply" and lose the ability to actually look at it? 16:27:48 i can add the string there in 5 seconds, but it'll only make it ugly, i'm not gonna 16:27:52 because parse trees are not for looking at, they're for the easiest machine mangling 16:27:54 anyway 16:28:06 my form is easy for a machine to parse and allows "^" as an identifier 16:28:09 stop complaining about details, choosing a representation isn't programming :) 16:28:23 yes it is :) 16:28:39 that is as easy to machine-mangle as having "lambda" ther 16:28:40 *there 16:28:45 except mine is faster, of course 16:29:35 not really 16:30:04 it isn't, but it's not slower either 16:30:09 and just as easy to actually run 16:31:32 but restricts identifiers 16:31:37 my spec didn't disallow ^ 16:32:52 that can be made into a typecheck 16:33:00 and it won't be disallowed 16:33:21 this is growing complex :) 16:33:31 really, that's not something you care about when implementing this, if there's any sense in the implementation, you can do it in 5 secs afterwards. 16:33:35 ehird`: no. 16:33:54 :) 16:35:03 okay 16:35:07 i did what you wanted 16:35:08 [['apply', [[[[['\\', 'n'], 'f'], 'x'], '.'], 'f'], [['n', 'f'], 'x']], ['lambda', ['f', 'x'], ['apply', 'f', ['apply', 'f', ['f', 'x']]]]] 16:35:08 [['apply', [[[[['\\', 'n'], 'f'], 'x'], '.'], 'f'], [['n', 'f'], 'x']], ['lambda', ['f', 'x'], ['apply', 'f', ['apply', 'f', ['f', 'x']]]]] 16:35:10 hmm 16:35:17 anyway, is that right? :) 16:35:20 errr 16:35:22 can't be 16:35:26 sorry then 16:35:33 the lambda is wrong 16:35:37 like terribly wrong 16:35:45 oh my god it's wrong 16:39:52 that's... really wrong :P 16:40:25 i guess i'll parse unlambda-style for now 16:40:45 \f x. f x -> ^f^x$fx 16:40:48 ^ = lambda, $ = apply 16:44:34 %reload 16:44:36 Reloaded. 16:44:47 %reload 16:44:48 Reloaded. 16:44:52 %reduce ^f^x$fx 16:44:53 -!- blahbot` has quit (Remote closed the connection). 16:46:09 -!- blahbot` has joined. 16:46:13 %reduce ^f^x$fx 16:46:13 -!- blahbot` has quit (Remote closed the connection). 16:46:14 works 16:46:21 oklokok, !! example parsetree? 16:46:26 expr="(\\n f x.f(n f x)) \\f x. f (f (f x))" 16:46:26 ['apply', ['lambda', ['n', 'f', 'x'], ['apply', 'f', ['apply', ['apply', 'n', 'f'], 'x']]], ['lambda', ['f', 'x'], ['apply', 'f', ['apply', 'f', ['apply', 'f', 'x']]]]] 16:46:31 is that correct? 16:46:59 let me check 16:47:05 seems correct to me 16:47:17 unless you want currying, which you most likely want :) 16:47:17 ['lambda', ['n', 'f', 'x' is not right 16:47:26 it should be ["lambda", "n", ["lambda", "f"... 16:47:34 unless you want currying, which you most likely want :) 16:47:38 ah :) 16:47:44 well apart from currying, yep, it's completely correct 16:47:50 what about \x.x\y.y - how does that parse? 16:47:56 hmm 16:47:57 we'll see 16:48:27 -!- blahbot` has joined. 16:48:29 ['lambda', ['x'], ['apply', 'x', ['lambda', ['y'], 'y']]] 16:48:36 amazing 16:48:38 can i see the code? 16:48:44 %reduce ^f^x$fx 16:48:48 %reduce ^f^x$fx 16:48:53 it's long, didn't have the time to smallify it 16:49:00 but it can be reduced into 30 or so 16:49:03 45 lines now 16:49:05 cool 16:49:13 currying isn't too hard really 16:49:16 just a few lines 16:50:51 * ehird` wants to see the code =) 16:50:58 http://www.vjn.fi/pb/p424155361.txt 16:51:02 you also need otools 16:51:33 it's not pretty, most would say, but it's pretty good code for the most part 16:52:23 otools? 16:52:31 http://www.vjn.fi/pb/p144223341.txt 16:52:38 it just uses the Itr class 16:52:51 you don't need parse_ski there do you? 16:52:51 you can use StringIO as well, i've just extended it a bit 16:52:56 err 16:52:57 huh? 16:53:12 you need to the latter file, and make it otools.py 16:53:13 parse_ski. unless that has nothing to do with SKI calculus 16:53:23 in which case it's badly named =) 16:53:31 parse_ski parses ski. 16:53:41 otools is used in parse_ski 16:54:14 but ... you're not parsing ski 16:54:17 you're parsing lc 16:54:39 %reduce ^xx 16:54:39 -!- blahbot` has quit (Remote closed the connection). 16:55:56 -!- blahbot` has joined. 16:55:57 %reduce ^f^x$fx 16:55:57 [[:lambda, "f", ["x$fx", [:lambda, "", []]]]] 16:56:03 ehm o_O 16:57:00 You call that reduction? 16:57:30 no 16:57:33 %reduce is currently %parse ;P 16:57:34 ["is currently %parse ;P"] 16:57:37 heh. 16:57:43 I see. 16:57:49 Is $ apply? 16:57:53 yes 16:57:58 ^xy = \x.y 16:58:02 $xy = xy 16:58:04 Why isn't ` apply? :-P 16:58:10 because ^f^x`fx looks ugly 16:58:19 Why isn't \ lambda? :-P 16:58:24 it is 16:58:30 Why am I saying :-P so much? :-P 16:58:30 because \f\x$fx looks ugly 16:58:35 hah 16:58:38 Why am I saying :-P so much? :-P 16:58:38 because \f\x$fx looks ugly 16:58:40 ehird`: i'm parcing lc? 16:58:42 Does \f\x`fx look ugly? 16:58:45 that's that mean? 16:58:50 oklokok, you're parsing lambda calculus 16:58:54 not ski calculus 16:58:56 so parse_ski? 16:59:01 ah 16:59:05 well, sorry 16:59:11 i don't care about naming that much. 16:59:24 Well, I think I've figured out a nice way to allow syntax to be added to a language. 16:59:27 anyway, i didn't make that all that usable for people who don't know what it does 16:59:31 since i was in a hurry 16:59:43 ihope, How? 16:59:47 Take GHC's implicit parameter extension and run away with it. 17:00:04 * ehird` 's solution: tokenize the whole program at load-time, but only parse as needed 17:00:06 Or something like that, anyway. 17:00:10 ehird`: parse_ski parses lambda calculus, you rename it if you feel like it, i gotta go now 17:00:12 add some syntax to define syntax based on tokens, voila 17:00:15 e.g. 17:00:39 ehird`: was my code of any help? 17:00:40 17:00:46 oklokok, yes thanks =) 17:00:50 i gotta leave, comment it somehow 17:00:50 okay 17:00:51 Use \ to denote a pattern, and have free variables just be part of the type. 17:00:51 good 17:00:58 bye all! 17:01:19 x :: (x :: a) => a 17:01:40 i think my APL-alike language counts as esoteric 17:01:51 fib<-{=0=>0->=1=>1->$(-1)+$(-2)} 17:02:03 \x :: Pat a [x :: a] 17:02:33 Or something close to those. 17:03:01 * ihope ponders 17:03:15 that parses as fib <- { ((= 0) => 0) -> ((((= 1) => 1) -> ($ (- 1) + $ (- 2)lots of closing parens 17:03:30 except you can define your own postfix, prefix and binary operators too. 17:03:51 and = 1, - 1, etc work because binary operators implicitly have _ on the left (_ is the argument - you can also name arguments) 17:04:05 Make it {x : a} instead of (x :: a) and {x : a} instead of [x :: a]. 17:04:13 x <- y is variables 17:04:18 {x} is lambdas 17:04:25 => is pairs 17:04:32 x=>y is the pair like lispish (x . y) 17:04:38 -> is if 17:04:45 (x => y) -> z 17:04:49 "if x, then y, else z" 17:04:58 it delays the evaluation of x (i.e. the left of the pair passed to it) 17:05:05 and is right-associative so: 17:05:13 x => y -> a => b -> c 17:05:19 is "if x, then y, else if a, then b, else c." 17:05:36 $ is the current function (used for recursion) 17:06:07 so, fib<-{=0=>0->=1=>1->$(-1)+$(-2)} is "if argument is 0, then 0, else if argument is 1, then 1, else current function (argument minus one) plus current function (argument minus 2)" 17:06:08 aka fib 17:06:16 -!- sebbu has joined. 17:06:20 parse THAT! 17:06:29 (harder: evaluate THAT!) 17:06:38 %reduce ^xx 17:06:39 [[:lambda, "xx", []]] 17:06:48 %reduce ^x x 17:06:48 [[:lambda, "x x", []]] 17:07:06 %reload 17:07:06 Reloaded. 17:07:07 %reduce ^x x 17:07:08 -!- blahbot` has quit (Remote closed the connection). 17:07:44 -!- blahbot` has joined. 17:07:45 %reduce ^x x 17:07:58 (->) :: Pat a s -> (s => b) -> a -> b 17:08:32 that doesn't allow for definition of my own operator working like that 17:08:40 i.e. lazily forcing evaluation of a part of a pattern match 17:08:53 that kind of function/operator-interaction is insane 17:09:06 -> tells => not to evaluate its left when => knows nothing about -> 17:09:31 This is sort of my own thing, here. 17:09:47 well don't blame me for seeing -> and => and jumping to conclusions :P 17:09:55 %reduce ^x x 17:09:56 :-) 17:10:06 especially (s => b) -> a 17:10:10 :P 17:10:16 Also, I seem to be using -> for multiple things. 17:10:22 %reload 17:10:22 Reloaded. 17:10:24 %reduce ^x x 17:10:24 [[:lambda, "x", ["x "]]] 17:10:27 HURAY 17:10:42 And I'm capitalizing inconsistently. 17:10:43 %reduce ^x$x 17:10:44 [[:lambda, "x$x", []]] 17:10:46 %reduce ^x$xy 17:10:46 [[:lambda, "x$xy", []]] 17:10:48 grr 17:10:53 %reload 17:10:54 Reloaded. 17:10:55 %reduce ^x$xy 17:10:56 [[:lambda, "x", ["xy$"]]] 17:10:57 %reduce ^x$x y 17:10:58 If (->) is defined appropriately, then " 17:11:00 [[:lambda, "x", ["x y$"]]] 17:11:00 Er. 17:11:30 If (->) is defined appropriately, then "\x -> x + 3" becomes an expression rather than special syntax. 17:11:35 %reload 17:11:35 Reloaded. 17:11:41 ihope, clever 17:12:03 but not as clever as... THE ARBITARY PARSERORNATOR 17:12:05 %reduce ^x$x y 17:12:05 [[:lambda, 120, [[:apply, ["x", " ", "y"], []]]]] 17:12:07 %reduce ^x$xy 17:12:07 Case/of expressions can also be defined. 17:12:07 [[:lambda, 120, [[:apply, ["x", "y"], []]]]] 17:12:13 %reload 17:12:13 Reloaded. 17:12:14 %reduce ^x$xy 17:12:15 [[:lambda, "x", [[:apply, ["x", "y"], []]]]] 17:12:20 THE ARBITRARY PARSERORNATOR? 17:12:32 yes 17:12:38 Matrioshkaness? 17:12:51 the program is tokenized at the start, but it only parses as little as it can at a time 17:12:51 Allow new syntax to be defined? 17:12:53 yes. 17:13:02 and you can modify the parser on the fly, using special syntax 17:13:09 (You can also change that special syntax it being part of the parser and all) 17:13:14 Fun. 17:13:25 Again, reminds me of a... language? 17:13:29 called lisp? heh. 17:13:39 No, not that. 17:13:39 Combine that with a self-hosted interpreter/compiler, and you have a system that loops inside itself performing major internal surgery on itself 17:14:14 I think I had a language once called [\] 17:14:25 (Cool.) 17:15:07 [ adds syntax, \ escapes, ] removes syntax. 17:15:21 heh 17:15:24 I think /// can be called a much better version of [\] 17:15:42 I don't remember how syntax-adding worked... 17:15:47 i'm interested in a blend between C#, Groovy, Lisp, Python, Perl, and my syntax-generator 17:15:51 I think it could be very interesting. 17:16:03 (It looks, mentally, less horrific than it sounds) 17:16:07 %reduce ^x$xy 17:16:07 [[:lambda, "x", [[:apply, ["x", "y"], []]]]] 17:16:08 ehird`: sounds like perl. 17:16:17 lament, Perl is a blend between perl and something else? 17:16:20 Recursive blends! :) 17:17:03 %reload 17:17:03 Reloaded. 17:17:04 %reduce ^x$xy 17:17:05 [:lambda, "x", [:apply, "x", "y"]] 17:17:07 hooray 17:17:13 %reduce ^f^x$f$fx 17:17:14 [:lambda, "f", [:lambda, "x", [:apply, "f", [:apply, "f", "x"]]]] 17:17:28 %reduce $^x$xx^x$xx 17:17:29 [:apply, [:lambda, "x", [:apply, "x", "x"]], [:lambda, "x", [:apply, "x", "x"]]] 17:18:01 %reduce ^g$^x$g$xx^x$g$xx 17:18:01 [:lambda, "g", [:apply, [:lambda, "x", [:apply, "g", [:apply, "x", "x"]]], [:lambda, "x", [:apply, "g", [:apply, "x", "x"]]]]] 17:18:38 %reduce $^n^f^x$f$$nfx^fx$f$f$fx 17:18:39 [:apply, [:lambda, "n", [:lambda, "f", [:lambda, "x", [:apply, "f", [:apply, [:apply, "n", "f"], "x"]]]]], [:lambda, "f", "x"]] 17:18:41 cool 17:18:55 maybe i should implement that blend someday 17:22:57 -!- oklokok has quit (Connection timed out). 17:26:00 %reload 17:26:01 Reloaded. 17:26:08 %reduce ^f^x$f$fx 17:28:03 %reload 17:28:03 Reloaded. 17:28:04 %reduce ^f^x$f$fx 17:28:28 %ps 17:28:28 0. ps 17:28:30 %reload 17:28:31 Reloaded. 17:28:41 %reduce ^f^x$f$fx 17:28:55 %quit 17:28:56 -!- blahbot` has quit (Remote closed the connection). 17:29:13 -!- blahbot` has joined. 17:29:15 %reduce ^f^x$f$fx 17:29:32 %reload 17:29:33 Reloaded. 17:29:33 %reduce ^f^x$f$fx 17:29:34 ^f^x$f$fx 17:29:59 %reduce $^n^f^x$f$$nfx^f^x$fx 17:30:51 %reload 17:30:51 Reloaded. 17:30:52 %reduce $^n^f^x$f$$nfx^f^x$fx 17:30:52 ^f^x$f$$^f^x$fxfx 17:31:22 hooray 17:31:32 %reduce l 17:31:48 %reduce ^xl 17:31:48 ^xl 17:32:24 %reload 17:32:24 Reloaded. 17:32:25 %reduce ^xl 17:32:26 ^xl 17:32:26 %reduce l 17:32:27 l 17:32:31 %reduce $^xl^xl 17:32:32 l 17:32:51 %reduce ^g$^x$g$xx^x$g$xx 17:32:52 ^g$^x$g$xx^x$g$xx 17:32:57 %reduce $^g$^x$g$xx^x$g$xxf 17:34:08 %reload 17:34:09 Reloaded. 17:34:09 %reduce $^g$^x$g$xx^x$g$xxf 17:34:09 ^g$^x$f$xx^x$f$xx 17:34:16 Hmmm 17:34:22 %reload 17:34:23 Reloaded. 17:34:24 %reduce $^g$^x$g$xx^x$g$xxf 17:34:40 %reload 17:34:41 Reloaded. 17:34:41 %reduce $^g$^x$g$xx^x$g$xxf 17:34:42 [:lambda, "g", [:apply, [:lambda, "x", [:apply, "f", [:apply, "x", "x"]]], [:lambda, "x", [:apply, "f", [:apply, "x", "x"]]]]] 17:35:08 %reload 17:35:09 Reloaded. 17:35:09 %reduce $^g$^x$g$xx^x$g$xxf 17:35:24 %reload 17:35:24 Reloaded. 17:36:12 * ehird` wonders why that isn't working 17:36:17 %reduce $^g$^x$g$xx^x$g$xx^g$^x$g$xx^x$g$xx 17:36:19 %ps 17:36:19 0. reduce $^g$^x$g$xx^x$g$xx^g$^x$g$xx^x$g$xx 17:36:19 1. ps 17:36:23 well, (Y Y) works. 17:36:24 %kill 0 17:36:36 %reduce $^xxf 17:36:36 f 17:36:42 %reduce $^x$xyf 17:36:44 %ps 17:36:44 0. ps 17:36:47 I see the problem. 17:36:58 $ never gives up 17:38:40 %reduce x 17:38:40 x 17:38:42 %reduce $xx 17:38:43 -!- blahbot` has quit (Remote closed the connection). 17:41:57 -!- blahbot` has joined. 17:42:00 %reduce l 17:42:00 l 17:42:04 %reduce $^xxl 17:42:04 l 17:42:09 %reduce $^x^yxl 17:42:09 ^yl 17:42:21 %reduce $^x^y$xyll 17:42:21 ^y$ly 17:42:28 %reduce $$^x^y$xyll 17:42:28 $ll 17:42:31 hooray. 17:42:58 %reduce $^n^f^x$f$$nfxn 17:42:58 ^f^x$f$$nfx 17:46:03 %reduce $^g$^x$g$xx^x$g$xxf 17:46:03 $^x$f$xx^x$f$xx 17:46:10 Hm. 17:46:47 That should be $f$^x$f$xx^x$f$xx, shouldn't it? 17:46:56 (opinions needed :)) 17:52:37 %reload 17:52:37 Reloaded. 17:52:41 %reduce $^g$^x$g$xx^x$g$xxf 17:52:41 $^x$f$xx^x$f$xx 17:53:00 hmm 17:53:05 that's just one reduction isn't it 17:54:29 %reload 17:54:29 Reloaded. 17:54:30 that's just one reduction isn't it 17:54:32 %reduce $^g$^x$g$xx^x$g$xxf 17:54:32 $^x$f$xx^x$f$xx 17:54:45 %reload 17:54:45 Reloaded. 18:18:32 %reduce $^g$^x$g$xx^x$g$xxf 18:18:32 $^x$f$xx^x$f$xx 18:31:49 hmm 18:31:52 is that right? 18:32:09 or should it be $f$^x$f$xx^x$f$xx 18:32:25 %reduce $^x$f$xx^x$f$xx 18:32:25 $f$^x$f$xx^x$f$xx 18:33:35 %reload 18:33:35 Reloaded. 18:33:37 %reduce $^x$f$xx^x$f$xx 18:33:37 $f$^x$f$xx^x$f$xx 18:33:45 Hmm. 18:33:49 That's with call-by-value 18:33:53 but call by value breaks Y, right? 18:34:05 %reduce $^g$^x$g$xx^x$g$xxf 18:34:06 $^x$f$xx^x$f$xx 18:34:15 %reduce $^x$f$xx^x$f$xx 18:34:15 $f$^x$f$xx^x$f$xx 18:34:30 %reloa 18:34:31 %reload 18:34:31 Reloaded. 18:34:33 %reduce $^g$^x$g$xx^x$g$xxf 18:34:33 $^x$f$xx^x$f$xx 18:34:37 Meh. 18:34:46 %reload 18:34:47 Reloaded. 18:34:51 Back to call-by-name. 18:35:02 %reduce $^x$xx^x$xx 18:35:02 $^x$xx^x$xx 18:35:09 ... does that look right to you 18:37:23 %reduce $$^f^s^b$$bfs^x^yx^x^yy 18:37:23 ^b$$b^x^yx^x^yy 18:37:50 %reduce $^p$p^x^yx$$^f^s^b$$bfs^x^yx^x^yy 18:37:50 $$$^f^s^b$$bfs^x^yx^x^yy^x^yx 18:38:06 %reload 18:38:06 Reloaded. 18:38:07 %reduce $^p$p^x^yx$$^f^s^b$$bfs^x^yx^x^yy 18:38:07 $^b$$b^x^yx^x^yy^x^yx 18:38:14 %reduce $^b$$b^x^yx^x^yy^x^yx 18:38:14 $$^x^yx^x^yx^x^yy 18:38:19 %reduce $$^x^yx^x^yx^x^yy 18:38:19 ^x^yx 18:38:33 %reload 18:38:33 Reloaded. 18:38:36 %reduce $^p$p^x^yx$$^f^s^b$$bfs^x^yx^x^yy 18:38:36 $^b$$b^x^yx^x^yy^x^yx 18:38:40 %reduce $^b$$b^x^yx^x^yy^x^yx 18:38:40 $$^x^yx^x^yx^x^yy 18:38:46 %reduce $$^x^yx^x^yx^x^yy 18:38:51 %reduce $$^x^yx^x^yx^x^yy 18:38:51 ^x^yx 18:39:11 %reduce $^g$^x$g$xx^x$g$xx^x^yx 18:39:11 $^x$^x^yx$xx^x$^x^yx$xx 18:39:17 %reduce $^x$^x^yx$xx^x$^x^yx$xx 18:39:17 $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:19 -!- lament has set topic: Esoteric language discussion | FORUM AND WIKI: esolangs.org. 18:39:22 %reduce $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:25 %reduce $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:25 ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:35 i hope this is working :) 18:39:37 %reduce ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:37 ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:41 ... looks like it isn't 18:39:42 -!- lament has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org. 18:39:51 this is Y with callbyvalue spiralling out of control isn't it? 18:39:55 %reduce ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:39:55 ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:00 hmmm .. maybe note 18:40:07 %reduce ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:07 ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:13 interesting 18:40:20 lament, what do you think? 18:40:26 %reload 18:40:26 Reloaded. 18:40:31 %reduce $^g$^x$g$xx^x$g$xx^x^yx 18:40:31 $^x$^x^yx$xx^x$^x^yx$xx 18:40:35 %reduce $^x$^x^yx$xx^x$^x^yx$xx 18:40:35 $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:39 %reduce $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:39 ^y^x$^x^y$^x$^x^yx$xx^x$^x^yx$xx$$^x$^x^yx$xx^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:40:53 same happens with call-by-name. OK 18:41:20 -!- lament has set topic: Esoteric programming language discussion | FORUM AND WIKI: esolangs.org | CHANNEL LOGS: http://ircbrowse.com/cdates.html?channel=esoteric. 18:45:51 %reload 18:45:52 Reloaded. 18:45:54 %reduce $^g$^x$g$xx^x$g$xx^x^yx 18:45:55 $^x$^x^yx$xx^x$^x^yx$xx 18:45:58 grrr 18:46:15 %reduce $^x$^x^yx$xx^x$^x^yx$xx 18:46:16 $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:46:25 %reduce $^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:46:25 ^y^x$^x^y$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx$^x^y^x$^x^yx$xx$^x$^x^yx$xx^x$^x^yx$xx 18:46:29 It shouldn't contain $^ at all, should it? 18:46:41 Just how far is it supposed to be reducing? 18:46:51 ihope, To a normal form if there are no free variables 18:47:07 $^xxa reduces to the symbol a 18:47:11 or rather, the free variable a 18:47:24 $^x^y$xyab reduces to $ab 18:47:31 but $^g$^x$g$xx^x$g$xx^x^yx reduces to that big lambda. 18:47:51 %reduce $^x$xx^x$xx 18:47:52 $^x$xx^x$xx 18:47:55 i'm just reducing until there's 1. a change between two reductions and 2. still free variables 18:48:06 but my algo is flawed apparently 18:48:09 %reduce $^xxa 18:48:11 A change between two reductions? 18:48:18 ihope, x != reduce(x) 18:48:22 in pseudocode: 18:48:36 while x has free variables and x != reduce(x), set x = reduce(x) 18:49:03 %ps 18:49:03 0. reduce $^xxa 18:49:03 1. ps 18:49:05 %kill 0 18:49:27 %reload 18:49:27 Reloaded. 18:49:32 %reduce $^xxa 18:49:33 a 18:49:35 success 18:49:42 %reduce $^x^y$xyab 18:49:42 ^y$ay 18:49:49 %reduce $$^x^y$xyab 18:49:49 $ab 18:49:52 success! 18:50:00 %reduce $^x^y$xy$ab 18:50:00 ^y$ay 18:50:10 %reduce $$^x^y$xy$abc 18:50:10 $ac 18:50:14 hmmmmmm 18:50:18 %reduce $ab 18:50:18 a 18:50:22 interesting 18:50:26 why would $ab reduce to a? 18:50:35 %reduce $^g$^x$g$xx^x$g$xx^x^yx 18:50:35 $^x$^x^yx$xx^x$^x^yx$xx 18:50:38 hrm. 18:50:49 maybe my has_free? algorithm is wrong 18:51:53 has_free? expr, bound = if expr is a variable and isn't in bound, TRUE! otherwise if expr is a variable, FALSE! otherwise if expr is an application, has_free? function, bound or has_free? argument, bound. otherwise, if i'm a function, has_free? code, bound + my_argument_name 18:53:39 %reduce $^x$xxa 18:53:39 $aa 18:53:48 %reduce $^x$xx^xaa 18:53:48 $^xa^xa 18:53:51 %reduce $^x$xx^x$aa 18:53:51 $^x$aa^x$aa 18:54:22 %reduce $^n^f^x$f$$nfxa 18:54:22 ^f^x$f$$afx 18:54:28 %reduce $^n^f^x$f$$nfx$ab 18:54:28 ^f^x$f$$afx 18:54:32 %reduce $^n^f^x$f$$nfx$a$bc 18:54:32 ^f^x$f$$afx 18:54:34 hmm 18:54:40 >why< does $ab -> a 18:55:51 %reduce $ab 18:55:51 a 18:56:07 hm 18:56:27 aha 18:56:58 %reload 18:56:58 Reloaded. 18:56:59 %reduce $ab 18:56:59 a 18:57:15 %reload 18:57:15 Reloaded. 18:57:16 %reduce $ab 18:57:18 %ps 18:57:19 0. ps 18:57:36 %reload 18:57:36 Reloaded. 18:57:37 %reduce $ab 18:57:40 %ps 18:57:40 0. ps 18:57:57 %reload 18:57:57 Reloaded. 18:57:58 %reduce $ab 19:00:18 :/ 19:04:31 %reduce a 19:04:31 a 19:04:33 %reduce ab 19:04:33 a 19:04:35 %reduce b 19:04:36 b 19:04:40 %reduce ^x$ab 19:04:40 ^x$ab 19:04:45 %reduce $^x$abx 19:04:45 $ab 19:04:49 %reduce $ab 19:27:39 -!- andreou has joined. 19:43:32 -!- oerjan has joined. 19:49:04 %reduce $^x$abx 19:49:04 $ab 19:49:08 %reduce $ab 19:49:18 %reduce $b 19:49:19 %reduce $ba 19:49:22 %reduce b 19:49:23 b 19:50:01 :/ 19:56:31 Reduce until it changes? 20:00:37 -!- Sgeo has joined. 20:00:48 ihope, No 20:00:53 reduce until it doesn't change 20:01:33 Hmm. 20:01:35 %reload 20:01:35 Reloaded. 20:01:37 %reduce b 20:01:37 b 20:01:39 What are your rules for reduction? 20:01:39 %reduce $ab 20:01:40 -!- blahbot` has quit (Remote closed the connection). 20:01:54 ihope, alpha-conversion and beta-reduction 20:02:03 actually, not even alpha-conversion 20:02:04 kind of. 20:02:23 i don't rename variables, i just replace each occurence of them with the argument's value, assap 20:02:24 *asap 20:02:30 I reduce on alpha-conversion 20:03:07 So if you have a lambda applied to something, it reduces; otherwise, nothing? 20:03:07 and beta-reduction is just the identity function for variables and lambdas, and A(B(function), B(function argument name), argument) 20:03:16 ihope, Pretty much 20:03:19 %reload 20:03:36 Does the lambda-applied-to-something have to be at the "top" of the expression, or can it be anywhere within? 20:03:42 ihope, Anywhere 20:03:45 -!- blahbot` has joined. 20:03:47 %reduce a 20:03:48 a 20:03:55 %reduce $^x.x^x.x 20:03:56 . 20:03:58 ... 20:03:59 wtf. 20:04:00 oh. 20:04:03 %reduce $^xx^xx 20:04:03 ^xx 20:04:15 %reduce $^x$^xxx^xx 20:04:16 $^x^xx^xx 20:04:20 that's not right. 20:04:32 %reduce $^x^xx^xx 20:04:32 ^x^xx 20:04:41 hmmmmmmmmm, oh wait 20:04:53 %reduce $^x$^xxx^xx 20:04:53 $^x^xx^xx 20:05:17 %reduce $^x$^xxx^xx 20:05:18 $^x^xx^xx 20:05:25 ok so maybe i need alphaconversion 20:05:29 %reduce $^x$^yyx^xx 20:05:29 $^yy^xx 20:05:38 why isn't that reducing further. 20:05:42 %reduce $^yy^xx 20:05:43 ^xx 20:05:45 i mean - it can 20:05:47 so why isn't it. 20:06:29 %reload 20:06:29 Reloaded. 20:06:32 %reduce $^x$^yyx^xx 20:06:33 $^yy^xx 20:06:37 grr 20:07:12 (\x.(\x.x)x)y should be y, right? :/ 20:07:35 %reduce $^x$^xxxy 20:07:35 $^xyy 20:08:05 %reload $^xyy 20:08:08 er 20:08:09 %reduce y 20:08:10 y 20:08:13 %reduce $^xyy 20:08:13 y 20:08:25 %reduce $^x$^xxxx 20:08:25 $^xxx 20:08:29 %reduce $^xxx 20:08:30 x 20:08:37 %reload 20:08:38 Reloaded. 20:08:38 %reduce $^x$^xxxx 20:08:39 $^xxx 20:08:41 %reduce $^xxx 20:08:42 x 20:08:45 ok so that works 20:08:52 %reduce $$^x$^xxxxy 20:08:53 -!- blahbot` has quit (Remote closed the connection). 20:09:01 that should be $xy 20:09:35 -!- blahbot` has joined. 20:09:37 %reduce $$^x$^xxxxy 20:09:45 %reduce $$^x$^xxxxy 20:09:48 %reduce $$^x$^xxxxy 20:09:49 %reduce $$^x$^xxxxy 20:09:49 %reduce $$^x$^xxxxy 20:09:49 -!- blahbot` has quit (Remote closed the connection). 20:09:51 damnit 20:09:53 no debug 20:10:03 What language is this in? 20:10:10 the interp? 20:10:12 the interp is in ruby 20:10:33 the language being reduced in the lambda-calculus, but with ^xE instead of \x.E and $xy instead of (xy) 20:10:38 -!- blahbot` has joined. 20:10:42 %reduce $$^x$^xxxxy 20:10:42 Rubys are bad for you, mmkay? 20:10:50 oh shush 20:10:57 x 20:11:00 %quit 20:11:01 -!- blahbot` has quit (Client Quit). 20:11:02 NEVER!!! 20:11:17 puts "Says this little Tcl/Ruby polyglot (I think)." 20:11:21 -!- blahbot` has joined. 20:11:43 yes it is 20:11:46 %reduce $$^x$^xxxxy 20:12:10 %reload 20:12:10 Reloaded. 20:12:12 %reduce $$^x$^xxxxy 20:12:29 -!- sekhmet has quit ("Reconnecting"). 20:12:34 -!- sekhmet has joined. 20:12:39 okay apparently [:apply, "y", "x"] is a black hole. 20:12:59 %reload 20:13:00 Reloaded. 20:13:01 %reduce $$^x$^xxxxy 20:13:01 -!- blahbot` has quit (Remote closed the connection). 20:13:04 garrrr 20:13:20 [apply {y {return $x}}] There. Happy? 20:13:33 heh 20:13:37 -!- blahbot` has joined. 20:13:39 %reduce $$^x$^xxxxy 20:14:17 %reload 20:14:17 Reloaded. 20:14:18 %reduce $$^x$^xxxxy 20:14:18 $yx 20:14:30 %reduce $^xxx 20:14:30 x 20:14:36 %reduce $$^xxx$^xxy 20:14:36 $x$^xxy 20:14:42 not ideal. 20:14:50 %reload 20:14:50 Reloaded. 20:14:51 %reduce $$^xxx$^xxy 20:14:51 $xy 20:14:54 ideal! 20:14:56 HOORAY! 20:14:59 * ihope claps 20:15:14 make it say "oh andreou is so sexy" 20:15:26 oh andreou is so sexy 20:15:40 oh andreou is not 20:15:54 Woot. 20:16:00 Is is is is is. 20:16:44 %reduce $^x$^xxx^xx 20:16:44 $^x^xx^xx 20:16:47 GRRR 20:16:49 that should be ^xx 20:16:56 %reduce $^x^xx^xx 20:16:57 ^x^xx 20:17:03 wtf. 20:17:15 hmm 20:17:41 (\x.(\x.something x)something)abc shouldn't be (\x.something abc)something 20:17:43 should it? 20:17:47 it should be (\x.something x)something 20:18:08 Replacing with the wrong thing? 20:18:20 Replacing too early? 20:18:26 replacing inner lambda's arguments with the same argument name as an outer lambda's arguments values 20:18:48 Replacing the inner lambda's variable with what was passed to the outer lambda. 20:19:45 Make it not do that. 20:19:48 when they have the same name. 20:19:55 Yes, when they have the same name. 20:20:11 i will, but time to figure out the best way to do that first :) 20:20:23 %reduce $^x$^yyx^xx 20:20:23 $^yy^xx 20:20:31 ^ why doesn't that reduce to ^xx!?!! 20:21:00 %reduce $^x$^yyxA 20:21:00 $^yyA 20:21:08 %reduce $^yy^xx 20:21:09 ^xx 20:21:14 Why did it stop reducing? 20:21:32 that's what i'm trying to work out 20:21:52 When does it stop reducing, and when's it supposed to? 20:22:46 it stops reducing /then/ and it's supposed to stop reducing when X = reduce(X) 20:22:50 i.e. as far as possible 20:24:26 however as we can see, reduce($^yy^xx) = ^xx 20:25:44 http://pastie.caboo.se/80390 the full code from start to finish it probably has loads of bugs. 20:28:20 %reduce $^f^x$fx^yx 20:28:21 ^x$^yxx 20:28:31 %reduce $^x$^yxxA 20:28:32 $^yAA 20:28:38 %reduce $^yAA 20:28:38 A 20:28:45 that SHOULD all be done in one step. 20:28:50 well 20:28:52 not really 20:28:57 the last two steps should be combined 20:35:17 :/ 20:52:35 -!- Sgeo has quit (Remote closed the connection). 21:21:47 -!- kwertii has joined. 21:21:56 -!- kwertii has quit (Remote closed the connection). 21:27:28 -!- Sgeo has joined. 21:51:14 hmm 21:52:17 j0 21:52:48 harry potter kills voldemort with brainfuck! 21:53:15 :-D 21:53:26 "Harry, I am your mother." 21:53:32 "I meant father." 21:55:43 "Harry, I am your ,[.,]" 21:55:52 the internet will be a minezone for the next few weeks 21:56:00 of the type " " 21:56:20 I might want to do a self-imposed media blackout until I get the book. . . 21:56:39 I at least *think* I'll be getting one at release. 21:57:03 If so, I ought to be done in time to avoid the spoilers. :) 21:57:33 that's what loads of people are doing 21:57:34 -!- Figs has joined. 21:57:40 so the internet will be a minefield with only a few mines 21:57:45 I have already seen the aftermath of some by-that-time-removed fake spoilers. 21:57:57 HP7? 21:58:02 Figs, obviously 21:58:03 yeah 21:58:20 I know! 21:58:31 Gah. Static languages. 21:58:41 So ... slow to develop in .... 21:58:46 Harry kills V, goes insane, and travels back in time to become V. 21:58:51 In some order 21:58:51 rofl 21:58:54 -!- Tritonio has quit (Remote closed the connection). 21:59:07 I'm pretty sure I know what the ending is, though not the particulars 21:59:08 Sukoshi: depends on the language 21:59:15 Java :( 21:59:28 Figs, if you say a word - many geeks and nerds will want your head on a stick. that is all 21:59:29 Sukoshi: Haskell is more fascists about types than java 21:59:31 Must ... inspect data structures in real time ... 21:59:36 no, not like that :P 21:59:37 (also, tempted to pre-emptively /ignore figs :)) 21:59:48 SimonRC: Haskell is just st00pd though :P 21:59:53 SimonRC, Voldemort kills Harry, goes insane, and travels back in time to become Harry 21:59:54 grr 21:59:57 O.o 22:00:00 ehird`: heh 22:00:04 ^ THAT'S WHY IT DIDN'T KILL HIM! 22:00:10 dun dun DUNNNNNNN 22:00:20 * ehird` will obviously turn out to be completely right 22:00:22 .... o.O 22:00:24 rofl 22:00:28 Or Voldermort is just the result of Bowser raping Ron's dad. 22:00:35 Harry wakes up to find he is 28 years old and in a loony bin 22:00:36 Who then travels back in time to become Voldermort. 22:00:42 Sukoshi, o_O 22:00:47 SimonRC, hah 22:00:54 Hey... Bowser's spikers will do that to anyone! 22:01:00 it's obvious what will happen. it's been set up from book one :P 22:01:27 Figs: really? 22:01:32 as long as he lives 22:01:34 22:01:49 I have seen Harry surviving and dying both being pronounced "obvious" 22:01:59 -!- Tritonio has joined. 22:02:04 SimonRC, harry is in a superposition of both alive and dead 22:02:06 Someone please tell me when ehird's done with the spoilers. 22:02:10 you won't know which until you read the book 22:02:12 /ignore ehird` 22:02:13 Tritonio: WRU 22:02:20 somebody tell pikhq that i didn't mean me 22:02:27 ehird`: actually.... 22:02:28 heh 22:02:33 that's a good idea... 22:02:44 SimonRC, quantum pottermechanics 22:02:48 Fuck it. Someone PM me when the channel's done. :p 22:02:55 I know another book that I think parallels it 22:02:58 you have half-a-dozen different versions of the book printed with subtly different endings, but don't tell anyone! 22:03:05 haha 22:03:10 crackpottering? 22:03:13 then the collectors will have to buy one copy of each version... 22:03:38 then, you make one of the variations even rarer, generating insane frenzy 22:03:39 etc 22:03:41 anybody here speak hebrew? 22:03:44 If I were Rowling, I'd have written up a fake book just to leak it intentionally. . . 22:03:49 rofl 22:03:49 heh 22:03:56 pikhq, maybe that's why it took so long 22:04:03 Could be. 22:04:12 actually I had the whole "hollows" thing spoiled for me by the illustrator 22:04:15 Every character not killed off will suffer through a large amount of really bad fanfic 22:04:20 is that a good or bad thing? 22:04:31 Figs: ITYM "hallows" 22:04:35 yeah 22:04:36 depends if it's the erotic sort or not 22:04:36 I can't spell 22:04:38 :P 22:04:42 o.o 22:04:45 pikhq: You *read* Harry Potter? 22:04:51 And, erm, enjoy it? 22:04:55 Figs: i don't see how the illustration spoils it in any way... 22:05:04 illustrator 22:05:06 Yuh. 22:05:08 Sukoshi, May I gently remind you that this is a channel of nerds. 22:05:09 not illustrations 22:05:16 ehird`: That's the point. 22:05:18 Figs: you've talked to the illustrator? 22:05:18 one who illustrates 22:05:19 no 22:05:23 like most of these hyped things, it is not too bad, but is insanel overhyped 22:05:23 but I can read online :P 22:05:47 Sukoshi, How is that the point? 22:05:50 like LOLCODE was 22:06:02 fortunately, LOLCODE has calmed down a bit 22:06:02 Sukoshi: It's a decent book series, which happens to have insane hype and some horrid merchandising deals. 22:06:08 After reading real Fantasy by people like Jordan, Modesitt, Friedman, Hobb, and Kerr, I can't even go back. 22:06:25 SimonRC, thank god indeed 22:06:36 SimonRC, LOLCODE is another case of the microsofts 22:06:38 oh not the illustrator 22:06:41 lolcode was so dumb 22:06:45 actually, a reviewer from Baltimore SUn 22:06:46 Harry Potter is, at best, a child's tale. 22:06:50 * pikhq wants to kill some people at WB for such monstrosities as HP underwear. . . 22:06:50 stealing an idea done before many times to not much success, making it worse, getting loads of hype 22:06:52 *Baltimore SUn 22:06:54 of course MS is not the first to do that ;) 22:06:54 bah 22:06:55 :P 22:06:58 *Baltimore Sun 22:06:59 there 22:07:06 Sukoshi: it's an easy to read and entertaining. so? 22:07:07 Sukoshi: I started on the series when I was about 9, so I've got an excuse. ;) 22:07:32 Sukoshi: if i read "real fantasy", i'd be some kind of a dork. 22:07:52 HP is a frikkin' boarding-school story that turns into a destiny story 22:07:59 lol 22:08:15 SimonRC: It doesn't *claim* to be more than that, really. 22:08:20 Sukoshi just doesn't like it because she thinks it won't enlighten her 22:08:22 Hey, what's wrong with "real fantasy"? :P 22:08:23 pikhq: yup 22:08:24 some people just read for fun 22:08:49 * pikhq only reads for fun. . . Enlightenment is fun. Entertainment is fun. 22:08:57 * SimonRC starts to analogise HP to Star Wars, but realises this must have bben done already. 22:08:59 I'm easily pleased with reading material in hand. :) 22:09:09 you know they released like 1000 copies of the book early by mistake, right? 22:09:17 there's going to be a lawsuit over it :P 22:09:46 SimonRC: Irregular Webcomic has already done several fake spoilers, one of them SW 22:09:48 you guys have all seen the leak, right? 22:09:51 yup 22:09:54 IW Rox 22:10:12 Snape kills Trinity with Rosebud! 22:10:20 bsmntbombdood: Yeah. . . 22:10:24 IW is the only webcomic where I learn something new most days 22:10:25 So. . . Tempting. . . 22:10:26 :( 22:10:35 I haven't seen the leak, no 22:10:40 heard of it yes 22:10:52 IW? 22:10:53 no way in fucking hell am I touching that download :P 22:11:02 Figs: why not? 22:11:11 someone should transcribe it to ascii :P 22:11:12 fair chance of lawsuits 22:11:21 * ehird` has the positive aspect of not being able to read books from a computer screen 22:11:27 so the leak does not tempt me. 22:11:37 yeah, that irritates me too :P 22:11:58 i'm not gonna read it until i find a spanish version 22:12:06 which will take months at least 22:12:08 why risk my money, sanity and freedom over a shitty poorly readable copy when I can wait two or three more days and buy the real deal? 22:12:20 Figs: you're _paying_ for it? 22:12:36 ehird`: Why's that? 22:12:41 pikhq, i dunno 22:12:46 I know. Rare for my to buy things. 22:12:54 lament: why? 22:12:56 But yes, I'd rather not have it all spoiled. 22:13:02 lament, some people pay for things! 22:13:10 while I wait 6 months for the library to have a copy :) 22:13:30 On a completely different note: http://qntm.org/f16 I love using a time machine which is bought and took back in time in later steps 22:13:59 how the fuck do you have a difference of more than 150 pages in two copies of the same book? 22:14:38 In Orwellian Britain, television watch YOU! 22:14:39 :-P 22:14:42 lol 22:14:52 i also like the completely irrelevant steps. 22:14:54 like "Take your scotch tape and your box of cereal backwards in time by roughly 14,000,000,000 years and allow the preposterous quantity of scotch tape to undergo gravitational collapse to form a star. This star should be of sufficient mass to go supernova, generating large amounts of iron and other heavy elements. If you picked your spot correctly, this should result in the creation of our Sun and the planet Earth, both of which you ar 22:14:54 e therefore directly responsible for." 22:15:10 you can read the Baltimore Sun's article on HP7 if you want minor spoilers 22:15:20 ehird`: The best circular causality I have seen is in Flatterland. 22:15:36 SimonRC, this one's better considering it has nothing to do with "Making an F-16 from a cereal box, some Scotch tape, and a penny" 22:15:58 heh 22:16:54 http://qntm.org/icecubes 22:17:07 =p 22:17:59 ice cubes aren't tasty! 22:18:32 yes they are 22:20:15 they're tasty when they're made of sugar! 22:20:37 INTERESTING PROJECT: Basic analog computer by way of rube goldberg machine 22:21:04 Preferably using mainly household objects. 22:21:15 o.O 22:22:09 ehird`, you've seen the lego babbage machines, right? 22:22:18 Figs, you're joking. 22:22:20 do they actually work 22:22:46 http://acarol.woz.org/FullEngineFrontLarge.jpg 22:23:17 http://www.mocpages.com/moc.php/13731 22:23:41 and another article 22:23:42 http://acarol.woz.org/ 22:23:54 but, does it actually work 22:23:59 pikhq: I started Harry Potter when I was 9 too. 22:24:01 can you compute with it. 22:24:03 works for 3 digits, I think 22:24:09 wow 22:24:12 But this thing happened called ``Growing up'' that was pretty weird. 22:24:33 And then lots of stories became boring an unbelievable :| 22:25:07 then you can't be older than 20. 22:25:34 ehird`, from the article, " My first generation Difference Engine could calculate 2nd order differences to 3 digits. Issues with the performance of the 'carry' operation prevented easy expansion to more orders of difference or the addition of more digits. It also had a single "modified" LEGO part in each adder unit which fell short of my goal to use only standard parts. 22:25:34 22:25:34 The second generation machine, documented here, calculates to the same precision, but is capable of being expanded to 3rd order differences and 4 digits accuracy. Other than the paper printed digit labels used to output the answer, standard LEGO pieces are used without modification. " 22:25:36 ehird`: That guy is now my god. 22:25:43 * ehird` considers doign that analog-rube-goldberg thing anyway 22:26:15 i mean, that lego thing is cool and all but you don't see it roll a tennis ball down onto some rubber to hit a switch 22:26:26 I think they did a better one with K'NEx 22:26:32 *K'NEX 22:26:59 ohh 22:27:10 actually, no this is an adder/subtractor 22:27:15 a k'nex calculator would be cool 22:27:17 works up to 15 22:27:35 BUT what about meccano 22:27:37 it's by some students at Olin 22:27:41 http://gizmodo.com/gadgets/k.nex/room-sized-knex-calculator-274562.php 22:27:53 oh: 22:27:54 "In 1935 Meccano was the primary construction material used by J. B. Bratt in building several analog computers. The computers were used for several decades to calculate differential equations, and one such machine, the "Meccano Differential Analyser No. 2" survives to this day. That specific machine was used by the Allies in Operation Chastise where the computer played a critical role in planning the bombing runs for bombs that would b 22:27:54 ounce across water before colliding with and destroying German dams.[3] [4]" 22:27:57 damn. 22:28:03 and "In 2002 and 2005 (respectively), Tim Robinson constructed working Meccano models of Charles Babbage's Difference Engines #1 and #2." 22:28:11 http://www.meccano.us/difference_engines/rde_1/index.html 22:28:38 :P 22:29:15 the Olin one works more like boolean logic 22:29:15 the day when i get a rube goldberg machine to flick a peice of tape saying "1" to "2" will be the happiest day of my life. kind of. :P 22:29:27 difference engines are pretty boring, though. 22:29:57 in physics, we had to build rube goldberg machines to move 500 grams exactly ___ cm 22:29:58 lament, analytical engines, then 22:29:59 I don't remember how far 22:30:03 turing complete lego sets 22:30:11 analytical engines are a bit harder to construct, naturally 22:30:26 I used a lego rebot as the last stage so we could just activate it and have it move correctly :) 22:30:33 *robot 22:30:39 wow, I can't type today, can I? :P 22:31:06 -!- jix has quit ("CommandQ"). 22:32:01 http://www.physorg.com/news103997338.html 22:32:51 -!- liber has joined. 22:33:20 ehird`: The Lego robot kit is Turing complete, last I checked. . . 22:33:31 :P 22:33:38 pikhq, but that has a computer chip and everything doesn't it? 22:33:42 yeah, but interactive C sucks 22:33:42 Yup. ;) 22:33:56 well then :P 22:34:01 Anyone know how BF works? When a loop quits does the memory pointer go back to where it was before the loop? my interpreter goes BAZAAR when it comes to multiple loops 22:34:11 liber, no 22:34:13 x[y]z 22:34:17 when the loop ends it goes to z. 22:34:26 and the tape pointer doesn't change. 22:34:28 liber: You're thinking too hard. 22:34:32 Sukoshi, indeed 22:34:34 when the loop ends it stays where it was when the loop ended 22:34:41 Yup. 22:34:47 Just follow the instructions to the letter. 22:35:00 There are no high-level loop security, stack pointer, segment register-ness here. 22:35:04 Well. I'm not very good at programming. My bf interpreter behaves nuts. I have no idea why 22:35:10 It works for a while 22:35:15 and for simpler examples 22:35:46 Given the source, we may be able to help. 22:36:01 its commented in swedish though ... 22:36:11 so what 22:36:12 liber: given brainfuck source code, can you find a quote's matching quote? 22:36:18 code is better than comments. 22:36:20 good code that is. 22:36:29 inget problem :) 22:36:31 Where's a Swede when you need one? :p 22:36:31 hehehe 22:36:32 good code is mostly self-explanatory. it's only concepts you should explain 22:36:47 well. I cant guarantee that its very good 22:36:57 my code generally has only a sprinkling of one-line comments above bits of code, and short descriptions of concepts and algorithms 22:36:57 What language did you write it in? 22:37:01 ruby 22:37:03 mainly my code explains itself 22:37:10 i can handle ruby :P 22:37:15 * pikhq is antiRuby 22:37:26 * ehird` is antiRubyButItISPracticalAndUseful 22:38:39 * lament is anti-camelcase 22:38:53 * ehird` is anti-fnord 22:38:57 -!- DeviALT has joined. 22:39:07 I emailed the guy from IOCC 22:39:10 [set Tcl "FTW"] 22:39:10 *IOCCC 22:39:12 no reply yet 22:39:31 god, i always remarked that IRC was like multiplayer DOS, this really IS. 22:39:32 Before you start bashing my code: I am a musician, not anywhere near a programmer 22:39:37 oh! 22:39:37 http://pastebin.se/24992 22:39:41 no I did get a reply 22:39:44 !! 22:39:44 :D 22:39:53 the best language for writing a brainfuck implementation is of course HQ9+B 22:39:57 liber, let's see... 22:40:00 The answer is no :( 22:40:10 liber: Yes. Typical musician code :P 22:40:18 and for some reason I used instance-vars instead of anything else :) 22:40:26 I have no idea why 22:40:28 #Workaround for the STUPID STDIN.getc. 22:40:31 just do getc.char 22:40:33 *chr 22:40:34 not gets[0] 22:40:36 well 22:40:41 and he said he didn't know of any Obfuscated C++ contests either :P 22:40:45 no 22:41:04 actually this code is just insane. :P 22:41:05 Figs: start your own. 22:41:10 liber, well yes 22:41:15 I really should :P 22:41:20 ehird`: because if you have two , after eachother the getc first gets the first value, then the newline when you press enter 22:41:29 yes 22:41:31 that is how BF works. 22:41:51 oh 22:42:03 so the newline is supposed to be "loaded"? 22:42:08 IRP is scary and frightening. 22:42:28 O_O 22:42:32 I just got an awful idea 22:42:45 international obfuscated IRP contest! 22:42:48 which reminds me of a heraclitean fragment 22:42:52 haha 22:43:17 i don't think anybody tried obfuscated IRP yet 22:43:22 'oh god help this man is there an irp interpreter in the house?' 22:43:43 ehird`: there are some "debugging things" still in that code... example the "puts 'wtf!'"... just ignore that 22:44:25 the problem comes when there are loops... otherwise it works fine 22:44:36 please say "" rot13d and sha512-decoded while defining X to be... 22:44:38 well, what instrument do you play? 22:44:46 bassoon 22:44:52 sweet! 22:44:56 Please worble glak moofle "Hello, world!" 22:44:57 that makes it easier. 22:45:08 Hello, world! 22:45:11 I play flute. Are we forming a band? 22:45:27 Yo toco mujeres. 22:45:29 Fnarlke thanks, skriffle. 22:45:39 we will write our notes in brainfuck 22:45:45 I sing. We're forming the ">,[>,]<[.<]" 22:46:04 do we -really- want to hear pikhq sing? 22:46:14 Depends. Do you like bass? 22:46:48 If anyone wants to hear an _insane_ bass: dl "J.D Sumner - Walk that lonesome road" 22:46:51 Sea Bass :_ 22:46:52 :) 22:46:57 That's just creapy 22:47:04 me? 22:47:05 hey, cool. Checkers has been solved. 22:47:08 at any rate i'll play the berimbau, didgeridoo, pandeiro and agogo 22:47:17 He goes down, without any problems to really low Ab 22:47:20 what'll intellectuals do once somebody succeeds in solving chess? 22:47:20 Please ...---.--.-.-.----- 22:47:24 Rodger, I misread that as "Hey Cool, Chickens have been solved." 22:47:25 and i suppose the cuica as well 22:47:34 Figs: that's a much harder proof 22:47:40 lol 22:47:57 what do you mean by 'solved' checkers, anyway? :P 22:48:12 the ai created to play cannot be beaten. 22:48:14 a complete game tree has been built 22:48:16 RodgerTheGreat: do any intellectuals still play chess? I thought they all switched to Go. 22:48:25 Go <3 22:48:28 many have switched to go 22:48:28 lament: Yeah, quite a few do. 22:48:37 more like go away >:[ 22:48:55 liber: How does your program handle ">,[>,]<[.<]"? 22:49:04 2 secs 22:49:04 oh 22:49:07 * pikhq would try it, but I don't have a Ruby interpreter 22:49:25 it bothers me a bit when people say things like "It's impossible to make an AI to play go at a human level". HUMANS are AIs that can play at a human level. The strategy just involves deeper analysis than a game like chess 22:49:35 rofl 22:49:56 RodgerTheGreat: humans are not AI. 22:50:08 All is proceeding according to plan. Beep. 22:50:10 depends if you believe in creationism, lament :P 22:50:31 humans generate algorithms to play games on the fly, as they play 22:50:31 pikhq: are newlines supposed to be "read" in? 22:50:35 Yeah. 22:50:43 alright. Have to modify it a bit 22:50:58 applying anything resembling logic to a game is essentially writing a very fast and loose program 22:50:58 RodgerTheGreat: humans are not AI. Don't confuse issues. The terminology is pretty straightforward. 22:51:40 pikhq: it loops... and loops 22:51:44 and loops 22:51:50 liber: Odd. 22:51:58 RodgerTheGreat: you could argue that they're _similar_ to AI but it's nonsense to say that they are. 22:52:02 there is something REALLY fishy with the loop method 22:52:07 It should take input, and reverse that when you get an EOF. 22:52:39 EOF? 22:52:42 End of file. 22:53:33 lament, unless you believe in Creationism :P 22:53:43 or weirder perversions of it, anyway 22:54:03 ("Bwhahaha, we were crafted by the GAME MASTER!") 22:54:12 * Figs shuffles off 22:54:16 but eh 22:54:24 typically, you shouldn't call us AI 22:54:29 pikhq: how do I input EOF? 22:54:41 UNIX? Windows? 22:54:44 unix 22:54:47 linux* 22:54:52 Ctrl-D 22:54:52 same shit 22:54:54 ah 22:54:58 whell 22:54:58 Figs: I'm not implying anything resembling creationism, I'm saying that our solutions to problems are of the same class as an AI we could write in a programming language 22:55:13 liber: i don't think your interpreter skips the loop entirely if the cell is 0 at the start 22:55:23 Figs: no, it doesn't matter if you believe in creationism or not, again you're confusing issues 22:55:29 Naturally Intelligent Native Nincompoop Yanks! 22:55:32 NINNYs 22:55:37 RodgerTheGreat: that has never been proven by anybody and is probably not ture. 22:55:39 we create algorithms to solve problems we encounter, and in so doing do something analagous to writing and executing a program 22:55:40 *true 22:55:42 creationism is much funnier that evolution 22:55:58 lmanet: I was joking :) 22:56:02 RodgerTheGreat: do you have any evidence for that other than your own intuition? It goes against my intuition. 22:56:02 oerjan: how do you mean 22:56:03 *Lament: I was joking 22:56:16 but you killed my joke :( 22:56:16 oerjan: aah! 22:56:24 Figs: it's only a joke when it's funny. 22:56:27 * Figs charges lament for the coffin 22:56:46 no 22:56:53 it can still be a joke even if it isn't funny 22:56:59 liber, you handle EOF as nil 22:57:00 nil != 0 22:57:01 it's just a "bad" joke then :) 22:57:02 = infinite loop 22:57:07 make it set cell to 0 on eof 22:57:09 or a "shitty" joke :) 22:57:17 it's a logically consistent model. If you have a problem with models that are logically consistent but are by definition unprovable (by your criteria), go bitch at theoretical physicists. 22:57:17 -!- andreou has quit ("Leaving."). 22:57:29 ehird`: I don't really understand how you mean 22:57:30 don't forget there's antihumor 22:57:42 liber, maybe you shouldn't be writing a bf interp, then :p 22:57:45 Which is funny because it's not funny. 22:57:53 ehird`: mean! 22:58:01 not really :p 22:58:19 if you're writing a bf programmer you should generally get all of those concepts 22:58:36 Why not learn them as you go? 22:58:57 RodgerTheGreat: that aliens are spying on you when you go to the washroom is also a logically consistent model. 22:59:00 well.. because each affects the other 22:59:26 RodgerTheGreat: not sure what either scenario has to do with theoretical physics 22:59:53 alright, go ahead and explain to me why you think a brain is super-turing. 23:02:07 i don't think the brain is super-turing. I think turing-completeness is pretty irrelevant in this case. 23:02:33 After all, all you need to play Go perfectly is a finite state machine. 23:02:42 bingo 23:03:55 there's nothing superturing about weather either, yet even the strongest computers can't predict it. 23:04:04 (nor humans) 23:04:47 ehird`: btw: it is hard to insert an EOF when that kills the ruby-interpreter... 23:04:51 There will be weather tomorrow somewhere. 23:04:56 liber, no it does not. 23:05:00 Bwahaha. I just predicted the weather :D 23:05:01 the problem with weather is possessing perfect information about the system's initial state. Go is a perfect-information game. 23:05:14 * Figs runs away to avoid being smacked 23:05:18 ehird`: yes it does 23:05:23 Although, I found the problem 23:05:36 liber, no it does not. 23:05:42 ask in #ruby-lang 23:05:46 Ctrl + D kills it 23:05:51 no it >doesn't< 23:05:55 your program may make it that way 23:06:11 oops 23:06:17 That was the python version :) 23:06:21 famous last words :D 23:06:49 python doesn't do that either 23:06:54 but your prog might have 23:07:35 these headphones suck. 23:08:38 anyways: the problem was that [ does not behave as it should. It does not leap to after ] if the ptr is 0 23:08:43 thx oerjan. 23:20:14 [][][][][][][][][][][][][][][][][][][][][][][] 23:20:33 == "" 23:21:31 in tcl no doubt? 23:21:39 No. 23:21:51 Well, after substitution, it does. . . 23:23:08 * Figs prods oklopok 23:24:43 haha C-- compiler 23:24:45 it may be wise to use his actual nick 23:24:55 oklopol* 23:25:09 why just prod? 23:25:20 * lament hands Figs an AK-47 23:25:30 got mixed up between kok and pol, and got pok... I guess I could have gotten kol 23:25:52 _or_ you could get tab completion. 23:26:13 it doesn't help if you're stupid :) 23:26:32 I typed it first, then pressed tab complete :P 23:26:34 >.< 23:26:53 and wrote pok :P 23:27:27 could be worse, I could have called him Oktokop 23:27:47 Oklopus? 23:28:06 or that 23:28:22 I'll keep in mind to try to reduce typoes 23:28:23 :P 23:28:39 in big-O notation: OklOpOl 23:28:48 -.- 23:29:27 you mean O(kl)O(p)O(l) 23:29:29 -!- blahbot` has quit (Remote closed the connection). 23:29:35 -!- ehird` has quit (Read error: 104 (Connection reset by peer)). 23:29:50 :P 23:30:34 -!- Figs has changed nick to [x|x. 23:30:44 <[x|x> S: 23:30:49 -!- [x|x has changed nick to Figs. 23:31:11 quantum Figs? 23:31:17 no 23:31:25 an attempt at making my nick a list comprehension 23:31:42 nickserve doesn't like <- apparently 23:32:58 -!- lament has changed nick to bra|ket. 23:33:11 heh 23:33:37 too bad my client doesn't use an initial < 23:33:58 well, get a real client 23:34:11 o_O 23:38:43 OH 23:38:54 I got an idea for how I could make my parser work easily 23:39:01 pass boost.any's around 23:39:09 I'll have a tree of boost.any 23:39:48 I've got an idea for how to make a parser work. . . 23:40:03 Just use GNU Bison. 23:40:14 no. I'm doing this inline in C++ 23:40:28 beautiful 23:40:59 what is? 23:41:09 life 23:41:16 good? :) 23:42:25 Yes, Conway's Game of Life is perty. 23:42:57 In Soviet Russia, VCR program YOU!! 23:42:59 hehe, write a calculator in that :P 23:43:59 -!- Figs has quit (Read error: 104 (Connection reset by peer)). 23:44:09 -!- Figs has joined. 23:44:49 also: 23:44:55 In Soviet Russia, TV watch YOU!! 23:45:03 no, no, in Soviet Russia, VCR doesn't manage to program YOU 23:45:20 but "program" sounds properly orwellian 23:45:35 that is supposed to be the joke with the Soviet Russial jokes 23:46:09 In Soviet Russia, joke tell on YOU 23:46:32 one of the originals 23:47:07 "In California you can always find a party, but in Soviet Russia the Party can always find YOU!" 23:47:17 oops, missing colon 23:48:12 * Figs tries very hard not to make bad jokes about missing colons :P 23:48:30 Figs: darn, you beat me to it 23:48:37 or maybe i tried too hard 23:48:53 aww :P 23:48:57 In Soviet Russia, colon miss YOU 23:49:07 don't _strain_ yourself :) 23:49:31 ooh: "In Soviet Russia, trains catch YOU! " 23:53:56 HAHAHA this guy is so full of shit 23:54:26 "only a compiler or similar static analysis tool can verify that there are sufficient comments of sufficient semantic applicability to make the written code sufficiently clear to a novice to the language and problem domain." 23:55:24 Funny, I thought that only a human could do that. 23:56:29 Figs: A calculator can be written in the Game of Life. . . 23:56:39 After all, there is a Turing machine in it.