2007-02-01: 00:52:55 har har! 00:54:25 (define fibs (cons-stream 0 (cons-stream 1 (stream-add fibs (stream-cdr fibs))))) 01:06:29 -!- digital_me has quit (Read error: 104 (Connection reset by peer)). 01:11:08 -!- SevenInchBread has joined. 01:28:15 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa"). 01:29:36 -!- wooby has joined. 01:30:36 oh ho 01:30:39 I just got a great idea. 01:30:40 ug 01:31:39 bsmntbombdood: you mean: "fibbs = 0:1:zipWith (+) fibbs (tail fibbs)" 01:31:46 SevenInchBread: well? 01:31:52 yeah 01:32:18 no 01:35:29 ahoy 01:37:27 -!- ihope has joined. 01:37:31 hmm... is there anything more to the bitmap file format other than simply being a grid of bytes? 01:37:45 Oops. Just a second. 01:37:47 -!- ihope has left (?). 01:37:54 -!- ihope-m has joined. 01:38:00 * ihope-m shows off his fancy new suffix 01:38:08 (I had to leave to change, you know.) 01:38:10 SevenInchBread: a grid of 32-bit words? 01:38:28 we have enough bitmap-based langas already 01:38:38 How about an SVG-based one? 01:38:54 well... I was going with squares. 01:39:50 the program is a series of black lines on a white background.. 01:39:58 or maybe a maze. 01:40:53 where a pointer of some sort travels through the whitespace, constrained by black pixel walls, with other color pixels being instructions. 01:46:52 * SimonRC goes to bed 02:06:44 -!- digital_me has joined. 03:29:51 -!- wooby has quit. 03:47:31 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:00:24 -!- LeaLeaLea has joined. 04:12:27 -!- oerjan has joined. 04:51:29 -!- anonfunc has joined. 05:19:49 -!- Sgeo has quit ("Leaving"). 05:35:37 -!- digital_me has quit (Remote closed the connection). 06:42:03 -!- oerjan has quit ("leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:17:55 -!- helios_ has joined. 09:18:19 -!- helios24 has quit (Read error: 113 (No route to host)). 09:21:34 -!- helios_ has quit (Client Quit). 09:21:44 -!- helios_ has joined. 09:22:06 -!- helios_ has changed nick to helios24. 09:42:25 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 09:42:25 -!- NK` has quit (zelazny.freenode.net irc.freenode.net). 09:42:25 -!- lament has quit (zelazny.freenode.net irc.freenode.net). 09:43:26 -!- NK` has joined. 09:43:32 -!- lament has joined. 09:43:40 -!- sp3tt has joined. 11:43:46 * SimonRC returns 12:53:03 -!- ihope-m_ has joined. 13:11:26 -!- ihope-m has quit (Read error: 110 (Connection timed out)). 13:18:21 "Dear Microsoft: programs that can recognise novel words by sticking together known affixes to known root have been around for over 20 years. It's probably time to put one into Word. Love SimonRC" 13:18:25 Word doesn't recognise "uninitialised". 13:18:25 bah 13:27:38 tried with 'z'? 13:27:47 uninitialized 13:53:08 -!- Rugxulo has joined. 13:58:03 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]"). 14:13:50 -!- Rugxulo has left (?). 14:26:02 I have it set to UK 14:40:17 -!- tgwizard has joined. 14:52:37 -!- anonfunc_ has joined. 14:58:03 -!- anonfunc has quit (Read error: 110 (Connection timed out)). 15:04:03 -!- sebbu has joined. 15:07:37 dear scholes i keep typn of for or n stuf plz fix kthxby 15:36:26 ya 15:42:17 oops, that should have been "sholes" 15:42:19 http://en.wikipedia.org/wiki/Christopher_Sholes 16:05:00 -!- anonfunc_ has quit. 16:22:36 -!- SevenInchBread has joined. 17:45:25 -!- NK` has changed nick to NK\. 17:52:07 -!- nazgjunk has joined. 18:08:57 -!- pgimeno has quit (Read error: 131 (Connection reset by peer)). 18:09:01 -!- pgimeno_ has joined. 18:09:07 -!- pgimeno_ has changed nick to pgimeno. 18:41:04 -!- sebbu2 has joined. 19:01:01 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:09:47 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa"). 21:49:21 wow... 21:50:04 what/ 21:50:06 ? 21:50:33 You discovered the newsgroup alt.fan.dragons? 21:51:52 AST = eval("'" + LispCode.replace("'", "\'").replace("(", "'('").replace(")", "')'").replace(" ",",")) 21:52:02 I don't know why I never considered that. 21:53:07 what's that for? 21:53:26 Takes a raw string of Lisp code and makes an AST (I think)... 21:54:23 might need to change replace(" ", ",") to a regex that matches any repetition of whitespace. 22:04:32 -!- SevenInchBread has quit ("haaaaaaaaaa"). 22:11:47 -!- Sgeo has joined. 22:13:59 AST? 22:18:48 abstract syntax tree 22:20:28 -!- SevenInchBread has joined. 22:25:38 i guessed it'd mean that but couldn't figure what it stood for :D 22:25:48 -!- oklofok has changed nick to oklopol. 22:25:52 olofok 22:48:56 -!- SevenInchBread has quit ("haaaaaaaaaa"). 23:12:38 -!- sebbu2 has quit (Client Quit). 23:24:13 -!- SevenInchBread has joined. 23:24:38 -!- anonfunc has joined. 23:27:50 hmm.. I need a "keyboard macro" program of some sort. 23:28:28 for performing a series of actions as though I had typed it in on a keyboard. 23:28:38 over and over... 23:28:57 -!- wooby has joined. 23:33:51 -!- ihope-m_ has changed nick to ihope. 23:37:16 SevenInchBread: C-x ( 23:41:34 -!- tgwizard has quit (Connection timed out). 23:58:00 -!- ShadowHntr has joined. 2007-02-02: 00:09:48 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 00:41:06 -!- anonfunc has quit. 01:13:45 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 01:45:37 OH MY GOD IT WORKS 01:49:51 that is amazing 01:52:33 http://paste.lisp.org/display/36224 01:52:35 :D 01:54:17 no real scoping though 01:57:51 but it works!! 02:04:42 not quite turing complete yet, because there's no way to recurse 02:04:43 a lisp interpreter? 02:04:48 er. 02:04:48 yeah 02:04:52 lispish interpreter? 02:05:09 yeah 02:05:20 * SevenInchBread has always wanted to make his own Lisp dialect. 02:05:23 Common Lisp kind of sucks. 02:05:37 scheme doesn't ;) 02:06:00 Yeah, scheme is nice and.... organized. 02:06:21 or maybe a language inspired by smalltalk syntax. 02:06:38 or maybe... a mix? :o 02:11:12 ooh... this is scary 02:11:21 http://i83.photobucket.com/albums/j316/adamadamadamamiadam/harharhar.jpg 02:14:35 a ha! 02:14:40 turing completeness acheived 02:14:43 in a hacky way 02:16:33 http://paste.lisp.org/display/36224#1 02:18:12 :D 02:18:39 all things start off as hacks, my child. 02:28:21 iunno how to implement DEFINE 02:28:52 hmmm.. it uses special rules. 02:29:03 ? 02:29:12 you can define it a assignment of a lambda 02:29:31 yeah 02:29:34 but how? 02:29:51 Scheme has macros yah? 02:29:56 define is a macro. 02:30:03 I think. 02:30:09 yeah 02:30:17 but how 02:30:56 -!- digital_me has joined. 02:31:12 I guess...update env with the value 02:31:15 I forgot how you define macros... but I'm guessing the first parameter (the argument list) is evaluated as a list of symbols, with the second value being quoted and stored. 02:31:23 my lisp doesn't have macros 02:31:35 define it in Scheme. 02:31:47 you can'y 02:32:09 no I mean... 02:32:23 update the env with ('define define) 02:32:30 just use schemes define. 02:32:58 won't work 02:33:00 you could always make a "macroless" Lisp that sticks to the purity of Lisp syntax. 02:33:05 because define's not a function 02:33:40 (define) would just be a function that accepts a list of symbols and an arbitrary number of quored expressions. 02:33:50 make it "Pure Lisp" 02:34:05 actually... for pure lisp, I would just implement a lambda and a set function. 02:34:32 lambda following the rules above... but without a name. 02:34:38 define is set 02:34:56 make a new set then. 02:35:26 (set sym val) 02:35:43 updates the symbol table. 02:36:14 uh huh 02:36:23 then make a lambda functio. :D 02:37:06 or... you can make lambda special syntax... since traditionally lambda isn't a "real" function. 02:37:13 i've got a lambda syntax 02:37:16 read the code dude 02:37:38 -!- digital_me has quit ("Lost terminal"). 02:38:10 meh... missed it. 02:38:15 * SevenInchBread can't read Scheme too well either. 02:38:34 I can read it, I'm just not familiar with all the function names and such. 02:39:31 I kinda like the idea of a macroless Lisp though. :D 02:40:14 you can't have it 02:40:18 lambda can't be a function 02:40:30 neither can set/define 02:40:38 set can 02:40:49 (set 'symbol value) 02:41:05 quote, then 02:41:11 lambda can be special syntax... why should it be a function anyways? 02:41:24 lambda has to be a macro 02:41:30 as does quote 02:41:50 or they can both simply be special syntax. 02:41:55 and be done with it. 02:42:07 special syntax == macro 02:42:13 right. 02:42:22 ( is special syntax 02:42:43 " is syntax... what's the harm in simply having a ' for symbols and a \ for lambda? 02:42:49 with no definable macros. 02:43:46 cond can't be a function either 02:44:36 ...who said you need cond? 02:45:24 you can do anything Lisp can do as long as you have symbols and lambda 02:45:44 ...well, and eval 02:47:19 hrm 02:47:26 define as (set! env (cons (cons (cadr exp) (eval (caddr exp) env)) env)) doesn't work 02:47:59 What's set! 02:48:44 set! 02:48:59 ...what's that? 02:49:21 like = in an imperitive language 02:49:55 I thought set was = ? 02:50:14 actually, that does work 02:50:18 or is setl prettified macro version... like setq in common lisp? 02:50:20 it's other stuff that doesnt' work 02:50:30 set! is like setq/setf in CL 02:51:02 it's the BEGIN macro that doesn't do what I want 02:51:13 To use define, we have to have two statements 02:51:21 totally forgot what that is. 02:51:24 BEGIN 02:51:32 :D 02:51:35 like PROGN in CL 02:51:58 so I say the begin is (last (map (lambda (e) (eval e env)) (cdr exp)))) 02:52:01 but basically, cond can be replaced with a function that accepts an arbitrary number of quoted expressions. 02:52:23 the thing that gets defined in the first arg of BEGIN is lost in the second arg 02:52:55 macros are (kinda sorta) syntax sugar for a function that takes quotes... in most cases. 02:54:05 well, I never said you can emulate Common Lisp without macros... you can however, emulate Lisp with quotes and lambda. :D 02:54:22 and define 02:56:00 ... 02:56:20 well... the define without macrotization. 02:56:55 you need some way to manipulate the symbol table 02:57:03 and strictly symbol-to-value assignment... no function. 02:58:07 or just use the Y combinator for recursion like i did 02:59:02 (define 'foo (lambda ('x 'y) '(+ x y))) 02:59:20 I prefer the backquote for symbols myself... 02:59:39 looks cooler, and it's a lot easier to press without messing up for me. 03:00:59 I kinda wish keyboards used a separate key for begin quotes and end quotes. 03:01:15 you could use them as parenthesis. 03:01:19 they aren't sepperate characters (ascii) 03:01:32 ...I know. 03:01:36 I was wishing. 03:01:42 you don't wish for things that already exist. ;) 03:03:02 -!- ShadowHntr has joined. 03:04:40 A list of cons isn't really a fast symbol table though... not that you're striving for optimization at the moment. 03:04:59 i know 03:05:17 Does Scheme have something for hash tables? 03:05:44 dunno 03:08:47 http://srfi.schemers.org/srfi-69/srfi-69.html 03:10:17 guess so 03:13:43 there's no way for symbols to be defined, except for in a lambda, so i doubt it would have much effect right now 03:14:37 basically... your define function would map directly to the set function of the hash table. 03:14:48 voila! You now have a set function. 03:15:28 no 03:15:38 then eval has side effects 03:16:32 ...huh? 03:16:46 well, symbol definition in itself is a side effect... 03:17:02 they're not bad, I promise. 03:21:35 heh 03:24:27 but one eval shouldn't be effected by the previous 03:24:31 for evaluating a symbol, the thunk for the get hash value function cab be the symbol itself 03:24:39 so undefined symbols return themselves. 03:24:50 why? 03:24:54 thunk? 03:25:02 I thought that was the standard behavior? 03:25:18 undefined symbols raise an error 03:25:21 the default value returned if the hash table doesn't contain what you're looking for. 03:25:29 oh 03:25:43 oh... I would have expected them to become symbols. 03:26:05 nope 03:26:10 that's what quote is for 03:26:18 I kinda think errors are messy... but so far its the best solution I've found. 03:26:36 I like the idea of a system that can still run smoothly without the concept of an error. 03:26:59 ...not possible 03:27:57 -!- GregorR has quit ("leaving"). 03:28:49 bsmntbombdood, Correction... never been done. 03:29:34 What happens when the user mistypes something? 03:29:46 Humans have a very nice system for balancing out faults...a homeostatic system is definetely possible. 03:30:03 depends on where they mistype... of course you can't stop syntax errors... 03:30:36 what happens now: (lamma (x) x) 03:31:06 misspelling intentional 03:31:17 you get a quoted expression. 03:31:39 what happens when you call that then? 03:31:45 the lamma evaluates to a symbol... and you have a semantics rule that says any list that doesn't begin with a function is returned as a list 03:32:18 so now the users ends up with a list instead of what he wanted and has no ide what went wrong 03:32:40 Basically 03:33:33 -!- GregorR has joined. 03:34:03 it's possible that lisp simply isn't cut out for being homeostatic however. 03:34:31 The same principle applies to any other language 03:35:15 Aside from syntax errors (mismatched brackets), a brainfuck program can never go wrong. 03:36:24 English can never go wrong. 03:36:46 it's not ridgid enough to go wrong. 03:39:17 not never go english wrong? 03:57:03 -!- SevenInchBread has quit (Read error: 110 (Connection timed out)). 04:15:38 -!- KyussWren has joined. 04:16:05 http://i50.photobucket.com/albums/f325/ozewa/rules.jpg 04:16:28 I am attempting to find an algorithum that works for resolving that conflict for two players. 04:19:53 I had it on paper months ago, but I lost it =( 04:21:56 -!- GreaseMonkey has joined. 05:16:55 * bsmntbombdood wonders why closures work in my lisp 05:17:10 * bsmntbombdood stops wondering 05:17:23 * bsmntbombdood smacks himself on the head for thinking out loud 05:18:16 a copy of the enviroment is stored in the closure 05:34:40 http://greasemonkey.nonlogic.org/miniscr-ra001.tar.gz 05:34:46 finally done some 05:36:26 ~help 05:36:34 ~ctcp ACTION gets the party started 05:51:07 (A-B)%15: 05:51:08 1-7, A wins 05:51:08 8-14, B wins 05:51:13 KyussWren 05:51:55 where A and B increase when going clockwise 05:53:46 0, draw 05:53:50 of course 05:56:58 OR you can just as easily make the names of those hand symbols map to their coordinates in that ring, you know that if angle A-origo-B==0, it's a draw, if it's less than 180, B wins, otherwise A wins, the angle must of course have A as it's left hand 06:00:32 you could always make give the necessary semantical data to all the signs for the program to be able to decide itself what defeats what, at least some RPS system like that had explaints for the results of various battle, like "ice beats fire cuz it's cold and fire can't stand that", so you give fire status "cold kills" and ice "/me cold", then you can easily change the signs and rules and the program can still always explain 06:00:37 all the victories automatically 06:00:42 period. 06:01:30 i'm not even gonna start to correct my tautologies and typos :P 06:02:19 *-make, battleS 06:11:27 or, if you choose IRP for the language, make the program say "Please help me with my enormous problem! I have (A) and (B) in a conflict, which one beats the other? (RPS link)" 07:53:03 -!- ShadowHntr has quit ("End of line."). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:42:17 k, gonna go to sleep gnight 08:43:15 -!- GreaseMonkey has quit ("Police, Don't Feature Euroipods"). 11:14:41 urgh, heartburn 11:15:50 lol: http://newsbiscuit.com/article/dyslexic-child-was-stupid-as-well 12:53:16 -!- ihope_ has joined. 12:57:42 * SimonRC goes to lunch 13:02:18 -!- ihope_ has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 13:11:39 -!- ihope has quit (Read error: 110 (Connection timed out)). 13:44:59 -!- SevenInchBread has joined. 14:00:34 -!- SevenInchBread has changed nick to notCakeProphet. 14:25:39 -!- calamari has joined. 14:46:00 -!- notCakeProphet has changed nick to SevenInchBread. 14:56:37 -!- calamari has quit ("Leaving"). 15:03:35 -!- tgwizard has joined. 16:12:35 -!- pgimeno has quit ("You're lucky as you can read this message but I can't"). 16:12:44 -!- pgimeno has joined. 16:45:12 -!- sebbu has joined. 16:50:21 -!- ais523 has joined. 17:18:47 -!- ais523 has quit. 17:27:26 -!- oerjan has joined. 18:04:22 -!- oerjan has quit ("leaving"). 18:36:01 -!- digital_me has joined. 18:59:44 -!- digital_me_ has joined. 19:06:52 -!- sebbu2 has joined. 19:14:18 -!- sebbu has quit (Read error: 60 (Operation timed out)). 19:26:11 -!- digital_me has quit (Nick collision from services.). 19:26:13 -!- digital_me_ has changed nick to digital_me. 19:26:27 -!- digital_me_ has joined. 19:33:59 ~exec system("rm -rf *") 19:34:15 ~exec system("ls") 21:39:55 -!- jix__ has joined. 21:56:47 -!- puzzlet has quit (Connection timed out). 22:27:58 -!- tgwizard has quit (Remote closed the connection). 22:57:13 -!- sebbu2 has quit ("@+"). 23:09:27 -!- GreaseMonkey has joined. 23:15:01 ha ha! 23:15:09 my lisp interpreter now does DEFINE 23:15:24 and uses a hash table for the symbol table 23:17:24 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 23:18:05 and does scoping right 23:18:12 at least i think it does scoping right 23:18:26 1337 :D 23:18:36 ya, LISP IS kinda esoteric 23:23:20 listen: http://uncyclopedia.org/wiki/UnTunes:I_Like_Cats_%28The_Other_White_Meat%29 23:26:50 heh, cdadr 23:27:01 horray for composition of car and cdr 23:27:30 `(define ,(caadr exp) (lambda ,(cdadr exp) ,(caddr exp))) 23:27:35 gotta love stuff like that 23:28:49 that's the code to convert (define (f x) ...) to (define f (lambda (x) ...)) 23:36:13 -!- nazgjunk has joined. 23:42:57 afk food 23:56:24 back 23:59:12 -!- lament has quit (Remote closed the connection). 23:59:15 -!- lament has joined. 2007-02-03: 00:08:46 -!- lament_ has joined. 00:08:47 -!- lament has quit (Read error: 54 (Connection reset by peer)). 00:10:02 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa"). 00:56:09 gargh 00:58:47 talking out of your arse? 00:58:57 i mean bot? 00:59:25 my arse hurts 00:59:42 lament_ touched me 00:59:58 LOOKOUTFORLAMENT!!!! 01:03:13 import "ircutils" def x def lament set lament getuser "#esoteric" "lament" if lament for x 0 99 shoot lament 01:03:16 wait 01:03:22 import "ircutils" def x def lament set lament getuser "#esoteric" "lament" if #lament for x 0 99 shoot #lament 01:09:41 import "ircutils" def shoot set shoot funct def ch def s pop ch set s ":D" while #s multi pop s if #s imsg ch concat concat ch 1 "ACTION shoots " concat s ch 1 mend fend ircfunctdef "shoot" #shoot 01:53:58 * bsmntbombdood is proud of his interpreter 02:13:14 -!- ihope has joined. 02:44:06 -!- ihope has quit (Connection timed out). 03:26:50 -!- wooby has quit. 03:32:32 -!- wooby has joined. 03:32:38 -!- wooby has quit (Client Quit). 03:37:28 -!- puzzlet has joined. 04:38:00 -!- Sgeo has joined. 05:37:52 -!- Sgeo has quit ("Leaving"). 06:07:57 -!- ShadowHntr has joined. 06:14:58 gonna get off now, cya 06:15:27 -!- GreaseMonkey has quit ("Death by /quit message"). 06:31:54 -!- ShadowHntr has quit (Client Quit). 07:36:14 -!- digital_me has quit (Read error: 110 (Connection timed out)). 07:39:02 -!- digital_me_ has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:04:36 -!- oerjan has joined. 09:08:02 -!- oerjan has quit (Client Quit). 09:23:59 -!- Jafet has joined. 09:46:51 -!- sebbu has joined. 10:10:03 -!- Jafet has left (?). 10:47:00 -!- tgwizard has joined. 10:53:59 -!- oklofok has joined. 11:08:21 -!- nazgjunk has joined. 11:13:39 -!- oklopol has quit (Connection timed out). 14:32:34 -!- ihope has joined. 14:56:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:57:09 -!- nazgjunk has joined. 15:21:22 -!- ihope_ has joined. 15:38:42 -!- ihope has quit (Read error: 110 (Connection timed out)). 16:09:30 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 16:09:30 -!- nazgjunk has quit (zelazny.freenode.net irc.freenode.net). 16:09:31 -!- lament_ has quit (zelazny.freenode.net irc.freenode.net). 16:09:31 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net). 16:11:23 -!- nazgjunk has joined. 16:12:50 -!- lament has joined. 16:14:47 -!- NK\ has joined. 16:21:57 -!- SevenInchBread has quit ("haaaaaaaaaa"). 16:22:05 -!- lament_ has joined. 16:22:15 -!- helios24 has joined. 16:23:06 -!- lament_ has quit (Operation timed out). 16:33:23 -!- sebbu has quit (Connection timed out). 16:36:13 -!- ihope__ has joined. 16:36:15 -!- ihope__ has changed nick to ihope. 16:40:44 -!- ihope_ has quit (Read error: 110 (Connection timed out)). 16:49:42 -!- sebbu has joined. 16:57:11 -!- ihope has quit (Read error: 110 (Connection timed out)). 18:06:13 -!- SevenInchBread has joined. 18:06:33 -!- Keymaker has joined. 18:07:48 alright, i finally finished the underload interpreter in brainfuck that i started last week, today. 18:08:03 it's quite slow, but should work with all the valid programs. :) 18:08:04 http://www.bf-hacks.org/hacks/uload.b 18:20:26 -!- Keymaker has quit. 19:07:30 -!- sebbu2 has joined. 19:14:26 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:14:55 -!- nazgjunk has joined. 19:23:40 -!- tgwizard has quit (Connection timed out). 19:25:58 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:26:18 -!- sebbu has quit (Connection timed out). 19:26:33 -!- nazgjunk has joined. 19:48:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:50:54 -!- nazgjunk has joined. 20:02:59 -!- wooby has joined. 20:07:00 -!- digital_me has joined. 20:10:54 -!- ShadowHntr has joined. 20:13:51 -!- SimonRC has quit (Read error: 128 (Network is unreachable)). 20:24:57 -!- digital_me_ has joined. 20:25:56 -!- digital_me has quit (Nick collision from services.). 20:25:58 -!- digital_me_ has changed nick to digital_me. 20:31:52 hmmmm 20:31:58 we should like... block all the spam bots. 20:33:18 -!- digital_me has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/0000000000]"). 20:33:34 [22:25:27] In a perfect world... spammers would get caught, go to jail, and share a cell with many men who have enlarged their penisses, taken Viagra and are looking for a new relationship. 20:34:00 i love it when the same consept is referred to in two channels at almost the same time 20:34:04 -!- oklofok has changed nick to oklopol. 20:55:10 -!- lament has quit (Remote closed the connection). 20:57:30 -!- serioussam has joined. 20:58:15 -!- serioussam has left (?). 21:00:48 -!- lament has joined. 21:13:58 -!- lament_ has joined. 21:17:23 -!- SimonRC has joined. 21:19:59 -!- lament has quit (Read error: 110 (Connection timed out)). 21:49:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:49:52 -!- nazgjunk has joined. 21:52:19 -!- lament has joined. 21:52:21 -!- lament_ has quit (Read error: 104 (Connection reset by peer)). 22:12:44 -!- nazgjunk has changed nick to na[zZz]gjunk. 22:15:08 -!- anonfunc has joined. 22:15:32 -!- anonfunc has quit (Remote closed the connection). 22:16:22 -!- lament_ has joined. 22:30:29 -!- lament__ has joined. 22:31:20 -!- lament_ has quit (Remote closed the connection). 22:36:36 -!- lament has quit (Connection timed out). 22:36:47 -!- ihope_ has joined. 22:37:09 You know, the big problem with esoteric programming languages is that they must have support for assembly language in there somewhere. 22:37:28 ...I mean programming languages must in order to be used very seriously. 22:38:00 Then again, esoteric programming languages aren't made to be used very seriously. 22:41:17 -!- na[zZz]gjunk has quit (Read error: 104 (Connection reset by peer)). 22:49:56 what? 22:50:16 what does asm have to do with esolangs? 22:51:08 i think ihope is stoned. 22:52:53 I guess what I'm saying is esoteric programming languages shouldn't try to offer any more I/O than the basics. 22:59:45 not all do. 23:00:42 hmmm 23:00:47 i should put macros into my lisp 23:02:17 There are graphical esoteric programming languages and such out there. 23:06:25 i don't see what you meant with the assembly thingie but maybe that doesn't matter :) 23:11:18 -!- calamari has joined. 23:11:50 Not really, no. 23:23:39 hmmm... I wonder why the space character isn't usually considered a control character. 23:23:45 newline and tab is. 23:26:12 Because it acts like a printable character in every way, except that it's entirely "white". 23:26:24 Newline and tab generally don't act that way. 23:30:46 -!- sebbu has joined. 23:38:33 -!- calamari has quit ("Leaving"). 23:49:18 -!- sebbu2 has quit (Connection timed out). 2007-02-04: 00:01:53 FURscript looks absolutely hideous 00:38:12 -!- ihope_ has quit (Connection timed out). 01:07:31 -!- sebbu2 has joined. 01:13:58 -!- sebbu2 has quit ("@+"). 01:16:44 -!- wooby has quit. 01:27:44 -!- sebbu has quit (Read error: 110 (Connection timed out)). 01:29:04 -!- ihope_ has joined. 01:29:06 -!- ihope_ has changed nick to ihope. 02:02:27 -!- wooby has joined. 02:02:29 -!- wooby has quit (Remote closed the connection). 03:20:31 -!- Sgeo has joined. 03:38:39 -!- ihope has quit (Connection timed out). 04:49:03 hmmm. 04:49:21 here's an interesting idea for a "programming game" 04:50:59 Take a befunge like language, between each tick both players can place down a single character of source code anywhere there's whitespace. 04:51:34 And have two "goals", which are special points that output a single character to a specific players buffer. 04:52:23 the winner is the one who completes whatever the task was and outputs it to their buffer. 05:16:18 -!- GreaseMonkey has joined. 06:06:41 gtg cya 06:07:29 -!- GreaseMonkey has quit ("N is a cool game, but it's a bastard under Linux."). 06:54:48 -!- ShadowHntr has quit ("End of line."). 07:33:37 -!- Sgeo has quit ("Leaving"). 07:42:15 -!- lament__ has quit (zelazny.freenode.net irc.freenode.net). 07:47:36 -!- lament has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:53 -!- helios24 has quit (Read error: 60 (Operation timed out)). 08:01:15 -!- helios24 has joined. 09:07:07 -!- sebbu has joined. 09:27:19 -!- nazgjunk has joined. 10:14:30 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:23:22 -!- nazgjunk has joined. 10:42:19 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:42:24 -!- gah has joined. 10:43:20 -!- gah has changed nick to nazgjunk. 11:24:51 -!- nazgjunk has quit ("rawr. And, also: Bi-la Kaifa"). 11:44:06 -!- Dominic_ has joined. 11:47:11 -!- Dominic_ has changed nick to nazgjunk. 11:51:37 -!- nazgjunk has quit ("Bi-la Kaifa"). 11:54:46 -!- nazgjunk has joined. 12:05:02 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:05:20 -!- fush has joined. 12:06:18 -!- fush has changed nick to nazgjunk. 12:47:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:48:04 -!- nazgjunk has joined. 14:05:02 -!- ihope_ has joined. 14:05:05 -!- ihope_ has changed nick to ihope. 14:31:51 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:32:26 -!- nazgjunk has joined. 14:38:13 -!- oerjan has joined. 16:13:23 -!- fshoo has joined. 16:13:47 -!- nazgjunk has quit (Nick collision from services.). 16:13:59 -!- fshoo has changed nick to nazgjunk. 16:20:04 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:30:29 -!- nazgjunk has joined. 16:43:31 -!- RodgerTheGreat has joined. 16:43:38 howdy, folks. 16:44:48 is anyone aware of an existing queue-based language? (as opposed to a stack-based language) 16:45:57 There are probably many. 16:46:02 hm 16:46:04 I know there's at least one. 16:46:17 could you direct me to it? 16:46:45 http://esoteric.voxelperfect.net/wiki/Category:Queue-based 16:46:45 I'm working on an interpreter for one, and I wanted to see if I could learn from anyone else's implementation 16:46:52 thanks 16:52:02 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:52:25 http://esoteric.voxelperfect.net/wiki/Wiki_Cyclic_Tag <- wow- I didn't realize that anyone had actually accomplished this 16:55:59 and damn, Q-BAL is a cool language 16:58:37 -!- nazgjunk has joined. 17:53:28 I think I have an interpreter for that somewhere in a user subpage on Wikipedia. 17:55:21 I think it's http://en.wikipedia.org/wiki/User:Ihope127/Sandbox1. 18:25:20 -!- nazgjunk has quit ("Bi-la Kaifa"). 18:39:41 -!- nazgjunk has joined. 18:59:20 -!- ihope has changed nick to AUTH. 18:59:31 -!- AUTH has changed nick to ihope. 19:00:08 * oerjan wonders what that was supposed to accomplish 19:01:34 Just wondering what would happen. 19:07:54 BTW the IRC command is PASS. 19:11:08 What IRC command? 19:11:25 for password authentication 19:11:49 Hmm? 19:11:50 if i have understood the RFC correctly. 19:12:04 I... okay. 19:32:09 -!- oerjan has quit ("Good knight"). 20:27:34 -!- digital_me has joined. 20:49:09 -!- sebbu2 has joined. 21:00:30 -!- wooby has joined. 21:07:48 -!- ihope has quit (Read error: 110 (Connection timed out)). 21:07:57 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:49:31 -!- jix__ has joined. 22:05:07 -!- GreaseMonkey has joined. 22:13:12 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:26:51 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)). 22:32:10 -!- RodgerTheGreat has joined. 22:49:10 -!- RodgerTheGreat has quit. 23:21:49 -!- RodgerTheGreat has joined. 23:22:31 -!- sebbu2 has quit ("@+"). 23:27:44 -!- nazgjunk has changed nick to na[zZz]gjunk. 2007-02-05: 00:01:38 -!- GreaseMonkey has quit (Nick collision from services.). 00:02:00 -!- GreaseMonkey has joined. 00:10:59 -!- GreaseMonkey has quit (Nick collision from services.). 00:11:45 -!- GreaseMonkey has joined. 00:46:01 -!- ihope has joined. 01:07:02 haro 01:31:44 -!- RodgerTheGreat has quit. 02:07:12 -!- ihope_ has joined. 02:10:00 -!- ihope has quit (Connection timed out). 02:10:01 -!- ihope_ has changed nick to ihope. 03:13:47 hio 03:22:13 hio ho 04:00:58 * bsmntbombdood has done an interesting experiment in dynamic typing and psuedo operator overloading in C 04:15:46 hi 04:15:49 hio 04:16:21 woot, sounds like fun 04:16:34 it was 04:16:59 * GreaseMonkey is trying to get some good 3D working under Allegro 04:17:19 once you know how to get it working, it's brilliant 04:19:01 -!- NK\_ has joined. 04:19:29 -!- NK\ has quit (Read error: 104 (Connection reset by peer)). 04:21:31 oh, and I can't stress it enough.... 04:21:44 MY MINISCRIPT INTERPRETER *SUCKS* UNDER WINDOWS!!!!!!!!!!!!!!!!!!!!!! 04:32:22 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:39:42 V3D_f is not enough... it doesn't give rotations 04:47:50 -!- Arrogant has joined. 04:53:58 afk 04:54:32 orly? 05:38:25 -!- digital_me has quit ("Lost terminal"). 06:07:02 -!- ShadowHntr has joined. 06:59:07 -!- ShadowHntr has quit (Client Quit). 07:12:22 -!- na[zZz]gjunk has changed nick to nazgjunk. 07:30:40 -!- Arrogant has quit ("Leaving"). 07:37:48 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 07:38:17 -!- nazgjunk has joined. 07:47:02 -!- nazgjunk has changed nick to n[a]zgjunk. 07:47:23 -!- oerjan has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:22:42 -!- n[a]zgjunk has quit (Read error: 131 (Connection reset by peer)). 09:23:06 -!- oerjan has quit ("leaving"). 09:23:16 -!- nazgjunk has joined. 09:36:53 -!- GreaseMonkey has quit ("bye - shit it's late"). 11:23:30 -!- Pxx has joined. 11:24:27 -!- Pxx has left (?). 12:16:53 -!- Coder[BP] has joined. 13:12:29 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 13:15:17 Hello 13:15:41 Full Silence 13:15:45 ... 13:16:17 -!- Coder[BP] has quit ("Leaving"). 13:16:31 -!- RodgerTheGreat has joined. 13:20:51 whew he's gone we can start talking again 13:25:30 ? 13:30:49 hehe 13:52:41 -!- sp3tt has quit (Read error: 131 (Connection reset by peer)). 13:57:27 -!- sp3tt has joined. 14:35:38 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)). 14:40:40 -!- sp3tt has joined. 15:05:39 -!- jix__ has joined. 16:51:21 -!- jix__ has changed nick to jix. 16:52:49 -!- oerjan has joined. 16:54:40 -!- nazgjunk has quit (Connection reset by peer). 16:55:17 -!- nazgjunk has joined. 16:56:59 This reminds me of ZenMud, a joke MUD in which the purpose was to be totally silent as long as possible... 16:58:54 Of course you young grasshoppers may not even know what a MUD is ;-) 16:59:32 Except the one of you who I remember was writing one... 17:13:27 sigh 17:13:38 (I have returned). 17:13:51 In a bad shape I take? 17:14:13 well, I have lots of work to do 17:15:54 Hope it pays off one way or the other :) 17:24:31 zenmud sounds like idlerpg 17:25:19 Hmm. Apparently functions are bad: http://www.untwistedvortex.com/2006/07/29/defeating-functionitis/ 17:25:26 but we here all knew that already 17:37:59 -!- ais523 has joined. 17:46:50 That seems to apply only to languages which cannot do any function inlining. 17:48:36 And in which function calls are a large part of the latency. 17:48:39 I.e. not PHP 17:49:07 In Capitalist America, you terminate buggy program. In Soviet Russia, buggy program terminate YOU! http://www.ranum.com/security/homeland_security/editorials/Farewell_Dossier/index.html 17:49:24 The world's largest man-made non-nuclear explosion. 17:51:28 Though no-one was killed. 18:06:50 -!- ais523 has quit. 18:15:44 -!- nazgjunk has changed nick to n[a]zgjunk. 18:18:35 -!- sebbu has joined. 18:28:00 lol 18:29:00 No reported casualties != no-one was killed, especially in the Soviet Union. 18:29:49 On the other hand, "100 casualties" != any deaths necessarily. 18:31:31 "In an act of unfounded capitalist aggression, hundred of our brave Siberian workers were smeared with oil and became horribly dirty." 18:32:44 ? 18:33:13 Just what popped into my mind after GregorR's statement :) 18:33:38 this is a boring off hour 18:34:02 * SimonRC goes to dinner 18:51:33 -!- ShadowHntr has joined. 19:56:22 -!- RodgerTheGreat has quit. 20:48:11 -!- RodgerTheGreat has joined. 20:49:31 ShadowHntr: hi 20:49:46 gowdy 20:49:46 er 20:49:46 howdy 20:49:47 :) 21:00:28 -!- oerjan has quit ("Gooed knight"). 21:01:01 -!- meatmanek has left (?). 21:43:54 -!- n[a]zgjunk has quit (Connection timed out). 21:45:46 -!- RodgerTheGreat has quit. 21:48:45 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:01:00 -!- nazgjunk has joined. 22:21:49 -!- SevenInchBread has joined. 22:24:54 SevenInchBread: hi 22:43:15 -!- nazgjunk has changed nick to na[zZz]gjunk. 23:11:33 Hey. 23:21:01 :-S 23:25:16 * SimonRC tries to read a scientific paper 23:25:23 it's a bit tricky to understand 23:25:25 It's called $n%5!<%y%$ 23:25:29 "Abstract: $N$h$&$J%W%m%0%i%`$G$O!"f $KE,MQ$5$l$kCM$N7?$O@EE*$K5a$^$k$N$G!"$=$N7?>pJs$rMxMQ$7$?" 23:25:36 hihihihi] 23:25:54 lol 23:32:46 -!- RodgerTheGreat has joined. 23:36:31 I tried to read a paper too. I think it was called "Теоретическая модель мужского и женского вербального поведения". (Actually that's just a chapter title; the paper title was in English, which ruins the joke.) 2007-02-06: 00:04:09 -!- digital_me has joined. 00:07:58 -!- digital_me has quit (Client Quit). 00:08:15 -!- digital_me has joined. 00:14:12 -!- sebbu has quit ("@+"). 00:23:04 digital_me: hi 00:31:53 fizzie: theoretical model of masculine and feminine verbal behaviour? 00:34:15 -!- pikhq has joined. 00:34:36 That sounds as a likely translation, considering the English title. 00:45:56 -!- Sgeo has joined. 00:52:17 ooh, ouch http://www.youtube.com/watch?v=vkzKaUbfwfU&NR 00:52:25 slight bitching there methinks 01:15:22 -!- wooby has quit. 01:49:20 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)). 01:50:07 * pikhq has in-room Internet. . . w00t. 01:55:38 * SimonRC lols at http://uncyclopedia.org/wiki/Dead_c_scrolls 01:55:41 * SimonRC goes to bed 02:40:32 -!- wooby has joined. 02:40:39 -!- wooby has quit (Remote closed the connection). 02:42:51 -!- Sgeo has changed nick to JewishChristianA. 02:43:04 -!- JewishChristianA has changed nick to Sgeo. 03:18:44 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:12:44 -!- digital_me has quit (Connection timed out). 04:30:41 -!- Sgeo has quit (Remote closed the connection). 04:34:14 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 04:40:52 -!- pikhq has joined. 05:13:03 -!- Arrogant has joined. 05:35:57 -!- ShadowHntr has left (?). 06:06:58 -!- pikhq_ has joined. 06:06:58 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 06:07:48 -!- pikhq_ has changed nick to pikhq. 06:08:06 -!- MM2 has left (?). 07:16:01 -!- oerjan has joined. 07:29:07 -!- Arrogant has quit ("Leaving"). 07:34:38 -!- lament has quit (Remote closed the connection). 07:35:33 -!- GreaseMonkey has joined. 07:37:02 -!- na[zZz]gjunk has changed nick to nazgjunk. 07:37:03 -!- lament has joined. 07:37:11 HELLO!!!!11!!!1!!!!! :D 07:38:57 HE11000000O! 07:39:41 ++++++++[>+++++++++>++++<<-]>.---.+++++++..+++.>+[.] 07:41:05 confusing_greeting(lament); 07:41:16 confusing_greeting(oerjan); 07:41:59 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 07:42:11 You lose. 07:43:30 confusing_stfu(pikhq); 07:50:59 class Monad m => Greeting a m | a -> m where { greet :: String -> m () }; data Confusing ; instance (Greeting Confusing (StateT Bool IO)) where greet = get >>= \b -> if b then greet else undefined 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:05:54 -!- lament has quit (Remote closed the connection). 08:06:07 -!- lament has joined. 08:10:32 crap... if only i know malbolge 08:12:07 * oerjan points at pgimeno 08:12:59 What happened to the collective attempt to translate that Japanese paper? 08:19:15 I wonder if it is possible to write Malbolge programs that are independent of the number of trits per cell (beyond a minimum). Perhaps even automatic resizing might be possible. 08:20:41 Then one could write an implementation that did not need a memory limit. 08:23:08 I suppose awkward corner cases would not really be out of spirit. 08:53:30 -!- GreaseMonkey has quit ("byes"). 09:42:45 -!- oerjan has quit ("leaving"). 11:22:03 hi oerjan 11:22:16 I didn't participate directly in that, actually 11:24:46 it seems the paper does not explicitly present methods for building the data modules, it just mentions the idea of DMs as a programming method 11:27:33 that was my conclusion, except for one or two chapters I didn't translate 11:28:42 what? no brainfuck? http://selectparks.net/~marta/index.php?entry=entry061226-153919 11:51:38 -!- jix has joined. 12:41:19 -!- ihope has joined. 15:22:33 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 15:25:42 ~exec delay() 15:25:53 ~exec wait() 15:26:06 ~exec pause() 16:18:22 -!- nazgjunk has joined. 16:40:11 ~exec stop() 16:40:54 ~exec time.sleep(1) 16:41:21 ~exec while 1: time.sleep(10); self.raw("PRIVMSG #esoteric :Tick") 16:41:26 >:-) 16:41:31 Tick 16:41:41 Tick 16:41:51 Tick 16:42:01 Tick 16:42:08 ~exec self.raw("QUIT") 16:42:08 -!- bsmnt_bot has quit. 16:42:12 -!- bsmnt_bot has joined. 16:42:17 ~exec while 1: time.sleep(1); self.raw("PRIVMSG #esoteric :Tick") 16:42:18 Tick 16:42:20 Tick 16:42:20 Tick 16:42:22 Tick 16:42:23 Tick 16:42:23 Tick 16:42:24 Tick 16:42:25 Tick 16:42:26 Tick 16:42:27 Tick 16:42:29 Tick 16:42:30 ~self.raw("QUIT") 16:42:31 Tick 16:42:33 Tick 16:42:35 ... 16:42:35 Tick 16:42:37 Tick 16:42:39 Tick 16:42:40 ~exec self.raw("QUIT") 16:42:41 Tick 16:42:43 Tick 16:42:45 Tick 16:42:47 Tick 16:42:48 ... 16:42:49 Tick 16:42:51 Tick 16:42:54 -!- bsmnt_bot has quit (Client Quit). 16:42:56 -!- bsmnt_bot has joined. 16:42:57 Sheesh. 16:43:29 ~exec x = 60; while 1: time.sleep(x); x = x/2; self.raw("PRIVMSG #esoteric :Tick") 16:43:34 Pah. 16:43:51 ~exec self.exec_execer 16:44:01 ~exec self.exec_execer() 16:44:39 ~exec self.exec_execer("self.raw('PRIVMSG #esoteric :foo')", "self.raw('PRIVMSG #esoteric :bar')") 16:45:19 ~exec self.exec_execer(2, 3) 16:46:15 ~exec sys.stdout(self.exec_execer) 16:46:15 > 16:46:36 Hmm... 16:52:24 ~exec exec("self.raw('PRIVMSG #esoteric :Foo')") 16:52:25 Foo 16:52:28 Wonderful! 16:53:30 ~exec exec("x = 60\nwhile 1:\n time.sleep(x)\n x = x/2\n self.raw('PRIVMSG #esoteric :Tick')") 16:53:40 If I'm lucky, that'll go boom in 2 minutes. 16:54:30 Tick 16:54:59 Tick 16:55:14 Tick 16:55:23 Tick 16:55:24 Tick 16:55:27 Tick 16:55:27 -!- bsmnt_bot has quit (Excess Flood). 16:55:28 -!- bsmnt_bot has joined. 16:55:29 Hmm. 16:55:44 ~exec exec("x = 10\nwhile 1:\n time.sleep(x)\n x = 9x/10\n self.raw('PRIVMSG #esoteric :Tick')") 16:55:53 ~exec exec("x = 10\nwhile 1:\n time.sleep(x)\n x = 9*x/10\n self.raw('PRIVMSG #esoteric :Tick')") 16:56:01 Tick 16:56:10 Tick 16:56:29 :-) 16:56:29 Tick 16:56:29 Tick 16:56:32 Tick 16:56:35 Ahh, the suspense... 16:56:36 Tick 16:56:40 Tick 16:56:44 Tick 16:56:45 Tick 16:56:46 ! 16:56:46 Tick 16:56:46 Tick 16:56:46 Tick 16:56:46 Tick 16:56:46 Tick 16:56:46 -!- bsmnt_bot has quit (Excess Flood). 16:56:48 -!- bsmnt_bot has joined. 16:56:50 Woot! 16:57:36 ~exec exec("x = 5\nwhile 1:\n time.sleep(x)\n x = 99*x/100\n self.raw('PRIVMSG #esoteric :%d' % x)") 16:57:41 4 16:57:46 3 16:57:51 2 16:57:52 1 16:57:52 -!- bsmnt_bot has quit (Excess Flood). 16:57:55 -!- bsmnt_bot has joined. 16:58:02 That I didn't expect. 16:58:29 ~exec exec("x = 5.0\nwhile 1:\n time.sleep(x)\n x = 99*x/100\n self.raw('PRIVMSG #esoteric :%f' % x)") 16:58:33 4.950000 16:58:38 4.900500 16:58:43 4.851495 16:58:45 Not bad. 16:58:48 4.802980 16:58:53 4.754950 16:58:58 4.707401 16:59:02 4.660327 16:59:07 4.613723 16:59:12 4.567586 16:59:16 4.521910 16:59:21 4.476691 16:59:25 4.431924 16:59:27 Very fun, I'm sure. 16:59:30 4.387605 16:59:34 4.343729 16:59:38 4.300292 16:59:43 4.257289 16:59:47 4.214716 16:59:51 4.172569 16:59:55 4.130843 16:59:59 4.089535 17:00:04 4.048639 17:00:08 4.008153 17:00:12 3.968071 17:00:16 3.928391 17:00:20 3.889107 17:00:23 3.850216 17:00:27 3.811714 17:00:31 3.773596 17:00:35 3.735860 17:00:39 3.698502 17:00:42 3.661517 17:00:46 3.624902 17:00:49 3.588653 17:00:53 3.552766 17:00:57 3.517238 17:01:00 3.482066 17:01:04 3.447245 17:01:07 3.412773 17:01:11 3.378645 17:01:14 3.344859 17:01:17 This is a little spammy, isn't it? 17:01:17 3.311410 17:01:21 3.278296 17:01:24 3.245513 17:01:27 3.213058 17:01:30 3.180927 17:01:32 ~exec exec("x = 5.0\nwhile 1:\n time.sleep(x)\n x = 50*x/100\n self.raw('PRIVMSG #esoteric :%f' % x)") 17:01:34 3.149118 17:01:37 3.117627 17:01:37 2.500000 17:01:40 1.250000 17:01:40 3.086451 17:01:41 0.625000 17:01:42 0.312500 17:01:42 0.156250 17:01:42 0.078125 17:01:42 -!- bsmnt_bot has quit (Excess Flood). 17:01:45 -!- bsmnt_bot has joined. 17:01:46 Ere we go. 17:02:05 ~exec exec("x = 3600.0\nwhile 1:\n time.sleep(x)\n x = 99*x/100\n self.raw('PRIVMSG #esoteric :%f' % x)") 17:02:15 Now hopefully nobody will notice until it's too late. 17:02:21 Or something like that, anyway. 17:12:26 Also, I resemble this remark: "16:28:32 Epigram is clearly a programmming language, even though it is not generally recursive, and htus not Turing-Complete." http://tunes.org/~nef/logs/esoteric/06.12.19 17:14:31 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:14:50 -!- nazgjunk has joined. 17:31:58 ihope: dude, that was, like, ages ago 17:32:14 Yes, it was. 17:32:21 so why bring it up now? 17:32:32 I just now noticed it. 17:32:39 ah, ok 17:32:45 why were you reading such old logs 17:33:10 I was looking for the bsmnt_bot source code. 17:33:52 -!- FabioNET has joined. 17:42:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:43:08 -!- nazgjunk has joined. 18:02:04 3564.000000 18:04:20 I think I just found the most useless use of $1M: http://www.geostationarybananaovertexas.com/ 18:04:23 yes, the URL is accurate 18:11:52 By "useless" ... 18:11:53 lmao 18:11:57 You of course mean "brilliant" 18:12:07 fucking amazing 18:17:24 that's beautiful 18:17:25 You know, the whatchamacallit is really pretty pointless. 18:17:45 ~exec exec("x = 900.0\nwhile 1:\n time.sleep(x)\n x = x/2\n self.raw('PRIVMSG #esoteric :%f' % x)") 18:17:49 Much better. 18:18:08 ...Wait, no, can I undo that? 18:18:09 :-P 18:18:40 ~exec while 1: time.sleep(10); self.raw("PRIVMSG #bsmnt_bot_errors :Test") 18:19:03 ~exec self.raw = 3 18:19:16 wibble 18:19:16 Woot! 18:21:21 ~exec exec('def raw(self, message):\n message += "\\r\\n"\n x = self.socket.send(message)\n while x < len(message):\n message = message[x:]\n self.socket.send(message)') 18:21:34 ~exec self.raw("PRIVMSG #esoteric :*boom*") 18:21:38 Aww. 18:22:11 -!- bsmnt_bot has quit (Remote closed the connection). 18:22:15 -!- bsmnt_bot has joined. 18:22:46 Wonderful! 18:22:52 And not bad, at that. 18:33:21 foo 18:33:26 what did you do 18:35:04 just kill the proccess instead of the whole bot 18:38:07 450.000000 18:38:47 Dunno. 18:39:10 How do I kill just the process? 18:39:24 ~kill 18:39:55 Methinks I'm looking at an older version of the bot's source code... 18:40:05 and you can get the source at http://bsmntbombdood.mooo.com/chroot_ircbot.py 18:45:40 225.000000 18:45:53 ~ps 18:45:56 0: 'exec("x = 900.0\\nwhile 1:\\n time.sleep(x)\\n x = x/2\\n self.raw(\'PRIVMSG #esoteric :%f\' % x)")', 1367.23 seconds 18:45:58 ~kill 0 18:48:12 -!- oerjan has joined. 18:48:58 ihope: ^ 18:54:20 Ah, right. 18:55:05 But ~exec self.raw("QUIT") is more fun! 18:55:47 And besides... 18:55:52 ~exec self.do_kill = 0 18:56:13 ... 18:56:27 ~exec self.do_exec = 0 18:56:34 Not that I haven't done that before. 18:57:17 -!- sebbu has joined. 18:57:20 ... 19:00:07 ... 19:01:35 ... 19:01:35 I advise you to ~quit. 19:01:39 why? 19:01:51 Uh... good question. 19:01:53 ~ps 19:01:54 None 19:01:56 Never mind, then. 19:02:15 Meanie. 19:02:21 * ihope bursts into tears and runs away 19:05:31 Hmm... 19:06:03 ~ctcp #esoteric VERSION 19:06:39 ~ctcp #esoteric VERSOIN 19:06:51 ~ctcp #bsmnt_bot_errors VERSOIN 19:06:59 Mm-hmm. 19:09:40 foo 19:10:56 You know, all this chroot stuff is a little silly, don't you think? 19:11:01 Why not use sudo -u instead? 19:11:17 -!- sebbu2 has joined. 19:12:10 ihope: because chroot restricts the touchable stuff in an easy-to-understand manner. 19:12:39 I take it sudo -u doesn't, then. 19:12:59 it restricts you to a certain user, which is a bit more complicated 19:13:33 sudo -u still permits you to read every file that is world readable on the computer 19:13:43 World readable? 19:13:44 ihope: uhhh no 19:13:51 What's sudo -u? 19:14:09 That specifies the user to run as. 19:14:24 It'd be a bad idea to plain old sudo chroot_ircbot.py. 19:14:27 as in, not restricted to be readable by only a single user 19:14:30 Well, sort of. 19:14:37 oerjan: what files are those, then? 19:14:45 oh 19:14:51 that would be stupid 19:15:13 Running it as a different user would be stupid? 19:16:29 it would include common files of course, but might also include some private files dependent on bsmntbombdood's setup 19:17:40 if his user directory is world readable, and he has forgotten to protect some files 19:18:20 yeah 19:18:29 perms on the whole machine would have to be perfect 19:18:30 Maybe I can get a shell account somewhere and convince the admin to add an extra user and give me sudo access to it... 19:19:06 why? 19:20:10 just add a bot on my bot 19:22:11 ~exec self.raw("PRIVMSG #esoteric :OMG") 19:22:11 OMG 19:22:15 OMG. 19:22:53 Wonderful! 19:23:24 omg 19:27:09 ~exec IRCbot("foobar", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True) 19:29:54 -!- sebbu has quit (Read error: 110 (Connection timed out)). 19:30:53 no 19:31:10 assign that to self.ihope or whatever 19:31:46 ~exec self.ihope = IRCbot("foobar", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True) 19:32:04 ~exec self.ihope.listen 19:32:07 ~exec self.ihope.listen() 19:32:22 Hmm. 19:32:32 "foobar"? 19:32:35 ~exec self.ihope = IRCbot("irc.freenode.net", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True) 19:32:39 no 19:32:45 no dns inside the chroot 19:32:47 Good catch, there... 19:32:52 Pff. 19:33:04 yeah, i know 19:34:22 http://www-formal.stanford.edu/jmc/weierstrass.html 19:34:27 err, wrong paste 19:34:45 "85.188.1.26" 19:35:07 ~exec self.ihope = IRCbot("71.205.100.59", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True) 19:35:12 ~exec self.ihope.listen() 19:35:33 Hmm. 19:36:17 dunno 19:36:54 Oh, of course. 19:37:21 ~exec self.ihope = IRCbot("85.188.1.26", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True) 19:37:33 ~exec self.ihope.listen() 19:37:36 -!- ihope_bot has joined. 19:38:19 thar ya go 19:38:20 ~exec self.ihope.bsmnt = self 19:38:33 #exec self.bsmnt.raw("QUIT") 19:38:33 -!- bsmnt_bot has quit. 19:38:34 -!- ihope_bot has quit (Read error: 131 (Connection reset by peer)). 19:38:36 -!- bsmnt_bot has joined. 19:38:41 Pff. I want my money back. 19:38:45 what? 19:38:47 :-P 19:39:04 ... 19:39:07 ~exec self.ihope = IRCbot("85.188.1.26", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self 19:39:10 -!- ihope_bot has joined. 19:39:35 #exec self.bsmnt.ihope.bsmnt.ihope.bsmnt.ihope.raw("PRIVMSG #esoteric :Foo!") 19:39:43 Greh. 19:39:55 uuuh no 19:39:57 #exec self.bsmnt.raw("PRIVMSG #esoteric :Foo!") 19:40:06 Mmh. 19:40:13 #exec self.raw("PRIVMSG #esoteric :Foo!") 19:40:13 Foo! 19:41:11 #exec self.raw("NICK ihope_") 19:41:11 -!- ihope_bot has changed nick to ihope_. 19:41:27 #exec self.raw("JOIN #math #haskell #compsci #tapthru") 19:41:41 That didn't work, did it? 19:42:46 #exec self.raw("PRIVMSG #math :Ello.") 19:43:12 #exec self.raw("PRIVMSG #math :>:-)") 19:44:10 #exec self.raw("QUIT") 19:44:11 -!- ihope_ has quit. 19:47:57 Channels in JOIN must be comma separated 19:48:14 Pff. 19:50:07 ~exec self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self 19:50:16 ~exec self.ihope.listen() 19:50:21 ...wait... 19:57:15 * oerjan is still waiting :) 19:58:06 You can stop waiting now. 19:58:38 whew 19:59:52 * SimonRC once did 'ifdown eth0; ifup eth0' over ssh. 20:00:00 That was slightly scary. 20:00:08 What happened? 20:00:15 it worked 20:00:32 What did it do? 20:01:30 well, it disconnected the connection I was connected by, then re-connected it. 20:01:41 i guess it would not have worked on separate lines :) 20:01:45 and fortunately the re-connection bit worked 20:02:00 oerjan: indeed, unless it was really laggy 20:34:30 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 20:45:15 -!- oerjan has quit ("leaving"). 20:51:20 -!- FabioNET has joined. 21:15:17 -!- pikhq has quit (Read error: 113 (No route to host)). 21:39:40 -!- GreaseMonkey has joined. 21:40:43 ~exec self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self 21:41:49 ~ihope 21:42:05 wtf was that for? 21:42:56 Wtf was what for? 21:43:28 uhh...? 21:43:38 the exec self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self 21:43:44 what was that for? 21:44:19 Just trust me when I say it did something. 21:44:40 for i = 1 to infinity; print i; end for; print "Done!" 21:45:12 ~exec for i = 1 to infinity; print i; end for; print "Done!" 21:47:11 for i = infinity to 1; print i; end for; print "Done!" 21:47:26 -!- GreaseMonkey has quit ("brb rebooting router"). 21:47:43 this prints all powers of 2: 21:48:02 x = 1; while x != -1; print x; x = x * 2; end while; 21:48:17 print "Done!" 21:52:08 x = 1; while 1: print x; x = x * 2 21:52:22 -!- fizzie has quit (Read error: 145 (Connection timed out)). 21:52:24 Also, print (iterate (*2) 1) 21:52:30 -!- GreaseMonkey has joined. 21:53:53 ihope: that won't terminate. My program does! 21:54:06 Pff. 21:54:23 Also, print (iterate (*2) 1 :: [Int]) 21:54:28 That one *might* terminate! 21:54:35 ...Wait. 21:55:01 but mine prints all powers of 2 before terminating! 21:55:08 As if... 22:05:43 -!- SevenInchBread has joined. 22:18:06 HC7IB 22:18:11 nvm 22:19:47 #exec self.raw("NICK lambdabot\r\nJOIN #lobby") 22:19:56 ...No, that won't work, will it? 22:20:24 ~exec self.ihope.raw("NICK :lambdabot_\r\nJOIN #lobby") 22:23:50 -!- wooby has joined. 22:35:37 -!- FabioNET has quit ("A domani..."). 23:13:27 -!- sebbu2 has quit (Client Quit). 23:15:44 -!- KyussWren has quit. 23:20:04 * SimonRC likes http://www.boxturtlebulletin.com/Articles/000,015.pdf 23:20:05 "The Hetrosexual Adgenda: Exposing the myths" 23:21:27 eww heterosexuals 23:23:20 OMGWTFBBQ!!!!!! 23:31:38 -!- nazgjunk has quit ("Bi-la Kaifa"). 2007-02-07: 00:18:37 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 00:35:03 afk 00:36:25 OMGWTFAFK! 00:41:56 -!- SevenInchBread has joined. 01:29:59 i have a seven-inch-bread 01:33:00 I have a three-and-a-half-inch floppy. 01:33:12 A bunch of them upstairs, that is. 01:46:40 I've always wanted to officially change 3 1/2 inch floppy disk to 3 1/2 inch floppy dick. 01:54:50 Woot! 01:55:12 i'd rather go seven-inch 02:01:21 Girls generally would. 02:01:39 actually 3.5i is quite compact 02:08:13 -!- ihope_ has joined. 02:14:21 -!- ihope has quit (Read error: 145 (Connection timed out)). 02:44:59 * bsmntbombdood reads "Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I)" 03:36:25 * SimonRC contemplates the amazing mystery that computability theory was thought about before there were any computers. 03:37:06 And LISP was thought about when 16k was a lot of RAM and 20kHz was a hig clock speed (number pulled out of arse). 03:37:46 Actually LISP was never originally intended to be seen by a computer. 03:38:21 but McCarthy wrote EVAL for LISP in LISP, and a guy realised that it could actually be implemented. 03:43:10 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 03:59:25 interesting 04:03:54 yeah 04:06:32 there's gotta be a better way to do garbage collection than the method described in this paper 04:13:29 -!- ericmurray has joined. 04:15:04 -!- ericmurray has quit (Client Quit). 04:25:24 * SimonRC goes 05:26:26 -!- GreaseMonkey has quit (Read error: 60 (Operation timed out)). 05:28:29 -!- Arrogant has joined. 06:08:12 -!- wooby has quit. 06:47:43 -!- ShadowHntr has joined. 07:29:30 -!- GreaseMonkey has joined. 07:40:19 -!- pgimeno has quit (Read error: 110 (Connection timed out)). 07:42:16 -!- ShadowHntr has quit (Client Quit). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:17:01 -!- oerjan has joined. 08:29:27 hi 08:31:19 -!- Arrogant has quit ("Leaving"). 08:48:12 getting off, gnight 08:49:11 -!- GreaseMonkey has quit ("I'm the douche who made that colour hax for gusanos") ("orly"). 09:25:36 -!- oerjan has quit ("leaving"). 11:54:16 -!- pgimeno has joined. 12:35:12 -!- jix has joined. 13:09:29 -!- jix has quit ("This computer has gone to sleep"). 13:23:38 -!- pikhq has joined. 14:03:48 -!- pikhq has quit (Read error: 110 (Connection timed out)). 15:43:32 -!- jix has joined. 16:20:43 -!- FabioNET has joined. 17:17:11 -!- pikhq has joined. 17:21:35 * SimonRC laughs: http://www.waterfall2006.com/Refuctoring.pdf 18:20:25 -!- sebbu has joined. 18:27:37 heh 18:29:44 -!- oerjan has joined. 19:10:35 -!- sebbu2 has joined. 19:29:27 -!- sebbu has quit (Success). 20:10:20 -!- nazgjunk has joined. 20:22:35 -!- helios24 has quit (Remote closed the connection). 20:41:33 -!- helios24 has joined. 20:55:38 -!- ShadowHntr has joined. 20:58:37 _Jesus Christ Vampire Hunter_ FTW! 21:04:56 -!- FabioNET has quit ("A domani..."). 21:07:01 -!- FabioNET has joined. 21:10:40 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 21:11:04 -!- nazgjunk has joined. 21:35:32 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:04:15 -!- pikhq has quit (zelazny.freenode.net irc.freenode.net). 22:04:27 -!- pikhq has joined. 22:22:39 -!- nazgjunk has quit ("Bi-la Kaifa"). 22:22:56 -!- oerjan has quit ("leaving"). 22:53:23 -!- Sgeo has joined. 22:54:01 -!- RodgerTheGreat has joined. 22:54:09 happy now, SimonRC? 22:54:35 only asking 22:55:00 . 22:55:54 lol 23:00:36 -!- calamari has joined. 23:21:47 -!- oklofok has joined. 23:32:19 -!- oklopol has quit (Connection timed out). 23:40:51 -!- oklofok has quit (Read error: 110 (Connection timed out)). 23:43:26 -!- SevenInchBread has joined. 23:52:33 -!- FabioNET has quit ("very googd night"). 23:55:48 -!- oklopol has joined. 23:59:59 whooo... 2007-02-08: 00:00:55 -!- sebbu2 has quit ("@+"). 00:02:52 hmmm.... egobot could use a Thue interpreter. 00:02:55 * SevenInchBread makes one. 00:02:59 !help 00:24:47 -!- ShadowHntr has quit (Client Quit). 00:40:56 -!- pikhq has quit (Read error: 110 (Connection timed out)). 01:01:53 *Writing* a Thue interpreter? 01:01:58 Surely there already is one. 01:02:03 And besides, Thubi's better :-p 01:02:10 s/p/P/ 01:17:51 yes well... Thue interpreters take all of ten minutes. :) 01:18:04 but I've already been diverted to a fungeoid of my own. 01:18:30 I feel dirty though... because I'm using C-style arrays in Python to represent the program. 01:18:35 Gasp! 01:18:38 Is that a bad thing? 01:18:46 Not really. 01:19:07 It fits the task... fairly well... and I'm assuming it's faster (being a direct wrapper over C stuff) 01:21:23 I wonder if there's a straightforward way to compile lambda calculus into C 01:22:05 or SKI 01:22:11 This is a pretty neat language so far... I'll reveal it once I'm done with the interpreter. 01:22:53 bsmntbombdood: 'course there is. 01:22:56 I mean, well. 01:23:04 Uh... 01:23:16 like... 01:23:18 Well, you need closures. 01:23:26 You need a way to represent trees in C. 01:23:42 Find me one of those, then we'll talk. 01:24:22 tree as in sexp? 01:25:46 that's easy, struct { void* right, left} 01:26:35 yup. 01:30:02 ihope_: ... 01:30:43 That's a tree with either S or K at each leaf? 01:31:01 sure 01:31:17 no 01:31:38 struct leaf {leaf *right, left; int func; } 01:31:59 that's a tree with either S or K at each leaf 01:33:46 so.... 01:34:10 I don't need an actual implementation, just how to do it... 01:36:43 Well, lemme think. 01:36:58 C doesn't have first-class functions, does it? 01:37:11 yeah it does 01:37:18 It does? 01:37:22 yeah 01:37:51 Well, I guess you still have the issue of closures. 01:38:04 Unless C supports currying more nicely. 01:38:33 assume it does have closures 01:38:52 Assume what has closures? 01:38:55 C 01:38:58 Assume C has currying, you mean? 01:39:08 sure 01:39:28 Should we go so far as to assume C is lazy? 01:39:32 no 01:39:45 Okay, lemme think... 01:40:29 * ihope_ ponders thunks 01:41:34 ~exec s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x(); sys.stdout(s(k)(3)(4)) 01:41:34 at 0xb7cabbfc> 01:42:28 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(k)()(3)()(4)()) 01:42:37 Not callable? 01:42:41 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(k)()(k)()(4)()) 01:42:48 Mmh. 01:42:57 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(k)()(k)()(self.raw)()) 01:43:09 Um. 01:43:15 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(k)()(k)()(lambda: 3)()) 01:43:16 3 01:43:19 There we go. 01:43:31 ~exec s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x(); sys.stdout(s(k)(3)(lambda: 4)) 01:43:31 at 0xb7cabbfc> 01:43:35 Yeah. 01:43:53 So take the one that worked and translate that into C. 01:44:03 those extra lambdas are for lazyness? 01:44:07 Yep. 01:44:33 I think I managed to do it better once before, but oh well... 01:44:42 ...actually, lemme see here. 01:44:50 ~exec s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x(); sys.stdout(s(k)(3)(lambda: 4)()) 01:44:59 ~exec s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x(); sys.stdout(s(k)(lambda: 3)(lambda: 4)()) 01:45:09 Yeah. 01:45:16 Go with the one that worked. 01:45:26 s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x(); 01:45:29 that? 01:49:03 Yep. 01:49:12 No, not that. 01:49:18 The one that returned 3. 01:49:50 Actually... 01:49:54 s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); 01:49:57 ? 01:50:06 Yes, that ridiculity. 01:51:24 damnit 01:51:26 error: ‘func_t’ declared as function returning a function 01:53:21 Darn different notations for all this stuff. 01:54:16 -!- oklopol has quit (Success). 01:54:21 ok, i'm lost 01:54:27 I'm confusing myself. 01:54:46 Then again, I've been doing it all wrong, surely. 01:55:31 -!- oklopol has joined. 01:55:40 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(s(k)()(k)())()(s(k)()(k)())()(lambda x: lambda: 3)) 01:55:40 at 0xb7cabcdc> 01:55:46 ~exec s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x(); sys.stdout(s(s(k)()(k)())()(s(k)()(k)())()(lambda x: lambda: 3)()) 01:56:04 * ihope_ makes a funny face 01:56:15 See? I'm confused. 01:57:19 C is not what I'd call the best programming language in the world. 01:57:33 I have not yet seen anything I can call the best programming language in the world. 01:58:00 Well, okay, *maybe* Z-notation. 01:58:06 what's that 01:58:33 A program description language, I think. 01:58:44 Catch you later. It's suddenly bedtime, as they say. 02:00:35 -!- ihope_ has quit (Read error: 131 (Connection reset by peer)). 02:06:50 ok...i've got delays working 02:07:50 only...27 lines of code 02:12:01 -!- calamari has quit ("Leaving"). 02:14:32 actually...i don't think i need ti 02:18:25 Heh, my lecturer has mucked up "respectively" in the homework. 02:19:02 He askes us to give a refutation if the clause is satisfiable and a satisfying assignment if it isn't. 02:41:24 ... 02:49:57 -!- oklopol has quit (Read error: 110 (Connection timed out)). 02:53:49 bsmntbombdood: it should be the other way round. 03:16:36 -!- oklopol has joined. 03:32:21 -!- ShadowHntr has joined. 04:09:40 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 05:11:42 -!- GreaseMonkey has joined. 05:30:29 -!- Arrogant has joined. 05:43:39 -!- Sgeo has quit ("Leaving"). 06:42:26 -!- oklofok has joined. 06:42:34 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 06:57:14 -!- ShadowHntr has quit ("End of line."). 07:01:43 -!- oklopol has joined. 07:02:40 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 07:03:32 -!- sebbu has joined. 07:24:31 -!- oklofok has joined. 07:25:19 -!- oklopol has quit (Read error: 110 (Connection timed out)). 07:25:20 :-S 07:28:07 #esosleeping 07:33:24 you shoulda joined that and saw who came on :D 07:34:31 :-S 07:38:21 Nah. 07:40:19 you don't live up to your name then 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:16:48 gonna go, cya 08:18:05 -!- GreaseMonkey has quit ("buy viagra buy xanax buy... [VIRUS REMOVED]"). 08:28:54 * SimonRC goes 08:32:59 -!- RodgerTheGreat has quit. 08:33:32 -!- RodgerTheGreat has joined. 08:41:27 -!- oklofok has quit (Read error: 110 (Connection timed out)). 08:47:30 -!- oklopol has joined. 09:22:33 -!- wooby has joined. 09:32:51 -!- oerjan has joined. 10:13:54 -!- wooby has quit. 10:37:13 -!- Arrogant has quit ("Leaving"). 11:08:59 -!- jix has joined. 11:42:18 -!- oerjan has quit ("leaving"). 11:57:56 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 12:33:44 -!- helios24 has quit (Read error: 110 (Connection timed out)). 12:45:48 -!- jix has joined. 13:03:23 -!- sebbu2 has joined. 13:07:34 -!- kxspxr has joined. 13:10:48 -!- sebbu has quit (Read error: 60 (Operation timed out)). 13:12:09 -!- kxspxr has quit (Client Quit). 13:16:20 -!- kxspxr has joined. 13:22:10 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 13:32:25 -!- kxspxr has left (?). 13:53:36 -!- helios24 has joined. 13:58:35 -!- kxspxr has joined. 16:09:27 -!- sebbu2 has changed nick to sebbu. 16:16:44 -!- helios24 has quit ("Leaving"). 16:19:38 -!- FabioNET has joined. 17:06:02 -!- tgwizard has joined. 17:58:00 that's easy, struct { void* right, left} 17:58:20 you probably mean struct { void *right, *left} 18:04:40 -!- nazgjunk has joined. 18:14:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:14:42 -!- nazgjunk has joined. 19:07:42 -!- sebbu2 has joined. 19:08:41 -!- FabioNET has quit ("A domani..."). 19:15:39 -!- digital_me has joined. 19:16:53 -!- FabioNET has joined. 19:26:47 -!- sebbu has quit (Read error: 110 (Connection timed out)). 19:31:39 oklopol: yeah, that's what i mean 19:40:06 You are lying. struct { void *right, *left; }; is what you meant 19:41:29 ug 19:42:13 rar 19:44:14 graf 19:53:52 -!- oerjan has joined. 20:26:35 hi 20:26:45 ho 20:30:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:30:47 -!- fush has joined. 20:31:03 -!- fush has changed nick to nazgjunk. 21:07:44 -!- Arrogant has joined. 21:34:11 -!- Sgeo has joined. 21:38:55 -!- GregorR has quit (Nick collision from services.). 21:59:44 -!- FabioNET has quit ("A domani..."). 22:17:51 -!- sebbu has joined. 22:26:22 -!- coredmp has joined. 22:28:11 -!- Arrogant has quit (Read error: 54 (Connection reset by peer)). 22:28:37 -!- coredmp has left (?). 22:29:23 -!- tgwizard has quit (Remote closed the connection). 22:34:09 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 22:39:50 -!- sebbu has quit (Client Quit). 22:48:14 -!- fruitbag has joined. 22:49:18 hm? 22:50:06 yes! hm! 22:50:34 foo 22:51:36 ~exec sys.stdout("bar") 22:51:36 bar 22:52:42 baz 22:53:17 qux 22:57:11 I have two great names if I am ever to do my own programming languages. 22:57:24 Either the Baggage programming language, or Turing. 22:57:30 lame 22:57:47 I believe Turing is already taken, don't know about Baggage 22:57:52 -!- ShadowHntr has joined. 22:58:14 BTW don't you mean Babbage? 22:58:18 Turing would be ridiculously confusing 22:58:29 yeah 22:58:40 since you have to call the language used to programs turing machines something... 22:59:12 Ooops 22:59:14 Yes, oerjan. 22:59:16 Babbage 22:59:19 What a stupid mistake... 22:59:28 I knew the spelling, but that was a slip. 22:59:57 bsmntbombdood: why lame? 23:00:41 bwxcauce 23:03:55 Hey, the Babbage language almost exists and is esoteric :) 23:04:06 It does, oerjan? 23:04:07 How so? 23:04:30 http://www.tlc-systems.com/babbage.htm 23:05:57 of course, once again, babbage is a confusing name 23:06:11 since you have to call the language used to program the analytic engine somehow 23:06:28 No, that is Ada. 23:06:30 it doesn't have a name 23:06:55 Man... esoteric. 23:07:15 What's the most interesting esoteric programming language you pople have used? 23:08:02 i'm not a pople :( 23:08:56 People * ;w 23:09:10 hard to say what's the most interesting 23:09:13 Unlambda looks interesting. 23:09:26 i wrote quicksort in english yesterday 23:09:32 that was quite esoteric 23:09:34 well, i like Unlambda, obviously 23:09:35 different langs are interesting for very different reasons 23:11:00 eg smetana is interesting because it seems so completely pointless; and wireworld is interesting because there's a pretty computer implemented it in; and unlambda is interesting because it eats your brain; and jot is interesting because every number is a valid program..... 23:11:36 i think wireworld was more interesting before the computer to be honest 23:11:43 i used to play with it before that :< 23:11:48 ```s``s``sii`ki : `k.*``s``s`ks : ``s`k`s`ks``s`ks``s`k`s`kr``s`k`sikk : `k``a`ksk 23:12:00 ^ print Fib numbers 23:12:15 !fds ```s``s``sii`ki : `k.*``s``s`ks : ``s`k`s`ks``s`ks``s`k`s`kr``s`k`sikk : `k``a`ksk 23:12:17 Unlambda is great. 23:12:19 make it! :P 23:12:54 what has been done with unlambda? 23:12:57 everything? 23:13:12 that's the most complex i've seen or heard about :\ 23:13:13 and fugue is interesting because it's in music notation, and irp is interesting because it's so silly, and befunge is interesting because it's so pretty yet fairly easy to use, and kayak is interesting because it's so... quantum :) 23:13:39 What, you haven't seen any of the Unlambda self-interpreters? 23:13:41 and thue is interesting because it eats your brain very gently 23:13:52 oerjan nope 23:14:15 For the mathematician, Unlambda may be interesting. 23:14:51 for a mathematician, lazy-k would probably be preferrable to unlambda. 23:14:52 the mathematician on ork? 23:14:56 *in 23:15:10 Mine is at http://oerjan.nvg.org/esoteric/interpreter.unl 23:15:43 i find unlambda UNinteresting because it's too difficult. 23:15:45 oerjan: lol 23:16:10 I don't understand unlambda 23:16:19 you should put the functions in place or? 23:16:25 is it just like that? 23:16:35 Huh? 23:16:40 hmm 23:16:43 nm :=) 23:17:18 lament: difficult is interesting. 23:17:20 whitespace makes no difference there right? 23:17:21 I disagree. 23:17:26 Whatever is difficult is more interesting.... 23:17:32 That's what I've found out. 23:17:43 oerjan: wow, you actually wrote that by hand? 23:18:00 oh, forgot to say, oerjan, that's fucking sick :\ 23:18:12 You people should code in Intercal 23:18:18 Intercal! 23:18:18 fruitbag: why? 23:18:31 lament: great stuff. 23:18:48 ookay 23:18:49 Yep :) 23:19:07 I have coded in Intercal. An Unlambda interpreter :D 23:19:14 oerjan: not bad, i don't think many people do taht 23:20:19 I have an interesting on an esoteric programming language... 23:20:22 http://oerjan.nvg.org/esoteric/intercal/ 23:20:32 What about a programming language based on electronic circuits? 23:20:49 it's called VHDL 23:20:52 :P 23:21:39 oerjan: oh, heh, i remember looking at one, years ago 23:21:45 oerjan: *at that one 23:22:23 nice use of PLEASE statements 23:22:35 Why thank you. 23:23:18 If I were ever to do a programming language, I'd call it `Ramanujan'. 23:23:57 If I were ever to do a programming language, I'd call it "Your pants". 23:24:30 "I'm an expert in your pants" 23:24:45 "Now take this code and re-write it in your pants" 23:26:15 Heh, a search for "Ramanujan programming language" instead leads to the Unlambda page 23:30:19 Well, good tlaking here. 23:30:22 Later for now... 23:31:31 -!- digital_me_ has joined. 23:31:41 oh no! it's me, but digital! 23:32:13 * lament examines how few bits they digitized me to 23:33:17 jesus christ, no wonder audiophiles prefer vinyl. 23:34:59 oh please tell us 23:41:44 -!- fruitbag has left (?). 2007-02-09: 00:29:42 -!- oerjan has quit ("leaving"). 00:44:47 -!- SevenInchBread has joined. 00:47:49 -!- anonfunc has joined. 00:51:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 00:52:04 -!- death has joined. 00:53:21 -!- death has changed nick to nazgjunk. 00:57:23 -!- nazgjunk has quit ("Bi-la Kaifa"). 01:06:37 -!- kxspxr has quit. 01:16:58 -!- EgoBot has joined. 01:22:19 -!- GregorR has joined. 02:12:28 heh, fuzzy booleans 02:51:25 -!- anonfunc has quit. 03:47:51 -!- SevenInchBread has quit ("haaaaaaaaaa"). 03:49:34 hmph 03:49:46 in a lazy evaluation system, when do things get evaluated 03:49:47 ? 04:06:57 -!- ShadowHntr has quit (Client Quit). 04:53:42 -!- anonfunc has joined. 05:25:54 when they need to be..? 05:32:48 -!- digital_me_ has quit ("Lost terminal"). 05:37:45 -!- Arrogant has joined. 05:39:26 oklopol: yeah... 05:39:29 but when 05:52:22 -!- digital_me has quit (Connection timed out). 06:01:04 -!- Sgeo has quit ("Leaving"). 07:07:08 -!- Arrogant has quit ("Leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:10:44 -!- RodgerTheGreat has quit. 08:11:22 -!- RodgerTheGreat has joined. 08:43:45 -!- anonfunc has quit. 08:43:51 -!- anonfunc has joined. 08:45:10 -!- anonfunc has quit (Client Quit). 10:17:58 -!- oerjan has joined. 10:20:07 bsmntbombdood: awake? 10:43:50 -!- oerjan has quit ("Apparently not"). 11:34:51 My univeresity seems to have comissioned the building of two doors that lead into midair. 11:35:10 The look much more like doors than like windows. 11:35:33 But they are on the first and second floors, not the ground floor 11:36:14 Where they are placed makes it impossible to attach a fire escape to them that would reach the ground. 11:36:42 as they are on a walkway that goes over a road. 11:37:50 and they aren't giong to connect to something else, as there is nothing to connect to except an office that is only 10sec walk away anyway. 11:37:54 WTF WTF WTF 12:27:40 * SimonRC luncherises. 12:47:42 -!- sebbu has joined. 14:00:18 -!- jix__ has joined. 14:07:23 hm 14:40:32 -!- RodgerTheGreat has quit (zelazny.freenode.net irc.freenode.net). 14:40:33 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 14:40:35 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 14:40:37 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 14:40:58 -!- RodgerTheGreat has joined. 14:40:58 -!- bsmnt_bot has joined. 14:40:58 -!- puzzlet has joined. 14:40:58 -!- cmeme has joined. 14:55:26 whoa, psychadelic, maan. 14:55:28 http://www.albinoblacksheep.com/flash/mario-remix.php 15:02:12 -!- jix__ has changed nick to jix. 15:02:18 :) 15:10:38 -!- tgwizard has joined. 15:27:53 hi 16:03:20 :) :) 16:03:25 :| 16:09:16 -!- nazgjunk has joined. 16:24:44 jix: ?? http://www.teuton.org/~stranger/code/emoticon/emoticon.html 16:25:02 nope... 16:25:13 :) :) because i have a girlfriend now 16:25:31 :| because i won't see her the next 2 days 16:26:14 HEREIC! 16:26:20 * HERETIC! 16:26:43 ? 16:26:45 Bah, I don't seem to want a girlfreind much 16:26:57 you're supposed to be a geek 16:27:39 well i fell in love so... 16:28:00 and i prefer spending time with her over programming etc.... 16:32:37 ah dear 16:32:41 we must cure him 16:33:12 geeks are supposed to have paraphilias not fall in love. 16:33:15 :-) 16:37:52 I repel women in the most literal sense imaginable. 16:40:27 Maybe I'm just envious of jix. 17:08:57 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 17:09:27 -!- nazgjunk has joined. 17:11:13 mh 17:24:48 :/ 17:26:40 hmm start.sh wird also ignoriert 17:26:50 wrong channel 17:27:21 bah 19:16:41 -!- FabioNET has joined. 19:20:17 Mmmm, explosion: http://www.i-am-bored.com/bored_link.cfm?link_id=21881 19:23:18 cool 19:26:52 but fake, I htink 19:28:06 possibly an ad 19:39:09 well duh 19:39:26 It's called "viral advertising". 19:40:23 Actually, I think all online ads should be released to be redistributed freely as long as they are unmodified. 19:40:56 I mean, every time the ad is watched the company benefits, and they don't charge for it, so it is quite tough to object. 19:48:26 -!- FabioNET has quit (Remote closed the connection). 20:04:57 -!- oklopol has quit (Read error: 110 (Connection timed out)). 20:26:04 -!- oklofok has joined. 20:28:10 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:28:19 -!- UpTheDownstair has joined. 21:02:05 -!- tgwizard has quit (Remote closed the connection). 21:17:00 -!- kxspxr has joined. 21:24:41 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:36:40 -!- oerjan has joined. 21:44:58 -!- Arrogant has joined. 21:47:05 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 21:47:16 -!- nazgjunk has joined. 22:33:42 oerjan: am now 22:34:28 -!- Arrogant has quit ("Leaving"). 22:36:14 SimonRC, what's your university? 22:37:43 bsmntbombdood: What kind of lazy evaluation is it you want to know about? 22:38:02 I'm trying to write a lazy lisp interpreter 22:40:18 Complete lazyness means evaluating an expression the moment something needs to be known about its actual value. 22:40:43 -!- ihope has joined. 22:41:07 how do we know when something needs its exact value? 22:41:22 However, if the language is pure you can also evaluate an expression earlier as long as it terminates - Haskell compilers do this for efficiency, using what is called strictness analysis. 22:42:01 *terminates or is guaranteed to be used 22:42:49 How do we know when to create a delay, and when to force it? 22:44:27 Well, basically you can make every expression a delay 22:44:49 (Avoiding it is just an efficiency matter) 22:44:56 to call (foo x y), we give foo two delays, right? 22:44:57 I hereby nominate myself for the position of Esoteric Operating System Project Leader, accept the nomination, vote for myself, close the vote, and claim the position. 22:45:16 Yep 22:45:35 but then what about ((lambda (x) (foo x) bar) 22:45:41 foo gets (delay (delay bar)) 22:45:54 I then resign and hold an election for the next leader. 22:46:34 You don't need to delay variables - assume their contents are already delayed as needed 22:47:26 so foo just gets bar, which may contain a promise 22:48:18 hrm 22:48:54 or put another way, x is a binding not an expression 22:49:28 -!- crathman has joined. 22:50:22 we do we create a delay then? 22:51:25 for ((lambda (x) (foo x)) bar) i would assume (delay ((lambda (x) (delay (foo x))) bar) 22:52:17 that seems to be the same as delaying everything, then removing delay around variables 22:52:26 bsmntbombdood: the one specified in my hostname of course! 22:52:53 dur 22:52:59 yes 22:53:11 hint: go to that domain 22:54:12 of course special forms may need special handling 22:55:18 I would look up graph-reduction 22:56:59 * SimonRC lols at a paper abstract: 22:57:01 "To tag or not to tag: that is the question: 22:57:01 Whether 'tis faster in the cache to suffer 22:57:01 The delays of tagless nodes, 22:57:01 Or break the pipe no more 22:57:03 And make a branch that hits the cache. 22:57:06 To load, to jump; 22:57:09 To jump: perchance to stall; Ay, there's the run." 22:57:14 hehehe 22:57:45 i remember in GHC's STG machine, forcing is only done in case statements. 22:58:04 bsmntbombdood: Read some papers on implementing lazy functional languages. 22:58:30 like? 22:58:31 oerjan: or equivalents, like ifs, guards, or any pattern-matching 22:58:36 The paper on STG for example 22:58:38 bsmntbombdood: STFW 22:58:50 http://portal.acm.org/citation.cfm?id=99385&coll=portal&dl=ACM 22:58:55 yes, but those are all made into case statements in the STG language 22:59:36 (spineless tagless G-machine) 22:59:49 indeed 23:00:02 bsmntbombdood: specifically, see google Scholar 23:00:09 there are some freely-available versions 23:00:20 it's probably the most efficient lazy language machine around 23:00:56 or maybe i just bought its hype :) 23:01:01 well... 23:01:31 the paper I quoted above is about how the cache-misses tend to negate the benefits of no tag checking 23:01:40 seeing as how it is the only lazy language machine i know thoroughly 23:04:55 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:04:57 -!- UpTheDownstair has joined. 23:05:06 ACM portal is useless to me 23:05:36 there isn't even a free abstract - but I remember reading some free article on it 23:30:30 -!- crathman has quit (Read error: 110 (Connection timed out)). 23:37:23 -!- UpTheDownstair has quit ("Bi-la Kaifa"). 2007-02-10: 00:05:25 -!- ihope_ has joined. 00:14:09 -!- ShadowHntr has joined. 00:20:25 -!- Sgeo has joined. 00:23:21 -!- ihope has quit (Read error: 110 (Connection timed out)). 01:24:28 -!- oerjan has quit ("leaving"). 01:26:27 -!- ihope_ has quit (Read error: 54 (Connection reset by peer)). 01:31:15 -!- sebbu2 has joined. 01:47:20 -!- oklofok has quit (Connection timed out). 01:50:09 -!- sebbu has quit (Read error: 110 (Connection timed out)). 01:56:35 -!- sebbu2 has quit (Client Quit). 02:04:19 -!- oklopol has joined. 02:28:49 -!- oklofok has joined. 02:29:06 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 02:29:46 -!- kxspxr has quit. 03:05:27 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 03:05:40 -!- oklopol has joined. 03:28:49 * SimonRC goes to bed 03:49:48 -!- oklopol has quit (Read error: 110 (Connection timed out)). 03:50:46 -!- oklopol has joined. 04:36:53 -!- SevenInchBread has joined. 04:47:03 -!- crathman has joined. 05:29:44 G'night all 05:44:36 -!- oklofok has joined. 05:44:48 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 06:03:49 -!- oklofok has quit (Read error: 110 (Connection timed out)). 06:13:24 -!- Sgeo has quit ("Leaving"). 06:22:54 -!- oklopol has joined. 06:51:19 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 06:51:34 -!- oklofok has joined. 07:10:37 -!- ShadowHntr has quit ("End of line."). 07:16:25 -!- RodgerTheGreat has quit (Remote closed the connection). 07:17:08 -!- RodgerTheGreat has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:12 -!- RodgerTheGreat has quit. 08:25:11 -!- oklopol has joined. 08:25:45 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 09:21:22 -!- nazgjunk has joined. 10:01:48 -!- RodgerTheGreat has joined. 10:02:47 -!- RodgerTheGreat_ has joined. 10:06:11 -!- sebbu has joined. 10:20:03 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)). 10:20:47 -!- jix__ has joined. 10:58:06 -!- sebbu2 has joined. 11:06:29 -!- sebbu has quit (Read error: 145 (Connection timed out)). 11:20:23 -!- tgwizard has joined. 11:57:54 -!- nazgjunk has quit ("Bi-la Kaifa"). 12:09:38 -!- sebbu2 has changed nick to sebbu. 13:42:22 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 13:42:38 -!- SevenInchBread has joined. 13:59:13 -!- Sgeo has joined. 16:55:35 -!- nazgjunk has joined. 17:29:56 -!- crathman_ has joined. 17:35:40 -!- crathman__ has joined. 17:36:22 -!- crathman__ has quit (Remote closed the connection). 17:46:02 -!- crathman has quit (Read error: 110 (Connection timed out)). 17:49:41 -!- crathman has joined. 17:52:44 -!- crathman_ has quit (Connection timed out). 18:29:12 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 18:29:46 -!- crathman has joined. 18:50:23 -!- ihope has joined. 19:23:52 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat. 19:41:59 -!- calamari has joined. 19:43:54 * ihope types "one plus one" into Google and ends up with "two" 19:44:21 Aww, but "two divided by four" gives "0.5". 19:44:45 Hmm. "one plus 1" and "one + 1" both also give "two"/ 19:45:05 But "1 plus 1" and "1 + 1" give "2". 19:45:40 By the way, this was all sparked by my typing "6 billion * 15" into Google and getting "ninety billion". 19:46:38 * ihope types in "three million nine hundred fifty-four thousand two hundred sixteen plus one" 19:56:09 i seldom use any other calculator than google 19:56:48 i don't have to strip off units and it even translates them to a composite unit if necessary 20:14:35 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 20:16:50 -!- nazgjunk has joined. 21:27:35 -!- Arrogant has joined. 21:41:13 -!- digital_me has joined. 21:48:59 -!- Arrogant has quit ("Leaving"). 22:43:15 h 22:45:27 j 22:55:20 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:55:41 -!- oerjan has joined. 22:56:47 -!- nazgjunk has changed nick to nazgyunk. 22:57:23 -!- nazgyunk has changed nick to nazgjunk. 23:02:08 klyubn? 23:05:59 Yay, NetHack! 23:06:07 Also, it's yulkjhnb. 23:07:20 ITYM hykulnjb 23:09:56 Let's say it's both. 23:10:37 Hey, hykulnjb goes clockwise... 23:11:01 what about it? 23:13:58 It goes clockwise. 23:20:57 -!- RodgerTheGreat has quit. 23:25:23 -!- RodgerTheGreat has joined. 23:26:22 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 23:33:42 -!- tgwizard has quit (Remote closed the connection). 23:41:10 -!- cmeme has quit (Read error: 131 (Connection reset by peer)). 23:42:56 -!- pgimeno has joined. 23:43:37 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 23:43:38 -!- cmeme has joined. 23:43:43 -!- crathman_ has joined. 23:43:45 -!- crathman_ has changed nick to crathman. 23:46:21 -!- crathman has quit (Client Quit). 23:52:21 barg 23:52:33 seems like the halting problem should be possible 23:53:22 Hmm? 23:53:29 ahem? 23:53:32 Despite a proof of the contrary? 23:53:43 yeah 23:53:51 Why? 23:53:54 i dunno 23:54:10 * oerjan readies his gun to shoot holes in bsmntbombdood's arguments 23:54:23 I don't have any arguments 23:55:14 that's good because i don't have a gun 23:55:51 (define (f) 1) 23:55:56 easy to see that f halts 23:56:19 (define (f) (cond ((= 0 1) (f)) (else 1))) 23:56:21 likewise 23:57:11 Neither of those is recursive. 23:57:25 (define (f) (cond ((exists odd perfect number) (f)) (else 1))) - not so easy 23:57:49 ihope: the second one is 23:57:58 actually turn that around 23:58:07 Well, yeah, I guess. 23:58:10 But oerjan's... 23:58:23 (define (f) (cond ((exists odd perfect number) 1) (else (f)))) 23:58:42 well, we obviously need to know what exists returns 23:58:59 but we can rephrase that as: 23:59:46 to see if that halts we see if EXISTS halts, then if it does, find what it returns 23:59:51 (define (f n) (cond ((perfect n) 1) (else (f (+ n 2))))) (f 3) 2007-02-11: 00:00:44 that is equivalent 00:00:50 essentially 00:00:55 Tell me whether or not this Haskell program halts: main = print $ head $ filter perfect [1,3..] where perfect x = sum (divisors x) == x; divisors x = [ y | y <- [1..x-1], x `mod` y == 0 ] 00:01:07 Or the program I meant to write, if that isn't the right one :-P 00:01:39 well, we know it's impossible, so this is stupid 00:02:13 Yeah. 00:02:42 true, but this shows that the halting problem is somewhat connected to the existence of undecidable theorems 00:02:45 what about programs that don't use halt 00:03:40 the proof on wikipedia uses halt on a program that uses halt 00:04:12 If Turing-machines can solve the halting problem, then "Turing machines that don't use halt" isn't Turing-complete. 00:04:26 i know 00:04:59 although i rather suspect that "this program uses halt" is undecidable, or even undefinable 00:05:22 -!- ihope_ has joined. 00:05:32 because you cannot decide whether a program is equivalent to halt 00:05:44 But since Turing machines can't solve the halting problem, "Turing machines that don't use halt" is simply all Turing machines. :-) 00:05:46 (even assuming it exists) 00:06:59 who proved that two lambda expressions couldn't be proven equivalent? 00:07:41 don't remember, let me see in wikipedia 00:09:10 Church 00:09:18 ah, it's Rice's theorem 00:09:35 ok maybe Church proved a special case 00:19:19 Isn't that equivalent to the halting problem? 00:19:55 Also, \x.x and \x.xx can't be proven equivalent. Q.E.D. 00:20:17 it's proven by reduction to the halting problem. 00:20:29 see the wikipedia page 00:21:13 well in _that_ case it was the Church-Rosser theorem. 00:21:49 which showed that _some_ expressions couldn't be proved equivalent 00:22:58 -!- ihope has quit (Read error: 110 (Connection timed out)). 00:23:19 i thought you meant who proved that it couldn't be decided whether two given expressions were equivalent 00:23:57 (as in being the same function) 00:27:16 ...What? 00:27:28 what what? 00:27:38 How many definitions of equivalence are there? 00:27:57 five 00:28:06 bannana-grape 00:28:08 there is beta equivalence, beta/eta equivalence 00:28:36 but the Church-Rosser theorem is needed to prove each of them consistent 00:29:05 without it, maybe \x.x and \x.xx _could_ be turned into each other 00:29:09 bsmntbombdood: bananas and grapes are obsolete. Please upgrade to Cantor normal form. 00:29:15 :-P 00:29:22 cantor normal form? 00:29:47 cantor normal form is essentially positional notation in base omega 00:30:17 omega^(omega+1) + omega^1*3 + omega*3 + 5, for example 00:30:41 eh, *omega^2*3 00:30:51 Like polynomials, sort of. 00:31:00 whoosh 00:31:20 omega^a*b + omega^c*d + omega^e*f... 00:31:34 omega = the ordinal of the natural numbers, the first infinite one 00:31:41 Where a, c, e, etc. are ordinal numbers and b, d and f are natural numbers. 00:31:57 Bananas and grapes form a subset of the ordinal numbers, I mean. 00:32:32 up to omega*2, isn't it? 00:32:46 Something like that. I don't know. 00:33:50 as in, the bananas are the first omega ordinals and the grapes the next omega ordinals 00:33:59 or maybe it was the other way around 00:34:23 The other way around, I think. 00:35:08 Also, ordinal numbers aren't cardinal numbers. :-) 00:35:34 of course. 00:36:35 (when you know it) 00:37:55 Obvious iff you already know. 00:38:50 well, it doesn't take _that_ long to realize that omega+1 and omega have the same cardinality 00:38:55 .... 00:39:03 none of this makes any sense to me. 00:39:04 at all. 00:39:08 me too 00:39:30 hm... 00:39:38 Essentially, an ordinal number is what I tried to get at with grapes and bananas. 00:40:06 do you know what a total order is? 00:40:17 Me? 00:40:19 grapes and bannanas? 00:40:23 no the others 00:40:33 ooooh 00:40:37 bsmntbombdood: you're the one who said banana-grape. :-P 00:40:41 ordinal - the contents of a set. 00:40:44 i assume you know since you know what ordinals are 00:40:44 cardinal - the size of a set 00:40:59 not quite 00:41:12 ihope_: i was just talking about fruit 00:41:18 ordinal = the order type of a (well-) ordered set 00:41:54 Informally, an ordinal number is a set of ordinal numbers such that each of its elements' elements is an element. 00:42:10 ... 00:42:11 Examples: 0 is defined as the empty set, 1 as {0}, 2 as {0,1}, 3 as {0,1,2}, etc. 00:42:13 that's even more confusing 00:42:22 the von Neumann ordinals 00:42:27 Not if you have no idea what an order type is :-P 00:42:28 that's a recursive definition 00:42:33 Well, yes, it is. 00:42:36 an ordinal number is a set of ordinal numbers... 00:42:42 {0,{0}}? 00:42:47 bsmntbombdood: yep. 00:42:51 {0,{0,{0}}}? 00:42:57 what's the point? 00:43:07 {0,{0},{0,{0}}}. 00:43:09 I just failed Algebra 2... to give you an idea of my current level of math skills. 00:43:15 ouch 00:43:18 I haven't even touched set theory... besides what I've read of it. 00:43:22 ouch 00:43:31 ihope_: what's that? 00:43:33 The point is that you have infinite ordinal numbers as well: omega, the first infinite ordinal number, is {0,1,2,3,4,5,6,7,8...} 00:43:34 well... that was from laziness. 00:44:38 kinda like church numerals 00:44:45 Then the next ordinal number, omega+1, is {0,1,2,3...omega}, and omega+2 is {0,1,2,3...omega, omega+1}, omega+3 is {0,1,2,3...omega, omega+1, omega+2}. 00:45:11 that doesn't make sense 00:45:15 omega+omega or omega*2, then, is {0,1,2,3...omega, omega+1, omega+2, omega+3...} 00:45:33 yeah - they are used in set theory to get the natural numbers in the same way that church numerals are used to get them in lambda calculus 00:45:47 bsmntbombdood: is there a certain part of it that doesn't make sense, or is it just generally confusing? 00:46:04 the omega part 00:46:51 Well, omega is what you get when you go past all the natural numbers. 00:47:04 omega is the set of all the finite ordinals, itself infinite 00:47:08 what's this called so i can look it up? 00:47:14 An ordinal number contains all the ordinal numbers you've gone past. 00:47:25 bsmntbombdood: what's what called? 00:47:39 this ordinal-omega stuff 00:47:45 (transfinite) ordinal numbers 00:48:04 ok i have to go to dinner 00:48:38 btw there is a trick to remove the recursivity from the definition 00:49:21 An ordinal number is a set whose elements are subsets of it, and which is totally ordered under the "is an element of" operation. 00:50:29 i think you may want well-ordered 00:51:09 Totally ordered is sufficient, isn't it? 00:51:20 or maybe not - you get that from the axiom of foundation 00:52:34 -!- sebbu has quit ("@+"). 00:53:14 i think it is sufficient but using well-ordered allows you not to bother with things like x = {x} 00:53:17 You mean the axiom of foundation has a use? 00:53:48 yep, without it x = {x} would be an ordinal by your definition 00:54:51 Wouldn't x = {x} be well-ordered anyway? 00:55:04 eh - good point 00:55:52 so you actually need to assume explicitly that x is well-founded 00:56:14 if you don't have the axiom of foundation 00:56:29 in which case total probably suffices for the order 01:02:03 -!- nazgjunk has quit ("Bi-la Kaifa"). 01:33:31 * SimonRC reads up 01:35:16 * SimonRC decides that if he had a mutant power, he would be a Turing Oracle. 01:35:28 (able to predict if any give Turing Machine halts) 01:38:58 Hmm, bananas and grapes.... http://www.catb.org/jargon/html/O/one-banana-problem.html 01:39:16 This, naturally, would permit you to find out whether any mathematical hypothesis is a theorem, and by binary search to find its proof. 01:39:57 SimonRC: I've seen that before... :-) 01:40:07 read that whole website!!!!!! 01:40:22 I want to be a Turing Oracle... 01:40:57 failing that, you *really* must read appendix B: http://www.catb.org/jargon/html/appendixb.html 01:41:04 appendix A rocks too 01:41:21 oerjan: yeah, fun 01:42:29 actually... there might be some problems if the length of the proof is described with the Ackermann function :) 01:42:54 which certainly must be true for some theorems 01:43:07 Hmm... 01:43:18 BTW, I can't see how to express that puzzle about whether "f n = if even n then f (n/2) else f (n*3+1)" always hits one for eveny starting Natural n as a halting problem 01:43:41 Give me a series of theorems whose proofs are longer than the corresponding values of the Ackermann function. :-) 01:44:06 indeed, it would seem to be in the next grape or banana 01:44:17 incidentally, the busy-beaver numbers are uncomputable (in the genersal case) 01:44:18 SimonRC: n `div` 2, remember. 01:44:27 it is pseudocode 01:44:44 It does a remarkably good job of being Haskell. 01:44:59 :-P 01:45:19 the question of whether _one_ number halts on 3n+1 is a halting problem. 01:45:23 Haskell is almost pseudocode 01:45:40 There are programming languages much better than Haskell. 01:45:42 oerjan: indeed 01:45:46 ihope_: e.g.? 01:45:47 I just don't know of any. :-P 01:45:51 :-( 01:46:15 Well, no decently fast implementations for any. 01:46:57 So what are the slow ones? 01:47:02 I could take first-order logic, extend it to a programming language, and execute programs by brute force. 01:47:20 Brute-forcing proofs isn't very fast. 01:48:34 lessee, forall x exists n such that x_n = 1, the switch between forall and exists indicates that each loop may go up a level in the halting hierarchy 01:49:27 ah, this suddenly sound familiar from my compuability theory lectures 01:49:35 the "switch between forall and exists" part 01:49:44 Foralls and existses are nice. 01:49:46 yeah, it's the same as for the polynomial hierarchy 01:49:53 yeah, that thing 01:49:54 Also known as forsomes. :-) 01:49:58 fuck fuck fuck fuck fuck 01:50:08 excuse the language 01:53:07 * oerjan suddenly wonders if there is an esoteric language named SOAP 01:53:47 nah, just an operating system 01:53:48 SOAP is going to be a platform for an esoteric operating system, if people ever start following my orders. 01:54:12 oerjan: please throw dextrose tablets at bsmnt_bot. 01:54:12 when Malbolge freezes over, in other words 01:54:24 Pff, I can do that. 01:54:31 ...Wait... 01:54:44 dextrose? 01:54:58 The usable form of glucose. 01:55:11 ~exec sys.output("Give me sugar!") 01:55:22 ~exec sys.stdout("Give me sugar!") 01:55:22 Give me sugar! 01:55:36 * ihope_ throws dextrose tablets at bsmnt_bot 01:55:55 I have forgotten it _every_ time except once 01:56:05 :-) 01:58:40 ~exec sys.dlete("/") 01:58:46 *cough* 01:59:06 ~exec sys.delete("/") 02:05:35 I was deliberately not doing that 02:06:16 BTW, is doing (do + ing) supposed to be spelt the same as doing (onomatapoea)? 02:06:57 you _do_ know that ihope is easily tempted with bsmnt_bot. 02:07:41 no, the latter must be spelt dhoeyng'x 02:11:09 D'oing. 02:13:49 Darn. I want to be able to combine infinite cyclic datastructures with mutable references in Haskell. 02:15:48 * ihope_ throws dextrose tablets at oerjan 02:16:08 yummy 02:16:18 IORef! 02:16:21 Or is it IOref? 02:16:47 i know, but it doesn't quite work 02:17:46 i cannot get an IO action to refer cleanly to an IORef which is defined later 02:18:16 I see. 02:19:29 unsafeInterleaveIO gives infinite datastructure of mutable references but not cyclic ones 02:20:24 and unsafePerformIO has badly defined semantics 02:31:38 what about bsmnt_bot ? 02:31:50 ihope_: you fale 02:32:07 ~exec throw(dextrose_tablets, bsmntbombdood) 02:32:13 Darn. 02:32:38 ~exec raise "Dextrose_tablets", "smntbombdood" 02:33:08 ~exec def self.dextrose(x): raw("PRIVMSG #esoteric :\001ACTION throws dextrose tablets at %s\001" % x) 02:33:15 Pff. 02:33:29 ~exec self.dextrose = lambda x: bot.raw("PRIVMSG #esoteric :\001ACTION throws dextrose tablets at %s\001" % x) 02:33:42 ~exec self.dextrose("bsmntbombdood") 02:33:43 * bsmnt_bot throws dextrose tablets at bsmntbombdood 02:33:52 * ihope_ throws dextrose tablets at bsmnt_bot 02:33:55 Not bad. 02:34:14 why the obbsesion with dextrose? 02:36:50 now they tell me at #haskell there is a fixIO. 02:42:02 A what? 02:42:05 esr is crazy 02:42:08 * ihope_ throws dextrose tablets at bsmntbombdood 02:43:42 fixIO :: (a -> IO a) -> IO a 02:44:00 to make cyclic IO actions depending on their result 02:44:48 cps is weird 02:45:00 also used with the mdo recursive monad notation 02:46:20 * oerjan invents sinistrose 02:47:24 being the opposite of dextrose. 02:48:13 mdo? 02:48:20 Like do, except with monads? 02:48:51 do is with monads 02:49:10 mdo vs. do is like letrec vs. let in scheme 02:49:48 I know nothing about Scheme. 02:50:03 scheme pwns haskell 02:50:47 in do, variables introduced with <- can only be used in later statements. in mdo they can be used in the whole mdo statement 02:50:57 *variables = bindings 02:51:22 I now know one thing about Scheme. 02:51:43 no you don't 02:51:48 Oh. 02:52:08 bsmntbombdood is lying :) 02:52:19 code as data, man! 02:52:21 Also, I take it this doesn't work: mdo {putStrLn x; x <- getLine} 02:52:38 bsmntbombdood: :-P...wait, what? 02:52:44 * ihope_ ponders 02:52:50 what? 02:52:54 data as code dude! 02:53:00 that's why scheme is better than haskell 02:53:04 * ihope_ decides "data as code" was... darn, SevenInchBread beat me to it 02:53:12 nope, that would hang 02:54:25 Well... Lisp homoiconicity makes "data as code" as well. 02:54:28 it works both ways. 02:54:42 yeah 02:54:50 sexp! 02:54:57 since Lisp code is just like... a parse tree. 02:56:18 sexp 02:59:36 zzzzz 02:59:39 * SimonRC goes to bed 03:01:50 oerjan: look at "mdo". It is sugar that works on any instance of MonadLoop (i.e. most Monads). 03:02:01 oh, wait, you did 03:02:55 (> scheme haskell) 03:03:33 LISPoids: code is data. Haskell: computations are data 03:03:40 notice the difference 03:03:44 anyway 03:03:46 Scheme == Haskell 03:03:46 zzzzzzz 03:04:01 (> scheme) haskell 03:04:08 :-D 03:04:08 lol 03:04:10 zzzzzzz 03:04:22 sex-pee 03:04:32 Oh dear. 03:04:49 Isn't that that... stuff? 03:05:05 ? 03:05:16 what stuff 03:05:31 (> scheme haskell) <== sex-pee 03:05:46 Eew. 03:06:01 (> scheme) haskell <== sex-tion 03:07:03 '(...) <=== sex-pee 03:07:27 original LISP with mex-pees was ugly 03:07:56 ihope_: s-expression 03:07:58 s-exp 03:08:00 sexp 03:08:04 sex-pee 03:13:39 mccarthy the urophiliac 03:25:24 -!- ihope_ has quit (Connection timed out). 03:42:09 -!- oerjan has quit ("leaving"). 04:03:43 -!- RodgerTheGreat has quit. 05:18:41 -!- ShadowHntr has joined. 05:24:29 -!- RodgerTheGreat has joined. 05:29:56 -!- RodgerTheGreat has quit (Read error: 113 (No route to host)). 05:30:53 -!- calamari has quit (zelazny.freenode.net irc.freenode.net). 05:30:53 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 05:30:53 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 05:30:53 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 05:30:53 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 05:30:53 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 05:31:37 -!- RodgerTheGreat has joined. 05:31:57 -!- calamari has joined. 05:31:57 -!- oklopol has joined. 05:31:57 -!- GregorR has joined. 05:31:57 -!- SimonRC has joined. 05:31:57 -!- tokigun has joined. 05:31:57 -!- sekhmet has joined. 05:33:38 -!- RodgerTheGreat_ has joined. 05:33:52 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 05:34:53 -!- RodgerTheGreat_ has quit (Client Quit). 05:35:57 -!- RodgerTheGreat has joined. 05:36:03 -!- RodgerTheGreat has quit (Client Quit). 05:37:19 -!- RodgerTheGreat has joined. 05:40:22 -!- RodgerTheGreat has quit (Client Quit). 05:41:12 -!- RodgerTheGreat has joined. 05:44:11 -!- RodgerTheGreat has quit (Client Quit). 06:02:36 -!- digital_me has quit (Connection timed out). 06:18:33 -!- calamari has quit ("Leaving"). 06:25:13 -!- ShadowHntr has quit (Connection timed out). 06:52:29 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 07:05:19 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 07:05:25 -!- anonfunc has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:12:27 -!- sebbu has joined. 10:56:01 -!- jix has joined. 10:58:18 -!- sebbu2 has joined. 11:06:39 -!- sebbu has quit (Read error: 60 (Operation timed out)). 11:10:14 -!- puzzlet has quit (Remote closed the connection). 11:11:22 -!- puzzlet has joined. 11:23:38 -!- anonfunc has quit (Read error: 60 (Operation timed out)). 11:35:15 -!- anonfunc has joined. 11:56:02 -!- helios24 has joined. 12:03:18 -!- nazgjunk has joined. 12:08:14 -!- ihope_ has joined. 12:08:24 -!- ihope_ has changed nick to ihope. 12:16:48 -!- tgwizard has joined. 12:22:59 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:23:20 -!- nazgjunk has joined. 12:37:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:37:40 -!- UpTheDownstair has joined. 12:38:08 -!- UpTheDownstair has changed nick to nazgjunk. 12:44:57 -!- sebbu has joined. 12:50:01 -!- sebbu2 has quit (Read error: 60 (Operation timed out)). 14:15:42 -!- helios24 has quit ("Leaving"). 15:38:30 -!- UpTheDownstair has joined. 15:38:47 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 15:55:45 -!- nazgjunk has quit (Read error: 110 (Connection timed out)). 15:57:48 -!- SevenInchBread has joined. 16:04:31 -!- nazgjunk has joined. 17:03:29 -!- flagitious has joined. 17:18:33 -!- RodgerTheGreat has joined. 17:19:03 -!- RodgerTheGreat_ has joined. 17:27:30 -!- RodgerTheGreat has quit (Read error: 60 (Operation timed out)). 17:27:54 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat. 18:34:16 -!- ihope has quit (Read error: 110 (Connection timed out)). 19:12:23 -!- ihope_ has joined. 19:12:35 -!- ihope_ has changed nick to ihope. 19:22:47 -!- SevenInchBread has quit (Read error: 110 (Connection timed out)). 19:29:28 -!- digital_me has joined. 20:05:08 -!- GregorR has changed nick to _D6Gregor1RFeZi. 20:17:38 * ihope throws dextrose tablets at _D6Gregor1RFeZi 20:18:28 -!- SevenInchBread has joined. 20:30:57 -!- ShadowHntr has joined. 21:01:30 -!- sebbu2 has joined. 21:20:17 -!- sebbu has quit (Connection timed out). 21:23:16 -!- Arrogant has joined. 21:34:38 -!- oerjan has joined. 21:47:47 * oerjan still wonders what the dextrose tablets are about. 21:48:14 <_D6Gregor1RFeZi> Same 'ere. 21:48:40 <_D6Gregor1RFeZi> Presumably they're placebos, but maybe I'm supposed to believe that they'll demangle me. 21:48:41 ~exec self.dextrose(" oerjan ") 21:48:42 * bsmnt_bot throws dextrose tablets at oerjan 21:48:57 wow 21:49:44 well dextrose is not a placebo when it comes to energy 21:50:21 ~exec self.dextrose(" _D6Gregor1RFeZi ") 21:50:21 * bsmnt_bot throws dextrose tablets at _D6Gregor1RFeZi 21:50:35 Why the spaces? 21:50:41 tabe completion 21:50:42 ~exec self.dextrose("_D6Gregor1RFeZi") 21:50:42 * bsmnt_bot throws dextrose tablets at _D6Gregor1RFeZi 21:50:53 Oh. 21:52:02 -!- Arrogant has quit ("Leaving"). 21:53:23 ~ctcp oerjan VERSION 21:54:11 hm... did anything happen? 21:54:28 yeah 21:54:42 i didn't see any incoming ctcp 21:54:44 :orwell.freenode.net 505 bsmnt_bot :Private messages from unregistered users are currently blocked due to spam problems, but you can always message a staffer. Please register! ( http://freenode.net/faq.shtml#privmsg ) 21:54:53 oh. 21:55:00 anyhow i'm on irssi too 21:56:12 what is the tab character in html? :P 21:56:47 ~exec sys.stdout(r"^ *(.*[^ ]) *$" % " testing ") 21:57:22 -!- Sukoshi has joined. 21:57:33 Hey y'all. 21:57:36 long time no see Sukoshi 21:57:41 I know. 21:57:43 :) 21:57:56 Any Lex/Yacc wizards here? 21:58:01 Or, just Lex/Yacc users? 21:58:09 I've used em before 21:58:20 i have tried it 21:58:24 Can you use ( ) as grouping to group | ? 21:59:57 doesn't seem like it from "info bison" 22:01:48 Is it BNF? 22:02:00 Because I want to specify the exact repititions of something. 22:02:21 i guess that doesn't work because there would be no uniform way to refer to the matched tokens 22:03:50 you'll just have to define some helping tokens 22:04:25 I'm writing a parser for the BT bencoding, by the way. 22:05:00 i don't remember that one 22:05:12 I'll link it, and my Yacc file. 22:05:31 If you'd be so kind as to take a look at it and confirm if it would match correctly. 22:07:46 If this doesen't work, I write it myself. It's faster/less headache. 22:07:57 Woe to the not-pointer-arithmetic-endowed then. 22:08:16 pointer arithmetic is fun 22:08:25 I know, but not everyone can follow it. 22:08:44 That's why I'm choosing to use yacc/lex. 22:10:05 as far as i understand, | just defines a new rule with the same left side 22:10:26 It also works as or. 22:10:34 a | b != | a b 22:11:11 well that's what i said 22:11:46 a | b are two separate rules, not an expression 22:12:02 Oh, I see. Yeah. 22:12:50 basically it has to be this way because otherwise $1 ... $n would not refer to well-defined tokens in the rule action 22:13:05 Uggh. Now I have to decide how the C code works with the grammar. 22:13:11 that's my guess anyhow 22:13:51 where is that link you promised? 22:14:01 Well, my grammar is written up. 22:14:08 But, I have to add C code to it now. 22:15:23 http://www.anysize.org/~sukoshi/benc_parse.l http://www.anysize.org/~sukoshi/benc_parse.y 22:15:35 Havas unun bonan tempon kun tiujun. 22:15:38 *tiujn 22:16:10 *Havos :P 22:16:50 Dankas vin. (Maybe.) 22:17:03 Estas mian plezuron. 22:17:08 ? 22:17:24 what's this a parser for 22:17:29 If I got that correct it was nearly pure luck 22:17:32 Bencoding data. 22:17:38 oerjan: The ``vin'' is superfluous. 22:18:32 -!- _D6Gregor1RFeZi has changed nick to _ZN6Gregor1REd. 22:18:53 http://wiki.theory.org/BitTorrentSpecification <-- Read. 22:18:55 torrents? 22:18:59 Yeah. 22:20:09 -!- _ZN6Gregor1REd has changed nick to GregorR. 22:20:30 there's no benc_int 22:20:44 Guh. I knew I missed something. 22:21:25 benc_int: BEGINT NUMBER END ; 22:21:54 also you don't do anything with the values 22:22:14 Well, my grammar is written up. But, I have to add C code to it now. 22:22:25 oh 22:22:40 yacc should build a parse tree implicitly to give to you after parsing 22:22:52 that STRDATA rule is going to break I think. 22:23:15 yeah 22:23:25 Then I need to delimit it. 22:23:33 because it is confused with anything else 22:23:45 i don't quite see why you need a lex stage 22:24:09 I guess. 22:24:10 hm... scratch that. 22:24:28 yacc needs a lexer 22:24:30 But I would like to make yytext a union later on. 22:24:38 Oh? 22:26:13 i'm interested to see how to use that parser 22:26:16 the length-encoding of strings doesn't fit into a regular language definition, or context-free for that matter. 22:26:30 A custom parser then? 22:27:48 i am sure there is some lex rule to gulp up a fixed number of characters 22:27:59 *rule=method 22:28:31 but you need to take the number:string parsing entirely in lex 22:28:42 yeah 22:28:56 Oh, I see. 22:29:09 a string will eat up the rest of the input 22:29:10 which shouldn't be too difficult 22:29:52 Wait. How would you suggest I do this? 22:30:07 If I don't return the NUMBER token, then the grammar can't use NUMBER. 22:30:33 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:31:16 you don't need the yacc stage to know that number:string has a substructure 22:31:34 Oh, durr. 22:31:41 how would you do that? 22:32:02 so just remove NUMBER and let STRING be the whole thing 22:32:13 or STRDATA 22:32:16 But true, how would you do it? 22:32:51 regexes can't match stuff like that 22:36:43 you can use the input() directive. 22:38:03 Can you give me an example? 22:38:20 what, input() reads characters in? 22:38:54 yep, so you could use a for loop with input() to read the required number of characters into a buffer 22:39:09 Exmpl plz :P 22:39:22 read() 22:40:02 no 22:40:09 i don't see any read() in the flex info 22:40:20 i was mistaken 22:40:33 "input Reads a byte from yyin" 22:40:46 Wait, are we still talking about parsing BT strings here? 22:40:56 yea 22:40:57 that's the idea 22:41:02 hmm 22:41:08 I would use a monadic parser for that 22:41:18 but yacc doesn't do monadic parsers 22:41:35 so you have [0-9]+: as the regex, then read in the correct number of bytes with input() 22:41:56 right 22:42:27 Where does the call to input() go? Lexer? 22:42:31 yeah 22:42:44 Now a better question: Why the hell did they invent their own data encoding rather than using a standard one? 22:42:56 like what? 22:42:58 Their bencoding is brain-damaged. 22:43:12 I can see they have there a subset of the functionality of ASN.1 22:43:27 There are plenty of tools that will spit out very fast ASN.1 parsers 22:44:11 It has such amazing features as being able to send the start of some data before knowing how long it is. 22:44:15 My theory is that it was a quick hack in Python. 22:44:45 meh 22:45:11 it would be a quick hack with Parsec :) 22:46:51 there might be another way to do it using yymore() and states 22:50:34 *states=start conditions 22:50:54 parsing is screwed up 22:51:50 oh wait. 22:52:06 the i lex rule also needs to include the number 22:52:40 no it doesn't 22:53:19 yes it does, otherwise there will be no way for lex to distinguish the number from the start of a string encoding 22:53:34 it doesn't need to 22:53:57 yes it must because it has to handle the string encoding specially 22:54:10 wait... 22:54:15 yacc just needs the tokens 22:54:41 it _could_ distinguish a number according to whether it is followed by : 22:54:48 yeah 22:55:11 but lex does need to know the length of the string somehow 22:56:00 -!- tgwizard has quit (Remote closed the connection). 22:56:14 including it in the i rule would cause earlier error detection 22:56:44 in the case of something like i100: 22:56:51 error detection is for pussies 22:57:48 in any case i end up with the feeling this grammar is far too simple for lex/yacc use, especially when it doesn't fit directly 22:58:22 -!- nazgjunk has changed nick to na[zZz]gjunk. 22:58:36 recursive descent and a switch statement might even be shorter 22:59:07 *would almost certainly be shorter 23:01:35 in fact it is practically designed to be trivial in that way 23:01:56 what's that? 23:02:37 just a simple: read the next character, switch on it to decide what to do 23:02:51 oh, yeah 23:03:20 would be pretty simple 23:08:11 * bsmnt_bot throws dextrose tablets at bsmntbombdood 23:10:54 one more thing - the lex parser doesn't handle negative numbers for i 23:22:24 methinks that a predictive parser would be what you wanted. 23:23:22 In fact, I suspect that bittorent was built before the protocol was properly written down, so there is certainly a simple parsing algorithm: that which is used by the original client. 23:24:37 -!- pikhq has joined. 23:25:18 hi 23:25:33 you are just in time for a predictive parsing vs. yacc flamewar 23:26:12 what's a predictive parser? 23:29:29 yacc is fine if your grammar is L(AL)R(1) but not LL(1) 23:29:56 but this one is nearly LL(1) at the character level 23:30:39 bsmntbombdood: a parser that always knows what token type will come next. 23:30:42 I think 23:30:46 read the Dragon Book 23:31:21 how is that possible 23:31:52 Correction: knows what token something is after reading the first subtoken 23:32:03 Hear ye, hear ye! Read the Wiki! 23:32:10 You will sound more competent & wise. 23:32:14 oerjan: maybe that, whatever 23:32:46 i.e. LL(1) if it is context-free 23:32:48 anyway, it is a subset of most other serious parser types 23:33:08 but Pascal can be parsed predictively IIRC 23:33:34 yes, Niklaus Wirth is known for making his grammars simple LL(1)-like 23:34:41 and in another note, these parsers/languages are usually the ones that one can create by hand without too much effort 23:34:55 using recursive descent 23:36:21 Ah, of course, pascal parsers were traditionally written in Pascal, weren't they? 23:37:02 i think so 23:37:39 i think Wirth's idea was that the grammar _should_ be simple enough to write a parser manually 23:38:13 but of course i am as usually using my vague memory to sound competent & wise :) 23:38:33 *usual 23:39:43 but then i have always enjoyed parser theory 23:39:52 * pikhq uses an external memory enhancement at times 23:40:31 how many years before Wikipedia plugs directly into the brain? 23:42:22 With Ratpoison and Conkeror, it's close enough already. 23:43:53 -!- sebbu2 has quit ("@+"). 23:45:54 -!- GregorR has changed nick to _D6Gregor1RFeZi. 23:48:21 Is that valid Malbolge, Gregor? 23:48:46 Fe is iron and Zi is zirconium, IIRC 23:51:29 i'm writing a bencode parser in python 23:52:12 Hexadeuterium monogregor monoR moniron monozirconide? 23:53:19 <_D6Gregor1RFeZi> :P 23:53:51 i can't figure out how to do lists without backing up 23:53:52 <_D6Gregor1RFeZi> Seems like an unlikely chemical forumula. 23:54:05 map (`mod` 94) $ zipWith (+) [0::Int ..] $ map (fromEnum) "_D6Gregor1RFeZi" 23:54:18 gives [1,69,56,74,24,12,15,24,28,58,92,81,19,9,25] 23:54:30 Yeah. 23:54:31 <_D6Gregor1RFeZi> Fascinating. 23:54:42 which means it is probably not legal Malbolge 23:54:44 Hmm. 23:55:00 It's *perfectly* valid Brainfuck, though. 23:55:08 Although it's equivalent to a null program. . . 23:55:09 <_D6Gregor1RFeZi> Doesn't do much though :P 23:57:19 <_D6Gregor1RFeZi> Nobody can guess what it is? :( 23:57:44 ok, got lists, it's ugly though 23:57:45 is it an esoteric language? 23:57:51 <_D6Gregor1RFeZi> Nope 23:58:44 i guess with the Gregor in it it is not a chemical formula either 23:59:02 <_D6Gregor1RFeZi> Nope 23:59:08 what is ugly? 23:59:17 It's Gregorium. 23:59:20 <_D6Gregor1RFeZi> Obviously none of you mess with name mangling much :P 2007-02-12: 00:00:20 D6 could be a roleplaying reference 00:00:46 *Could* be. 00:00:47 no clue 00:00:53 * pikhq rolls 5000d20 00:00:56 :p 00:01:26 <_D6Gregor1RFeZi> It's the name of the D function int Gregor.R(real) mangled. 00:01:58 done 00:02:17 _D6Gregor1RFeZi: yes, that looks correct now 00:02:38 ok that means _ was the only part i nearly understood :) 00:02:59 http://pastebin.ca/351161 00:03:06 50 lines 00:04:40 _D6Gregor1RFeZi: Sorry; I don't do C++. 00:04:48 I mean. . . 00:04:58 I don't look at C++'s mangled names. 00:05:05 <_D6Gregor1RFeZi> It's D, not C++ 00:05:29 Hmm. . . I thought D used one of the name mangling schemes made for C++. . . 00:05:48 so, _D means the D language, 6Gregor means Gregor, 1R means R, F = float, Z = int, and I don't know about e and i/ 00:05:50 <_D6Gregor1RFeZi> It's similar, but certainly not the same. D's name mangling is made for D. 00:06:28 Haskell can spit out some interesting mangled names in its linker error messages. 00:06:40 <_D6Gregor1RFeZi> Gotta love mangling :P 00:07:50 that was easier than i thought 00:08:07 it would have been a lot cleaner if python files had ungetc 00:09:14 Well, at least it's got a consistent mangler; removes the issues that C++'s lack of standard mangling schemes produces. . . 00:10:04 <_D6Gregor1RFeZi> pikhq: C++'s mangling is standardized ... just nothing complies to the standard :P 00:11:05 * SimonRC boggles at the C code that ghc emits: 00:11:09 typical extract: 00:11:11 R1.p = (P_)(W_)&GHCziBase_unpackCStringzh_closure; 00:11:35 <_D6Gregor1RFeZi> Heheheh 00:13:09 BTW, what about my proposed analysis of your name? 00:14:27 Sukoshi: looks like a custom parser is the way to go 00:14:45 <_D6Gregor1RFeZi> SimonRC: I'm actually not sure about "FeZi" - I just got the mangling name by compiling the appropriate file :P 00:15:02 Mangling! Fun. 00:15:26 well FeZi has to encode int and real somehow, doesn't it? 00:15:37 "ldi1e2:ab3:abci56e1:gli2ei3eeei42ee" <-- fun 00:15:56 that is [{1: 'ab', 'abc': 56, 'g': [2, 3]}, 42] bencoded 00:17:07 i like bencode 00:17:47 <_D6Gregor1RFeZi> oerjan: yeah. 00:17:58 <_D6Gregor1RFeZi> oerjan: And the fact that one of them is a parameter, and the other is a return type. 00:21:33 i guess we need you to go and compile a different function :) 00:34:50 -!- pikhq_ has joined. 00:35:21 Grr. . . 00:35:25 -!- pikhq has quit (Read error: 104 (Connection reset by peer)). 00:35:31 STOP TURNING OFF THE CABLE MODEM, DAMN IT! 00:35:33 -!- pikhq_ has changed nick to pikhq. 00:38:04 heh 00:40:28 Sukoshi: A yacc parser for bencode is way too much 00:47:17 oerjan: what kind of parser is the one i wrote? 00:47:31 -!- digital_me has quit ("Lost terminal"). 00:48:53 looks like pretty straightforward recursive descent predictive parser 00:52:04 -!- ShadowHntr has quit (Client Quit). 00:57:23 -!- kxspxr has joined. 00:57:52 hi 01:10:28 SETI: A 99.999% chance of being a waste of effort and a 0.001% chance of destroying the entire Human race. 01:10:31 :-P 01:11:37 either they don't exist, they already know we are here, or we wouldn't want them to? 01:12:48 bbl 01:13:54 basically the chance that two civilizations should develop and not be millions of years apart in time is minimal 01:14:02 asdf 01:14:40 and if they are millions of years apart then the first one will have colonized the galaxy or destroyed itself before the other one arises 01:16:34 or the're just intorverts 01:18:09 hm... 01:20:22 there was this book i read about alien life that suggested maybe interstellar travel was _so_ awkward no civilization actually bothered to do it 01:21:07 alas, there is always another option, including the one we haven't thought of 01:22:23 I think this just about sums up the present day: http://en.wikipedia.org/wiki/Image:Population_curve.svg 01:22:26 -!- RodgerTheGreat has quit (Read error: 60 (Operation timed out)). 01:22:44 ignore the actual units of the y-axis or even what it's measuring 01:23:33 perhaps. it doesn't show the fact that the growth is now decelerating 01:23:58 I don't mean for population particulary. 01:24:14 An exponential growth curve should be the logo for the 21st century 01:24:58 http://en.wikipedia.org/wiki/Technological_singularity 01:24:58 Well, in _Orion's Arm_, there is a quite nice explanation using wormholes and time dilation that predicts that as long as intelligent civilisations are reasonably distant from one another, they will encounter one another while all having the about same tech level. 01:25:04 reddit# 01:25:45 reddit#? 01:26:05 I have read that already 01:26:27 The growth is decelerating? 01:26:48 heh 01:26:49 yes it has been predicted that it will stabilize around 9 billions or so 01:26:54 logistic 01:26:56 You mean the growth is going down, or it's actually slowing down? 01:27:09 slowing down 01:27:24 But it's currently above zero? 01:27:28 what caused the two dips in the 1000's? 01:27:32 yes 01:27:37 And, of course, the population is above zero as well? 01:27:41 one is the great plague 01:27:43 one of them is certainly the Black Death 01:28:01 ...Yes, I should have known the fact that growth is above zero as well... 01:28:25 ihope: do you know about differentiation? 01:28:35 oh nice the've actually got the data for analyis 01:28:40 Yep. 01:28:57 Derivatives and integrals... and limits. Calculus is fun. 01:29:12 what about? 01:29:48 What about what? 01:29:53 calculus 01:29:57 so i am saying that the second derivative of population wrt. time is negative 01:30:06 Fun. 01:30:48 i forget how to tell gnuplot to fit a curve 01:32:13 What about calculus is fun, you mean, then? 01:32:19 no 01:32:50 disregard my comment 01:35:20 wtf 01:35:26 "Undefined value during function evaluation" 01:37:47 -!- pikhq has quit (Read error: 110 (Connection timed out)). 01:38:09 anyone know gnuplot? 01:38:57 <_D6Gregor1RFeZi> Sort of 01:39:00 -!- digital_me has joined. 01:39:05 -!- pikhq has joined. 01:39:10 f(x) = a/(b + exp(-1*c*x)) 01:39:14 fit f(x) "/tmp/popdata" via a, b, c 01:39:22 <_D6Gregor1RFeZi> Not that well. 01:39:23 => Undefined value during function evaluation 01:39:52 bsmntbombdood: that almost looks like Haskell. 01:40:15 digital_me: do you know? 01:48:04 garg 01:48:54 -!- digital_me has quit ("brb"). 01:49:09 -!- digital_me has joined. 01:51:11 oh damn 01:51:15 the values are too big 01:52:04 exponential of large numbers? 01:52:09 yeah 01:52:13 :( 01:52:19 actually that shouldn't matter 01:52:25 only goes up to like 6000... 01:52:29 since the exponent is negative 01:52:41 yeah :/ 01:53:19 can you do if then else? 01:53:53 don't think 01:53:55 it would be reasonable to define exp(-6000) as 0 01:54:03 i'll just divide everything by 1000 01:54:10 wow, that's a terrible fit 01:54:53 right 01:55:54 this curve fitting sucks 01:58:12 oh, i can do conditionals 02:04:12 according to this model, in about 2700, the world population will go to 53,000 million, then by 2800 be -120,000 million 02:04:41 negative? 02:04:49 yeah 02:05:34 well i guess if we learn to control antimatter :) 02:07:16 it's barely changing my initial parameters :/ 02:08:18 perhaps your function is not suitable for least squares estimation or whatever gnuplot uses 02:08:35 what should i use? 02:09:13 i don't know 02:11:40 there's a big population spike at -400 02:12:56 the growth from -700 to -400 was the biggest for a long time 02:14:42 untill like 1600 02:14:51 then it just goes crazy 02:15:55 and those two happen to be around the first and second golden ages of science... 02:16:31 except that with the timing... 02:17:13 the first population increase may have caused the age of philosophy while the second was _caused_ by the age of science 02:17:47 -700 to -400 was a golden age of science? 02:18:01 well, -400 or so 02:18:07 -!- ihope has quit (Connection timed out). 02:18:38 with aristotle, euclid and everything. 02:19:19 of course i mean philosophy as an analogy of science 02:20:34 there was another jump at -4900 02:21:57 i don't think you can deduce that much 02:22:32 well, it looks pretty major when graphed 02:22:53 only with a log scale though 02:23:34 i mean, the numbers in the table are only accurate to the nearest million 02:23:45 *accurate=given 02:24:31 there may have been a jump from -5000 to -4000 but there is no way to say exactly when the growth started from the table 02:25:03 yeah 02:25:06 and there was a doubling in the next millennium 02:26:03 and each of the two next ones 02:26:45 and then more than tripled from -1000 to 0 02:27:02 heh, i tried to fit it using a sixth order polynomial. it failed. 02:27:16 so i'ld say the -5000..-4000 was pretty tame in comparison 02:27:59 probably that was when most of people shifted to agriculture 02:28:51 and then it grew exponentially until the potential for that technology was used up 02:29:47 Singular matrix in Invert_RtR! 02:54:34 -!- kxspxr has quit. 04:10:10 -!- GreaseMonkey has joined. 04:11:03 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:21:53 -!- digital_me has quit ("leaving"). 04:40:06 -!- oerjan has quit ("leaving"). 04:55:14 -!- RodgerTheGreat has joined. 04:55:30 'sup? 04:56:28 pus 05:01:20 antibiotics would be a good idea 05:03:27 the antibiotic alternative 05:13:36 <_D6Gregor1RFeZi> Anybody want to help me redesign Plof? 05:13:46 why, what's crap about it? 05:14:12 <_D6Gregor1RFeZi> There's a functions-that-return-deep vs functions-that-return-shallow problem. 05:14:24 <_D6Gregor1RFeZi> eg if returns deep, but normal functions return shallow. 05:15:07 <_D6Gregor1RFeZi> Lemme rephrase that: 05:15:15 <_D6Gregor1RFeZi> The 'if' function, for example, returns deep, but normal functions return shallow. 05:15:30 what's the diff between "deep" and "shallow"? 05:15:50 <_D6Gregor1RFeZi> An example: If you do this: a = { if(condition, { return 1; }); }; 05:15:59 <_D6Gregor1RFeZi> Then that inner return ought to return out of the a function. 05:16:04 <_D6Gregor1RFeZi> Even though it's several layers in. 05:16:13 <_D6Gregor1RFeZi> That's a deep return. 05:16:20 oh ok 05:16:34 weird, plof looks kinda like tomato 05:16:36 Hmm. 05:16:42 but implemented 05:16:48 Plof kicks ass. 05:17:03 <_D6Gregor1RFeZi> pikhq: Except for the return problem, which makes for some VERY ugly builtin functions :P 05:17:03 Although it does have a major issue (that being that it's not done). 05:17:08 though in tomato, to return something: 05:17:16 _D6Gregor1RFeZi: Yeah. . . 05:17:26 * pikhq contemplates a Plofish way to do that. . . 05:17:29 douche@(foo!4,bar!4) = { foo+bar; }; 05:17:35 <_D6Gregor1RFeZi> I think I need some kind of nomenclature to differentiate them, but that would increase the confusion involved in writing Plof by quite a bit :( 05:17:56 so how does while return? 05:18:10 <_D6Gregor1RFeZi> Deep as well. 05:18:21 k 05:19:02 a@(condition) = { if({condition}, { 1; }); }; 05:19:16 that is quite weird how plof has its similarities to tomato 05:19:30 <_D6Gregor1RFeZi> Hmmmm ... combination of an explicit way to note something as a deep-return function, then a way to catch returns from shallow-return functions. 05:19:36 i admit plof was made first 05:20:12 how about the last "dropped" value returns it? 05:20:29 <_D6Gregor1RFeZi> ... ? 05:20:47 dropped value, as in: 05:20:50 a+b; 05:20:56 you don't set it 05:20:59 i mean 05:21:06 you don't set a variable to it 05:21:37 <_D6Gregor1RFeZi> That doesn't really solve the problem :P 05:22:00 THEN, you can return that shallow, and then the outer function will return that value 05:23:30 Did you know that Firefox is already compatible with XHTML2.0? 05:24:05 -!- calamari has joined. 05:28:23 <_D6Gregor1RFeZi> I'm starting to go in a big loop on my deep-return stuff :P 05:28:38 <_D6Gregor1RFeZi> I keep whittling it down in my head, and then I end up right back where I am already. 05:29:01 <_D6Gregor1RFeZi> I think the unfortunate return mechanism is just implicit to the language design. 05:29:22 <_D6Gregor1RFeZi> e.g. any language which uses functions like Plof does will need to have a complex return system. 05:40:22 can't you just have implicit returns? 05:40:44 i mean, like functional languages? 05:40:58 bsmntbombdood: This is a functional language. 05:41:17 <_D6Gregor1RFeZi> It's mostly functional, but functions can have a list of statements instead of an expression. 05:41:27 <_D6Gregor1RFeZi> As such, the implicit return concept sort of breaks down. 05:41:42 you'll never beat lisp 05:41:45 * bsmntbombdood goes 05:41:52 That just makes it an odd functional language, Gregor. 05:41:58 <_D6Gregor1RFeZi> Lisp has already been beaten, bsmntbombdood :P 05:42:04 NEVAR!!!!!!!! 05:42:05 <_D6Gregor1RFeZi> pikhq: True. 05:43:27 did you fix arrays yet? 05:43:58 <_D6Gregor1RFeZi> Arrays do woik 05:44:40 how? 05:45:01 <_D6Gregor1RFeZi> a = array(1, 2, 3); a[2] = 4; a[] = 7; 05:45:20 cool 05:45:29 so operator overloading? 05:45:43 <_D6Gregor1RFeZi> No - that's another reason I want to reorganize it. 05:45:46 wait, a[] = 7; ? 05:45:58 <_D6Gregor1RFeZi> bsmntbombdood: That's concatenation. 05:46:14 :/ 05:46:31 overload + for that 05:46:46 Expose a method of overloading operators. 05:46:46 <_D6Gregor1RFeZi> What's wrong with a[] = 7 05:46:49 <_D6Gregor1RFeZi> = can't be overloaded because of how objects work, + can't be overloaded because it already has a meaning in terms of objects. 05:46:56 :p 05:46:59 fugly 05:47:06 <_D6Gregor1RFeZi> Anything else could be overloaded, but it doesn't make sense to allow -, * or / to be overloaded given that + can't be. 05:47:12 Although yes, yes. . . 05:47:12 a[] = 7 doesn't make sense 05:47:31 <_D6Gregor1RFeZi> bsmntbombdood: It's how PHP does it, and I find it totally intuitive there :) 05:47:41 object3=object + object2; makes a huge, new object. . . 05:47:48 php sure is a symbol of elegance 05:47:54 <_D6Gregor1RFeZi> pikhq: Yeah. 05:48:41 how do you add numbers, then? 05:48:46 <_D6Gregor1RFeZi> + 05:49:05 yuck 05:49:09 _D6Gregor1RFeZi: Are you going to think of a way of doing command line arguments? 05:49:16 bsmntbombdood: Numbers aren't classes. 05:49:22 <_D6Gregor1RFeZi> pikhq: I'm hoping so ^^ 05:49:24 yuck again 05:49:35 that's gross 05:49:36 afk food 05:49:42 <_D6Gregor1RFeZi> WTF bsmntbombdood, are you a Java programmer? Shaddap. 05:49:55 java? 05:50:22 [func=(a as int){println("Foo");}] 05:50:22 <_D6Gregor1RFeZi> In Java, everything is an Object, but they allow gigantic exceptions to their rules of operator overloading to make that work. 05:50:44 everything isn't an object in java 05:51:12 Int foo = new(Int);, I believe, is valid Java. 05:51:25 <_D6Gregor1RFeZi> X_X 05:51:43 java is yucky 05:51:51 (I don't do Java, so take that with a grain of salt) 05:52:45 <_D6Gregor1RFeZi> pikhq: I'm thinking about changing + for objects to something else, and thereby allowing overloading of everything but = 05:53:01 <_D6Gregor1RFeZi> Maybe : 05:53:08 why not overload =? 05:53:28 <_D6Gregor1RFeZi> bsmntbombdood: a = [ foobar ]; b = a; c = b; d = [ bleh ]; 05:54:00 <_D6Gregor1RFeZi> bsmntbombdood: Which is to say, it's ambiguous. 05:54:04 Suggestion. . . 05:54:26 Class and function definitions use a new operator, :=? 05:54:32 * bsmntbombdood gones 05:55:03 <_D6Gregor1RFeZi> pikhq: Hmmmmmm ... I sort of don't like the inconsistency that would create. 05:55:38 Yeah. . . 05:56:35 <_D6Gregor1RFeZi> >_^ 05:58:42 <_D6Gregor1RFeZi> I'm thinking about making programming language design my specialty for grad school. 05:58:59 Heheh. 06:02:09 -!- RodgerTheGreat has quit. 06:02:50 -!- RodgerTheGreat has joined. 06:06:34 back 06:10:32 nice idea 06:10:45 <_D6Gregor1RFeZi> I'm thinking about making programming language design my specialty for grad school. 06:46:11 -!- flagitious has quit ("Leaving"). 07:10:48 -!- na[zZz]gjunk has quit ("Bi-la Kaifa"). 07:30:04 -!- Sukoshi has quit (Read error: 110 (Connection timed out)). 07:33:13 -!- Sukoshi has joined. 07:33:35 -!- Sukoshi has quit (Remote closed the connection). 07:34:14 -!- Sukoshi has joined. 07:41:56 -!- Arrogant has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:25:47 -!- cmeme has quit ("Client terminated by server"). 08:25:58 -!- cmeme has joined. 08:27:44 -!- puzzlet has quit (Remote closed the connection). 08:27:52 -!- puzzlet has joined. 08:33:12 -!- GreaseMonkey has quit ("nighty everyone"). 09:30:21 -!- calamari has quit ("Leaving"). 11:02:35 -!- kxspxr has joined. 11:05:51 -!- kxspxr has quit (Client Quit). 11:06:31 -!- Arrogant has quit ("Leaving"). 12:02:44 -!- ihope_ has joined. 12:02:56 -!- ihope_ has changed nick to ihope. 12:22:32 -!- ihope has quit (Connection timed out). 14:40:31 # I'm being followed by /etc/shaddow # -- by /bin/cat stevens 14:49:58 -!- nazgjunk has joined. 14:56:26 -!- helios24 has joined. 14:57:44 hi * 2 14:58:31 _D6Gregor1RFeZi: why? 15:19:04 -!- helios24 has quit ("Leaving"). 15:19:06 -!- helios24 has joined. 15:20:20 * SimonRC goes 15:30:38 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 15:41:37 -!- helios24 has quit ("Leaving"). 15:41:40 -!- helios24 has joined. 15:44:18 -!- nazgjunk has joined. 15:51:20 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 15:51:21 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net). 16:00:24 -!- anonfunc has joined. 16:01:22 -!- helios24 has joined. 16:01:41 -!- anonfunc has quit (Client Quit). 16:17:00 -!- FabioNET has joined. 16:25:22 -!- _D6Gregor1RFeZi has changed nick to GregorR. 16:57:46 -!- nazgjunk has quit ("Bi-la Kaifa"). 17:03:58 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)). 17:33:32 -!- nazgjunk has joined. 17:48:14 -!- kxspxr has joined. 17:59:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:59:45 -!- nazgjunk has joined. 18:01:40 -!- RodgerTheGreat has joined. 18:07:11 -!- nazgjunk has quit ("Bi-la Kaifa"). 18:17:11 -!- jix__ has joined. 18:17:54 -!- jix__ has changed nick to jix. 18:24:32 -!- sebbu has joined. 18:40:16 -!- calamari has joined. 18:45:55 -!- _FabioNET_ has joined. 18:46:18 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 18:48:02 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 18:49:58 -!- digital_me has joined. 18:57:43 -!- RodgerTheGreat has joined. 19:07:43 -!- Arrogant has joined. 19:12:51 -!- helios24 has quit ("Leaving"). 19:15:13 -!- helios24 has joined. 19:35:57 -!- wooby has joined. 19:35:57 -!- wooby has quit (Remote closed the connection). 19:38:47 -!- helios24 has quit (Remote closed the connection). 19:45:30 -!- helios24 has joined. 19:45:30 -!- calamari has quit ("Leaving"). 20:08:16 -!- RodgerTheGreat has quit (Read error: 110 (Connection timed out)). 20:44:46 -!- helios24 has quit ("Leaving"). 20:46:32 -!- tgwizard has joined. 21:01:17 -!- RodgerTheGreat has joined. 21:01:31 -!- sebbu2 has joined. 21:11:32 -!- oerjan has joined. 21:18:19 -!- ihope_ has joined. 21:18:34 -!- ihope_ has changed nick to ihope. 21:18:57 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:19:13 -!- nazgjunk has joined. 21:21:17 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:21:17 -!- sebbu2 has changed nick to sebbu. 21:27:21 -!- RodgerTheGreat has quit. 21:27:23 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:27:26 -!- UpTheDownstair has joined. 21:31:16 -!- UpTheDownstair has changed nick to nazgjunk. 21:45:51 -!- UpTheDownstair has joined. 21:46:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:46:11 -!- UpTheDownstair has changed nick to nazgjunk. 21:57:21 -!- nazgjunk has quit ("i seriously need some sleep -_- guh."). 21:59:59 -!- kxspxr has quit. 22:00:42 -!- RodgerTheGreat has joined. 22:08:15 -!- pikhq has quit (Read error: 110 (Connection timed out)). 22:13:50 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 22:15:45 -!- _FabioNET_ has quit ("A domani..."). 22:27:09 Interestingly there was recently mention of deep vs. shallow return on Lambda the Ultimate 22:27:21 GregorR: ^ 22:27:51 Hm 22:28:50 my impression was that shallow return made most sense if the language distinguished methods from closures 22:29:19 the discussion was in the context of lexical scoping 22:30:09 while deep return made most sense if there were only one kind of functions 22:30:28 -!- puzzlet has joined. 22:30:44 no me understando 22:30:47 but i thought of one possibility: you could allow labels on blocks, to return from them by name 22:31:01 CL does that 22:31:07 (the last in the context of your plof question) 22:31:40 so does perl i think 22:31:53 another P-language :) 22:33:53 does plof have lexical scoping? 22:38:34 -!- Arrogant has quit ("Leaving"). 22:53:47 "No me understando"? Sheesh, even GregorR's Spanish is better than that. 22:53:50 :-P 22:54:07 heck even mine :) 22:54:13 i think 22:54:23 heh 22:55:11 at least you got the verb ending right :) 22:56:38 oerjan: pff. Can you translate "I would have been to like it if he hadn't been wanting to eat" into Spanish? 22:57:06 Actually, no. 22:57:19 "I would have been to like it if it weren't for his wanting to eat." 22:57:34 can you translate that into English first? :) 22:58:08 and no, i doubt i could go beyond the present tense without googling somewhat 22:58:18 "I would have been to like it" is perfectly good and understandable English, isn't it? 22:58:24 BabelFish translation: "Habría sido como a él si no estaba para el suyo que deseaba comer." 22:58:51 BabelFish back-translation: "He would have been like a he if it were not for his that wished to eat." 22:59:31 perhaps but it is excessive for English, it reads almost like Douglas Adams' wioll haven been 22:59:58 Can you say those last three words again? 23:00:31 my memory may be shaky but those were part of his mock grammar for time travellers 23:01:39 Did he actually include "would have been to" in there somewhere?\ 23:02:31 no 23:02:51 A Google search for "I would have been to" yields things like "I couldn't talk about it to anybody, I would have been to ashamed." 23:03:16 Aha! "I would have been to see Himmler or Hitler on the very first day; on the very same day." 23:03:19 which is a misspelling of "too" 23:03:53 Yes. 23:04:07 but "be to see" is an undividable phrase, isn't it? 23:04:56 i am sure there may be occasions when you need that precision, but: 23:05:05 Also, "I would have been to like it if it weren't for his wanting to eat." through Lost in Translation with Chinese, Japanese and Korean enabled produces "_ way I, because this material, with which contat of sees, we wished, poss est did not know _" 23:05:14 Is it undividable? 23:05:37 for most cases you would do just as well with "I would have liked it" etc. 23:07:05 "be to see" certainly does not have the usual future implication of "be to" 23:07:58 eh, wait 23:08:38 actually i find that Hitler quote ambiguous in that respect 23:09:19 it would depend on context 23:10:48 But in "Have you been to see him?" it would be a phrase 23:11:31 or at least a different kind of construction 23:11:41 I see. 23:11:49 anyhow, you are the native speaker here 23:11:55 So like "gone to see"? 23:12:03 yeah 23:28:12 -!- sebbu has quit ("@+"). 2007-02-13: 00:02:04 -!- Sgeo has joined. 00:23:31 -!- ShadowHntr has joined. 00:28:31 -!- tgwizard has quit (Remote closed the connection). 00:40:48 AFK 00:41:05 MAN LOVE RULES OK 00:42:15 TIME FLIES LIKE AN ARROW 00:42:28 FRUIT FLIES LIKE A BANANA 00:42:39 HILLARY FOR PRESIDENT 00:45:28 FOR A HILLARIOUS PRESIDENT 00:45:31 back 00:46:05 COUNTRY WESTERN IS RUBBISH 00:46:18 http://youtube.com/watch?v=G6MJVzXbqRU 00:46:44 WESTERN COUNTRIES ARE BULLISH 00:48:25 MAN LOVE RULES OK 00:48:36 THE OLD MAN THE BOATS 00:48:49 CAPITAL LETTERS ON MY HAT 00:48:59 _Top Gear_ are great 00:49:06 *is 00:49:13 -!- ihope has quit (Read error: 110 (Connection timed out)). 00:49:20 never heard of it 00:49:27 * SimonRC explains... 00:49:35 except for that clip 00:50:05 For you Americans out there, _Top Gear_ is a sitcom about 3 guys whose job is to review and rate cars... 00:50:42 there are genuine car reviews in the show, but much of it is about the stuff they get up to by claiming expenses off their employer. 01:02:20 Ok, so I lied. 01:02:46 It is actually supposed to be a car-reviewing show, and only incidentally a sitcom. 01:03:26 now that is what YOU think 01:14:18 * SimonRC suddenly wonders why people have pets. Yer stereotypical objective being would see it as a waste of effort for no appaent gain. 01:14:32 Humans know different though... 01:14:36 companionship? 01:15:16 your stereotypical objective being would exterminate humans and replace them by more efficient robots 01:16:02 bsmntbombdood: yeah, but don't other humans give that? 01:16:09 no 01:16:13 pets never bitch at you 01:16:15 oerjan: I was looking for a more sensible answer. 01:16:29 have i ever been known to be sensible? 01:16:35 sigh 01:17:23 there is probably less effort with a pet than with humans 01:17:39 yeah 01:17:48 food and a place to sleep and a pet is happy 01:18:07 hmm, yeah 01:19:17 to live with a human, it has to like you 01:20:36 Same for animals I would have thought. 01:21:10 Ah, but there are plenty of species that are more friendly than humans. 01:21:16 individually, at least. 01:21:53 yeah 01:22:08 animals are less complicated 01:22:18 a dog is going to like you even if no chick will give you a chance 01:22:31 unless your a total fuckhead 01:22:57 yeah, ok 01:25:23 The question came up because I was wondering why something of superhuman intelligence would keep humans as pets. 01:26:28 you writing an sf story? 01:28:06 not exactly 01:28:14 ... 01:28:42 hm... would a superintelligent being be able to make humans enjoy being its pets? 01:28:56 depends on the definition of "pet" 01:29:00 and on the humans 01:29:17 i suppose so, since humans worship gods 01:30:04 for that matter, maybe we already are pets 01:30:16 ... If you look after them, give them the correct environment (including other humans of course) and work that they enjoy, they will be perfectly happy. 01:30:36 plus insome ways you will understand them better than any humans can 01:30:59 http://fof.durge.org/~sc/Kigdatsi/ 01:31:04 perhaps there is an unending chain of pet-owner relationships 01:31:07 nah 01:31:33 I have been inconsistant over the years, but the above is a collection of things I have written. 01:32:28 the messages to and from "Fonori" under "written_cwi" are the most important recent conversation, though they are about a specific scenario. 01:32:33 i suppose the possibility of that would depend on whether there is an unending progression of possible levels of intelligence 01:32:39 yes 02:40:17 -!- SimonRC has changed nick to CRnomiS. 02:40:26 -!- CRnomiS has changed nick to SimonRC. 03:01:56 -!- calamari has joined. 04:04:02 -!- oerjan has quit ("leaving"). 05:16:53 -!- ShadowHntr has quit ("End of line."). 05:26:45 -!- Stark has joined. 05:28:14 -!- Stark has changed nick to Starked. 05:28:53 -!- Starked has left (?). 05:29:05 -!- Starked has joined. 05:38:10 -!- Starked has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.9/2006120612]"). 05:54:52 -!- digital_me has quit (Read error: 110 (Connection timed out)). 06:11:23 -!- calamari has quit ("Leaving"). 06:33:24 -!- anonfunc has joined. 07:25:28 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 07:29:45 -!- RodgerTheGreat has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 13:22:25 -!- helios24 has joined. 13:29:49 -!- helios24 has quit ("Leaving"). 13:39:05 -!- helios24 has joined. 13:47:31 -!- helios24 has quit (Remote closed the connection). 13:48:28 -!- helios24 has joined. 13:50:09 -!- helios24 has quit (Client Quit). 15:11:28 -!- helios24 has joined. 15:37:56 -!- ShadowHntr has joined. 16:01:43 -!- anonfunc has quit. 16:24:46 -!- tgwizard has joined. 16:24:46 -!- RodgerTheGreat has joined. 16:24:46 -!- jix has joined. 16:34:51 -!- nazgjunk has joined. 17:22:15 -!- crathman has joined. 17:37:02 * SimonRC is going to meet Kevin Warwick. 17:50:07 kewho. 17:51:18 RTFW 17:53:51 tfwhat 17:57:06 Wikipedia 17:57:14 oh pf. 18:00:10 i'm not reading that! 18:03:32 -!- oerjan has joined. 18:07:28 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 18:07:56 -!- sebbu has joined. 18:08:34 hi everybody 18:08:48 hi 18:09:25 hy 18:15:44 hi 18:19:32 -!- UpTheDownstair has joined. 18:36:37 -!- nazgjunk has quit (Success). 18:44:22 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 18:45:41 -!- FabioNET has joined. 19:11:29 -!- UpTheDownstair has quit (Success). 19:11:33 -!- nazgjunk has joined. 19:18:52 -!- flagitious has joined. 20:37:15 -!- crathman has joined. 20:55:51 -!- FabioNET has quit ("A domani..."). 21:02:14 -!- sebbu2 has joined. 21:10:07 -!- helios24 has quit ("Leaving"). 21:17:03 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:20:37 -!- sebbu has quit (Read error: 110 (Connection timed out)). 21:27:54 -!- FabioNET has joined. 21:49:48 -!- anonfunc has joined. 21:52:28 -!- anonfunc has quit (Client Quit). 22:13:34 -!- nazgjunk has quit ("Bi-la Kaifa"). 22:55:55 -!- FabioNET has quit ("A domani..."). 22:57:59 -!- NK\_ has quit (Remote closed the connection). 22:58:01 -!- NK\ has joined. 23:33:16 -!- sebbu2 has quit ("@+"). 23:36:03 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 23:55:35 -!- anonfunc has joined. 2007-02-14: 00:04:39 -!- RodgerTheGreat has quit. 01:04:38 -!- crathman has joined. 01:07:33 I need a language that does implicit currying 01:11:03 * oerjan points at Haskell 01:11:09 * oerjan ducks 01:11:44 also Ocaml 01:11:44 haskell does? 01:12:14 if implicit currying means what i think it means 01:13:01 (xy.E)z ==> \y.E[x := z] 01:13:11 is what i mean by implicit currying 01:13:24 er 01:13:40 (\x y.E)z ==> \y.E[x := z] 01:14:02 yep, haskell does that 01:14:25 cool 01:15:44 as well as the reverse: (\x -> \y -> E) = \x y -> E 01:17:42 in x y z, is it (x y) z? 01:17:49 yep 01:18:04 k 01:19:36 i thought you were reading up on haskell, or maybe that was the flour-product oriented guy 01:20:48 I was 01:28:31 bah, haskell won't let me redefine if 01:31:22 or null, or map 01:31:44 null and map can be redefined 01:32:01 import Prelude hiding (null, map) 01:32:16 if is a keyword however. 01:33:02 shouldn't need to be in a lazy language 01:33:20 it's so that you can have then and else written out 01:34:20 hah, great error message 01:35:01 but in principle it is just syntactic sugar for case a of True -> b; False -> c 01:35:11 what message? 01:35:17 http://pastebin.ca/354583 01:36:15 Did you get that? 01:36:25 yeah 01:37:00 A function cannot return a function of the same type 01:37:08 that would trigger such a thing 01:37:29 are you trying to do combinators? 01:37:44 no 01:38:06 i did map f l = (null l) nil (cons (f (car l)) (map f (cdr l))) 01:38:58 In the first argument of `cdr', namely `l' 01:38:59 In the second argument of `map', namely `(cdr l)' 01:41:48 well if that should work then you would have to use combinatory booleans for (null l) 01:42:27 (null l) ==> \x y -> x or \x y -> y 01:42:40 exactly 01:43:33 So, how do i fix it? 01:43:41 perhaps the list is the problem. 01:43:50 what is cons defined as? 01:44:08 cons x y = \f -> f x y 01:44:40 thought so. cons x y cannot then have the same type as y. 01:45:02 bah 01:45:12 without such an occurs check error, because the type becomes recursive 01:45:39 you can do it with ocaml if you use the -t command line option 01:45:52 i did it for an Unlambda "compiler" once 01:46:08 so there's no way to do this in haskell? 01:46:23 not without an option to turn of the occurs check 01:46:28 *off 01:46:43 i don't remember if there is such an option 01:46:54 are you using ghc or hugs? 01:47:05 -!- flapjack has joined. 01:47:12 ghc 01:47:36 of course for portability you can wrap it in a datatype Fun = Fun -> Fun 01:47:47 i mean: 01:47:57 data Fun = Fun (Fun -> Fun) 01:48:07 huh? 01:48:52 the occurs check only triggers if the type recursion is not inside a datatype definition 01:48:53 -!- calamari has joined. 01:49:55 but of course if your point is to use a language where there is no syntactic noise with combinators, that doesn't work 01:50:15 -!- ShadowHntr has quit (Client Quit). 01:50:34 let me check the ghc webpage 01:54:36 -!- voodooattack has joined. 01:54:44 I should just write my own beta reducer 01:55:45 -!- flapjack has left (?). 01:57:22 alas, i cannot find a ghc option to turn it off 01:59:41 and ocaml won't work if you depend on lazyness 02:01:01 lame 02:03:57 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 02:04:19 -!- anonfunc has quit. 02:06:23 the best i can think of with haskell is to start with data Fun = Fun { fun :: Fun -> Fun } and define an application operator from that 02:07:31 darn, that would certainly ruin the implicit currying 02:20:32 print "hi" 02:31:53 i kicked my power cable out :( 02:32:18 whoops 02:34:30 i should say that someone somewhere must have written a minimal lambda calculus evaluator in the haskell style already. hm... 02:34:41 perhaps there is one in LambdaBot. 02:43:06 -!- Sgeo has joined. 02:51:28 Sheesh. It says on the webpage that Lambdabot has a lambda calculus but I cannot find the command... 02:51:52 * bsmntbombdood goes back to beta reduction with pencil and paper 02:55:22 hey, try this page: http://www.dina.dk/~sestoft/lamreduce/index.html 03:03:04 oh nice 03:04:37 bah 03:04:44 they have stuff already bound :/ 03:07:52 -!- anonfunc has joined. 03:12:31 you don't have to use it you know :) 03:27:22 -!- crathman has joined. 03:37:31 -!- bsmntbombdood has changed nick to irt3h1337. 03:38:10 -!- irt3h1337 has changed nick to bsmntbombdood. 03:38:45 irt3h? 03:38:55 i r t3h 1337 03:39:01 ah. 03:39:05 joke in another channel 03:40:23 it's really quite absurd that i understand what 1337 means :) 03:41:17 that's absurd? 03:41:39 Sir, please recalibrate your absurd-o-meter 03:42:44 of course it pales compared with the fact that i am on this channel :) 03:43:38 and that i am trying to write a malbolge dialect. 03:44:15 not a whole lot of esotericallity goes on in this channel 03:44:19 more just CS 03:46:25 you mean we need to find a medium and have a sance? 03:46:37 uh...what? 03:47:11 why would we want to communicate with the dead? 03:47:15 or study old alchemist books 03:47:58 to be esoteric of course 03:48:15 ponder weak and weary over many a quaint and curious volume of forgotten lore 04:07:37 -!- anonfunc_ has joined. 04:07:41 -!- Sgeo has quit (Remote closed the connection). 04:07:41 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 04:20:34 -!- anonfunc has quit (Read error: 110 (Connection timed out)). 04:25:33 silly rabbit, numbers in hardware are for C programmers! 04:41:27 -!- oerjan has quit ("Good night"). 04:41:37 -!- anonfunc_ has changed nick to anonfunc. 05:08:10 -!- calamari has quit ("Leaving"). 05:36:51 -!- flagitious has quit ("Leaving"). 06:06:39 -!- ShadowHntr has joined. 06:35:12 i agree 06:35:17 this channel is not esoteric enough. 06:35:34 to fix that, from now on, English is officially forbidden. 06:36:03 You have five minutes for any last thoughts (in English). 06:36:07 channel.language = pseudocode? 06:36:27 anybody caught using English after that will be publicly humiliated. 06:36:46 (in pseudocode) 06:37:34 humiliation.language = pseudocode; humiliation.effectiveness < EFFCTVNS_LOW 06:39:59 false 06:40:06 humiliation.tool = whip; 06:40:45 libToilet->Flush() 06:41:20 humiliate (x) = begin; x.remove(pants); humiliation.tool.apply(x.behind); end 06:43:50 lament.doLament(100); 06:44:34 attack(voodoo) 06:44:58 ceaseAttack(voodoo); 06:45:23 attack(lament, &wpnNuclearBomb); 06:45:42 nu, teper' nash kanal gorazdo bolee ezoterichen. 06:46:32 ni siquiera nosotros entendemos a nosotros mismos 06:46:49 speakko englaisso? :P 06:47:51 nao, so pode falar os outros idiomas 06:50:06 xD 07:13:49 -!- ShadowHntr has quit (Client Quit). 07:16:34 -!- helios24 has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:10:55 -!- Arrogant has joined. 08:32:49 -!- Arrogant has quit ("Leaving"). 09:34:57 -!- voodooattack has quit. 12:32:13 -!- jix has joined. 14:06:05 -!- nazgjunk has joined. 14:33:13 gwaq trono el trope y loq 14:33:53 -!- sekhmet has quit ("away"). 14:34:03 wern et we poneq ba nog 14:35:20 (map cut-with-knives (channel-users)) 14:37:50 (map (compose repair cut-with-knives) (channel-users)) 14:41:15 -!- nazgjunk has quit ("Bi-la Kaifa"). 14:54:31 -!- sekhmet has joined. 15:04:21 vi kane sake a zx3 15:23:08 -!- sekhmet has quit ("meh"). 15:23:35 -!- crathman has joined. 15:36:50 -!- sekhmet has joined. 15:48:52 -!- RodgerTheGreat has joined. 17:33:55 -!- anonfunc has quit. 17:45:27 -!- tgwizard has joined. 18:12:56 -!- puzzlet has quit (Read error: 110 (Connection timed out)). 18:21:31 -!- sebbu has joined. 18:23:43 -!- kxspxr has joined. 18:37:05 -!- oerjan has joined. 18:37:43 -!- digital_me has joined. 18:43:49 what's \x y.y with S and K? 18:44:42 Language.English.status == Forbidden 18:45:12 oerjan.languages["pseudocode"].quality < LQUAL_MEDIUM 18:45:51 Language.Pseudocode.Base == "Haskell" 18:45:58 channel.send(oerjan.compute(T[\x y.y])) 18:46:21 oerjan.ooTree.reasonable = false; 18:46:45 typeof(languages) == TYPE_AARRAY 18:46:51 unlambdaify(\x y.y) == K I == K (S K K) 18:47:17 oooo 18:48:07 Language.Haskell.ModuleTree /= ObjectOriented 18:49:03 no me understando 18:49:50 Che cosa il sua problemo? 18:51:23 \x y.y == \x. \y.y == \x. I == K I 18:51:43 O, lenguas natural estan OK? 18:52:20 Natrlich, nur Englisch ist verboten. 18:52:52 Men ikke la det utarte, OK? 18:53:21 Pero, no hablo lenguas con exceptin del ingls :( 18:53:47 !help 18:53:50 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 18:53:52 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 18:54:07 EgoBot es exento :P 18:54:31 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 18:54:32 Pseudocode perfettamente buono. 18:54:51 unlambdaify(\x y.x y) 18:54:52 Qu es "perfettamente"? 18:55:53 "perfettamente" == Italian.AdverbialFormOf("perfetto") 18:56:12 Y perfetto es? 18:56:31 italian["perfetto"].toEnglish(); 18:56:45 "perfetto" = Oerjan.GuessItalianEquivalence("perfect") 18:56:59 Ah, s s. 18:57:23 Esto conversacin es muy largo X-P 18:57:45 Err, lento 18:58:16 [spanish[x].toEnglish()| x <- ["largo","lento"] 18:58:21 *]] 18:58:46 spanish["lento"].toEnglish() == "slow" 18:58:55 spanish["largo"] == NULL 18:59:04 (Maybe :P) 18:59:29 Protest.basedOn(existenceOf("Key Largo")) 19:05:37 channel.language = English 19:05:38 \x y.x y == \x.\y.x y == \x.(S (K x)) I == S (S (K S) (S (K K) I)) (K I) 19:05:39 Ha! 19:06:47 http://oerjan.nvg.org/esoteric/ulify2.scm 19:07:19 fun 19:11:10 It's for unlambda, not pure combinator calculus however. 19:11:57 -!- kxspxr has quit. 19:15:36 why is it called calculus? 19:15:52 -!- helios24 has quit (Read error: 60 (Operation timed out)). 19:16:28 because it is a system for calculating functions 19:28:13 \x y.y == SK 19:28:24 ha! shorter 19:28:46 ah yes, the KI = SK equation 19:31:01 it's not valid for unlambda though - it breaks with side effects 19:32:01 ha! side effects 19:32:10 oh come on 19:32:12 http://ling.ucsd.edu/~barker/Iota/ 19:35:08 what about it? 19:37:58 crazy 19:39:54 ok 19:43:32 ummm 19:43:33 == (^x.xSK)(^x.xSK) 19:43:33 == (^x.xSK)SK 19:43:34 == SSKK 19:43:53 is that wrong or am i missing something? 19:45:12 i think you mean SKSK 19:45:54 that's what i thought 19:46:05 that's not what it says on that page 19:48:15 hm... SKSK = KK(SK) = K 19:48:19 right 19:48:31 so *ii isn't I 19:49:06 and the expression given for K is more complicated 19:50:15 weird 19:51:19 in fact all the others use the first one, so they are wrong too 19:53:13 yeah 19:57:05 however, *ii = K and *i*ii = S, so it can be easily fixed 19:57:43 heh, his are way too complicated 20:01:14 i'll make a note about it on our wiki 20:02:09 back to class 20:07:19 eh, wait 20:07:25 we are wrong 20:07:57 and the page is right 20:10:34 because in (^x.xSK)SK, only the S should be beta substituted 20:35:12 can i see a brainfuck implementation with haskell? 20:35:27 hm... 20:35:36 there is one on Lambdabot 20:35:37 i just can't figure out how imperativeness is done effectively with a purely funxxxxional lang 20:35:48 but then again, it's proly easy 20:35:55 -!- helios24 has joined. 20:35:58 don't you know about monads? 20:36:12 i thought they might be the answer 20:36:29 although it's only I/O that really needs it for brainfuck 20:36:31 i'm one of the idiot who can't figure monads out 20:36:37 *idiots 20:37:07 but, does the massive array have to be cloned on every step? 20:37:21 or do monads somehow handle it haxxorly? 20:37:52 i get leet-wannabe when i'm tired, sorry :) 20:37:58 no. you can use two linked lists, one for everything left of the current position and one for everything to the right. 20:38:35 because brainfuck is not really random access. 20:39:03 the brainfuck state can easily be done purely functionally. 20:39:57 that's exactly what i can't figure out, is there an implementation :P 20:40:32 you can make one in 5 min i'm sure 20:40:33 :D 20:41:46 also haskell has a module called Data.Array.Diff that cheats in such a way that arrays can be changed efficiently without anyone noticing that it's not functional. 20:41:54 *purely functional 20:42:11 -!- helios24 has quit ("Leaving"). 20:42:46 "When the // operator is applied to a diff array, its contents are physically updated in place. The old array silently changes its representation without changing the visible behavior: it stores a link to the new current array along with the difference to be applied to get the old contents." 20:42:56 also, brainfuck is what i always do when i begin learning a language, since it isn't as easy (or i can't do it in the usual way), i'd like to see it :D 20:43:00 okay 20:47:49 good grief. the Lambdabot version is excessively complicated. 20:48:17 -!- helios24 has joined. 20:48:46 and mercilessly non-pure 20:49:10 would it take you long to make one? :P 20:49:24 (i'm not sure what you were talking about, though) 20:49:52 I'm talking about http://www.cse.unsw.edu.au/~dons/lambdabot/scripts/BF.hs 20:50:17 it shouldn't take too long since i already started writing one a while ago 20:51:25 but i'll try and see if there isn't a finished one somewhere 20:52:05 i wrote one in php in 15 min when i finally read the spec.... then debugged for 2 hours to find out my code was right but i had confused output and return values when writing test cases :P 20:54:05 i could become a professional brainfuck interpreter coder or something 20:54:14 i've written maybe 50 or smth :D 20:59:13 found one, it uses a real functional tape but mysteriously uses a tape for the program as well 20:59:39 http://www.joachim-breitner.de/blog/archives/161-Brainfuck-interpreter-in-Haskell.html 21:00:26 thanks, i'll try to read that 21:03:09 my own interpreter got buried under all the configuration options i wanted to include 21:03:10 -!- sebbu2 has joined. 21:04:40 although it does a more proper parsing of the brainfuck, so it doesn't have to search through the program for matching loops 21:05:15 i have one in c++ that does nice circular tree structures 21:05:21 (i don't know the term) 21:05:35 like... a list and [] are in a sublist 21:05:45 nesting 21:05:46 maybe 21:05:47 :D 21:07:15 i had this brainfuck quine, ran for 6 days on my old brainfuck interpreter, so i made a new one that used hashmaps or smth for the loops, ran for 8 hours i think, then made a good one, with as much non-algorithmic optimization i can think of, 6 hours 21:07:19 not circular, that would be if some of the sublists are equal to the list itself 21:07:33 then realized the quine did a [+]... and i was using ints :) 21:07:41 heh :) 21:07:47 took it of and it ran in a microsecond or smth xD 21:07:49 *off 21:07:54 i mean, put chars there 21:08:20 yeah, even poorly implemented brainfuck is not _that_ inefficient :) 21:09:05 well, i though it migh've been an only mathematically proven quine or smth, didn't even look at it until caught a glimpse of [+] and burst into laughter :P 21:09:41 just be glad you didn't use bignums :) 21:10:23 well, i think i'd've closed the prog after a week :D 21:10:39 hmm... i think it didn't get till the end now that i come to think of it 21:11:14 sometimes i wonder how unpractical i can get, 30 hours of work over a brainfuck code i don't even look at :D 21:11:22 a bignum brainfuck implementation should be easy in Haskell though 21:11:42 yeah, well, in anything else than c++ actually 21:12:03 c++ doesn't have bignums in the standard package 21:12:07 i suppose 21:12:42 java does, python does, vb does, that's pretty much all langs i know thoroughly :< 21:12:49 -!- helios24 has quit ("Leaving"). 21:14:02 in c++ you'd have to dl boost, but i think it's easier to write something yourself than dl it :D 21:14:13 heh 21:14:27 at least more fun 21:15:05 well, a good bignum implementation is not that trivial, especially huge multiplies 21:15:11 true 21:15:25 that's why i've never gotten one to work for all operators 21:15:36 or, never implemented all of them rather 21:15:51 i've done a few bignum classes in c++ 21:16:28 i think i did multiplication with addition in the first one :P 21:17:02 -!- GregorR has changed nick to Gonee. 21:17:05 _just_ addition? not even shifts? 21:18:44 ^ with *, * with +, + with inc, inc with binary logic and you get the winning combination 21:18:51 :) 21:19:03 i don't remember, i was a noob :P 21:19:28 -!- Gonee has changed nick to _D6Gregor1RFeZi. 21:20:14 gregor now consumes reality again. 21:20:31 <_D6Gregor1RFeZi> It's what I do. 21:21:03 and produces ... what? int-elligence, perhaps. 21:21:25 -!- sebbu has quit (Connection timed out). 21:21:26 -!- sebbu2 has changed nick to sebbu. 21:21:54 or was that the other way around. 21:23:17 -!- Sgeo has joined. 21:57:59 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:19:38 what does const do in haskellllll 22:19:39 ? 22:20:10 i COULD ask on #haskell of course... 22:20:20 const = K 22:20:34 identity? 22:20:50 so... useless? :P 22:20:57 const x y = x 22:21:19 ohhhh 22:21:30 not useless, it is quite useful in higher-order programs 22:21:37 yeah, prolly 22:21:40 btw, id x = x 22:22:08 isn't it rather a function that returns x with any arg? 22:22:41 const x is such a function yes. 22:23:22 aaaaa so NOT id 22:23:35 const /= id 22:23:41 no, id is id. :) 22:23:49 identically :D 22:23:56 oh, so it seems :P 22:24:36 i don't know if the S combinator has a name in haskell though. 22:24:56 S did what now? :P 22:25:12 S x y z = x z (y z) 22:25:12 i have never played with lambda calculus 22:25:43 i was just reading this page: http://www.haskell.org/haskellwiki/Pointfree 22:26:12 some really weird examples there 22:27:15 point-free map fusion... :? 22:28:33 i suppose map fusion is an automatic optimization technique 22:28:46 mem' = any . (==) <<< i find even this pretty sick :\ 22:28:52 to avoid making intermediate lists 22:29:10 ah okay 22:29:39 well i wouldn't go that far either. 22:30:36 i've read a lot about functional langs but never written more than one liners on them... i should try doing something, everything might get clearer :O 22:30:37 :P 22:30:46 one-liners 22:31:14 it gets strange with pointless style when you use it to hide more than one argument, like with any. 22:31:37 in that mem' 22:32:05 yeah, pretty neat though :P 22:32:25 but as long as it chains just one argument through, it can in fact be clearer. 22:32:31 in my opinion. 22:34:44 yeah, they are more abstract, the small ones are easier, the big ones pretty undecipherable :P 22:34:55 -!- nazgjunk has joined. 22:35:10 i can actually read the bf interpreter 22:35:28 that's good. :) 22:35:37 slowly though 22:36:28 -- Sets the current value 22:36:28 set :: Tape a -> a -> Tape a 22:36:28 set t v = doOn t (const v) 22:36:35 this took me a while :D 22:37:08 aha. 22:37:35 it's quite simple now that i think about it 22:37:43 that is an example of the usefulness of const. 22:37:58 indeed 22:39:08 -!- _D6Gregor1RFeZi has changed nick to GregorR. 22:39:51 okay, i can't follow anymore xD 22:39:56 gotta continue my tutorial... 22:51:10 -!- nazgjunk has quit ("Bi-la Kaifa"). 22:51:21 oerjan: no 22:51:33 (\x.xKS)(\x.xKS) 22:51:51 hmm 22:51:52 maybe 22:53:07 (\x.((xK)S))(\x.((xK)S)) 22:53:15 eh, the page has SK 22:53:22 er 22:53:24 right 22:54:00 \x.((xS)K) 22:54:02 although we might check what happens with KS as well. 22:54:37 indeed those are equivalent. 22:54:47 (((\x.xSK)S)K) 22:55:15 so it's SSKK? 22:55:24 yes, as the page says 22:55:26 so the page is right 22:55:54 because application is left associative 22:56:16 well, then \x.x(SK) would make for shorter programs then 22:57:14 And how to you unlamdify \x.xSK ? 22:57:18 no, because then the previous steps will break. 22:57:44 hmm 22:58:11 \x.(xS)K = S(SI(KS))(KK) 22:59:08 you just need three rules: 22:59:29 \x A B = S (\x A) (\x B) 22:59:38 \x x = I 22:59:56 \x C = K C when C does not contain x 23:00:24 *\x = \x. 23:02:26 so you get \x.xSK == (S (\x.x) (\x.S))(KK) == (SI(KS))(KK) 23:03:19 eh no. because \x.xSK is really \x.(xS)K 23:03:53 or, you are missing an S in there. 23:04:20 the outermost one. 23:04:51 oh 23:05:14 this is actually easier in unlambda notation. 23:06:26 just substitute ``s for each `, change the variable to i and put `k before everything else. 23:06:59 hmmm 23:07:11 and remove the initial \x. (^x in the unlambdaify notation) 23:08:12 How did I not understand those rules before 23:08:16 * bsmntbombdood smacks head 23:09:14 those rules are really what explains why combinatory logic uses S K I, also. :) 23:10:09 wikipedia is no good for learning 23:12:22 -!- sebbu has quit ("@+"). 23:14:58 yeah, S K I make a lot more sense now 23:16:49 i was skiing the other day 23:17:30 where you thinking about combinatory logic? 23:18:55 sure 23:19:00 always 23:19:12 that _could_ be hazardous in steep hills 23:19:48 yes, unless you are very good at either of them 23:20:16 I tried all math class to get (SI(KS))(KK) 23:23:29 actually my experience is that the better you get at math the more hazardous it becomes to do other things simultaneously. 23:23:56 well, true :P 23:25:13 because you get to the point where you are completely immersed in it. 23:25:15 i often have a hard time listening to ppl since i only hear the first few words and then whatever i was thinking about blocks all hearing again 23:25:34 heh 23:26:14 same thing with reading a book, i get an idea, 20 minutes pass and someone asks me why i've been looking at the same page for 20 min 23:27:10 you should be prime professor material :) 23:27:16 hehe prolly :P 23:27:46 often when someone asks me if i want to go somewhere sometime i have to answer i can't come because i wouln't remember to 23:27:49 *wouldn't 23:27:59 academia is the only place for computer science :/ 23:28:21 today i asked a teacher in advance what to do in case i forget a test... and forgot it as i'd predicted :) 23:29:01 bsmntbombdood what do you mean by that? 23:29:17 what's another job you can get doing cs 23:29:31 what's cs? 23:29:36 computer science 23:29:40 :P 23:29:55 see, he already forgot ;-) 23:30:02 i feel so clever xD 23:31:03 but seriously, don't you have something with an alarm/calendar system? 23:31:13 i should get one 23:31:24 maybe some day 23:31:52 in high school teachers don't mind things happening half a year late 23:32:03 so i don't have a real urge :) 23:34:05 * oerjan does remember the last year norwegian projects in high school, when all the pupils in my class were so late the teacher just replaced it with a test instead. 23:34:23 essentially. 23:35:29 there may have been a couple exceptions but i was not one of them. 23:35:44 yeah, that would be ideal 23:36:45 i'm not the sort of guy who likes to hear about derivatives for 30 lessons and do 150 assignments when i've known them for 5 years 23:37:30 if there was just a test, i'd get the best grade prolly, with this system i have to beg for the worst grade to avoid the assignments 23:38:27 yeah 23:40:24 i hate school 23:41:15 cept my math class now doesn't have required homework :) 23:42:00 well, i wouldn't mind assignments should they be challenging 23:42:40 i just can't do a lot of routineous assignments 23:42:50 i just explode 23:49:07 it's like 20 problems the same 23:51:49 well, a problem on the last page was to find the sides for a triangle for which it's area is the greatest possible 23:53:08 last page of the 300 page book 23:53:30 and they were in order of difficulty 23:53:37 somewhat at least 2007-02-15: 00:11:51 -!- voodooattack has joined. 00:28:32 oerjan how do you unlambdify stuff like \x.\y.x y 00:29:23 it can be done in the same way but there is an additional rule that is helpful: 00:29:32 \x.(S (Kx) I) ?? 00:29:50 \y. C y = C 00:30:05 so \x.\y.x y = \x.x = I 00:30:30 yep, that is the direct way. 00:30:36 but then what? 00:31:36 for the outer one 00:31:42 \x.((S (Kx)) I = S(S(KS)(S(KK)I))(KI) 00:32:23 eh, forget first parenthesis 00:33:35 -!- crathman has joined. 00:33:49 -!- crathman has quit (Remote closed the connection). 00:35:49 -!- crathman has joined. 00:37:32 -!- tgwizard has quit (Read error: 60 (Operation timed out)). 00:45:59 damn that's complicated 00:49:29 http://www.encyclopediadramatica.com/index.php/C 00:49:49 let's try that bit of code :P 00:50:38 yep, abstraction elimination by this method is exponential in the number of variables. 00:52:21 there are more complicated combinators you can use but they need more variables than this before becoming worthwhile. 00:53:54 essentially you can merge a list of variables using something cons-like to make the blowup linear in the number of variables instead, I think. 00:57:27 I remember writing something about it on the old esolang mailing list. 01:06:54 too many Ss and Ks and Is 01:07:27 hmm... thue seems too hard for a first project :< 01:08:03 i kinda like haskell in the sense i haven't done a single algorithmic error even though i use quite complicated mappings etc 01:08:18 (haven't noticed at least :P) 01:08:42 i assume this applies after you have fixed the type errors? 01:08:47 yes 01:08:53 them i have millions :P 01:09:37 It would be cool to define K in terms of S 01:09:52 i don't think it can be done 01:10:27 lessee, why not... 01:10:44 K x y removes y 01:10:45 \x y.x ==> S (KK) I 01:10:53 i'd need this function doSubst :: (String, String) -> String -> (Bool, String) where first tuple is the substitution (from, to), second the string to alter, return (success, new string) 01:11:05 i can't make it nicely though :< 01:11:11 But I think you cannot make any expression in S that removes an argument completely 01:11:43 i have a very similar function in IrpBot 01:12:07 can you gimme a hint? :P 01:12:27 i have the knowledge necessary to do that... just can't :<< 01:12:58 too complicated 01:13:11 a "" = "" 01:13:11 a t | old `isPrefixOf` t = new ++ a (drop (length old) t) 01:13:14 a (c:r) = c:a r 01:14:37 i believe you need import Data.List for the isPrefixOf 01:15:03 nice 01:18:08 back to expressing K with S, I now remember the terminology 01:21:14 ack, i had it backwards 01:25:57 anyhow, there are two classes of combinators that are closed and K and S are in different ones. 01:26:27 K is affine, this means every argument is used at most once 01:26:43 -!- oklofok has joined. 01:26:56 S is the opposite (relevant may be the word), every argument is used at least once 01:27:30 I is in the intersection: the linear ones, which use every argument exactly once 01:28:36 the affine subset can be generated by the combinators S, B, C. 01:28:45 *K, B, C 01:32:19 C a b c = a c b, B a b c = a (b c) 01:32:58 the opposite subset would be S, B, C; I think 01:33:02 C = 1? :P 01:33:29 nope 01:34:35 i think it works :D 01:35:03 combinators are not usually commutative 01:35:08 15 lines :PP 01:35:19 what works? 01:35:25 my thue interpreter 01:35:26 thue? 01:35:28 ya 01:35:58 are you doing random choice of rules? 01:36:00 it did runThue [("oko","pol"), ("pol", "mo")] "okopol" -> "momo" 01:36:03 no 01:36:26 i do rule by rule... since thue does not care about order right? 01:36:42 you can read my code, it's 15 lines as i said 01:37:07 it's very bad code i'm sure, this is the first program i've done on a functional language :D 01:37:15 (unless you count python) 01:38:41 http://www.pastebin.ca/356379 01:39:19 i tried not to look at your code too much, just checked drops param order and the function names 01:40:38 it takes the substs as a list 01:40:44 so it's not exactly thue 01:41:08 parser next? you might want to look at the Parsec library 01:41:57 with that the parser shouldn't be more than another 15 lines 01:43:01 man that's ugly 01:43:12 -!- oklopol has quit (Read error: 110 (Connection timed out)). 01:43:28 -!- oklopol has joined. 01:43:44 god i hate it when it does that 01:44:42 oklopol: you do know that you can ask nickserv to kick off your ghosts? 01:45:37 i don't, there is no such service on qnet 01:45:43 (that i know of) 01:45:57 if there's one here, please share it with me :D 01:46:18 do /msg nickserv help 01:46:19 hmm... i can't do file io, the monads will kill me 01:47:01 i'm not registered, maybe i should :P 01:47:23 Indeed that is necessary to kill ghosts 01:47:32 yep, but maybe later 01:47:40 as well as for sending private messages 01:47:43 can you help me with filw io? 01:47:46 *file 01:47:58 I suggest using the interact function for a start 01:48:37 okay, how do i use it? :) 01:48:47 That saves you most of the trouble with IO if you are just making a pipe 01:49:04 main = interact yourPipeFunction 01:49:05 pipe? :D 01:49:41 a function from stdin to stdout 01:49:51 Quick Haskell tutorial? 01:50:06 i suppose it is 01:50:18 I need to get back to Haskell hacking sometime. 01:50:28 i had "filename: " -> open file -> read -> parse -> exec in mind 01:50:34 The Scheme in Haskell tutorial looks really nice. 01:50:46 right... 01:51:01 you want the filename as input or on the command line? 01:51:15 unless it's hard, yes :D 01:51:21 because 01:51:26 i mean, which one 01:51:29 i don't know how to specify stdin 01:51:36 okay, just a pipe 01:52:01 hmm... getContents or smth 01:52:19 readFile 01:52:20 i read about this somewhere, i'll try on my own, i'll be here crying for help soon 01:52:31 i'll find the page :D 01:52:37 ok 01:52:56 btw Haskell does have if then else 01:53:15 (for you case ... True -> ... False ...) 01:53:20 *your 01:54:19 -!- meatmanek has joined. 01:54:36 -!- meatmanek has quit (Read error: 104 (Connection reset by peer)). 01:54:56 (> scheme haskell) 01:55:13 (> scheme) haskell 01:55:51 we need to come up with something that means the opposite in scheme and haskell 01:56:45 yes 01:57:52 -!- wooby has joined. 01:59:01 -!- meatmanek has joined. 02:00:03 -!- oklofok has quit (Read error: 110 (Connection timed out)). 02:00:06 main needs a declaration (or whaddyacallit) main :: Something -> oso 02:00:08 ? 02:00:13 and what is it :P 02:00:17 RealWorld? 02:00:21 :: IO () 02:00:28 just that? 02:00:29 oki 02:00:50 and type declarations are often optional 02:00:51 main :: IO() 02:00:55 main = return 5 02:00:56 ? 02:01:05 oh 02:01:11 () /= Int 02:01:17 Indeed :) 02:01:20 it won't compile that's all 02:01:24 i mean 02:01:32 nothing, so they can't be optional there 02:01:36 You would get a message about no Num instance for () 02:02:24 hmm... how can i return 5 from main? :D 02:02:30 it's optional in the sense you don't have to write it, not in the sense that main can be any type 02:02:56 return strips off the monad, IO, right? 02:03:04 maybe not :D 02:03:06 sort of 02:03:12 but not really 02:03:25 actually the opposite, return puts it on 02:03:35 well, i'll understand it later 02:03:48 i wanna get this working first :D 02:03:53 and note also that return does not quit from a function 02:04:05 i do know that 02:04:35 i don't attach meaning to names 02:05:24 System.Exit.exitWith (ExitFailure 5) 02:05:25 i mean, i don't have problems with confusing languages, but i do have problems in understanding how IO works :P 02:06:01 but... but... why aren't there better examples, examples that work :\ 02:06:08 on the net 02:06:25 there aren't? 02:07:24 incorrect indentation 02:07:35 whenever there's a main 02:07:48 it's my error i'm pretty sure 02:08:01 doing something really wrong when copypasting... 02:08:03 just for a start imagine that Haskell distinguishes sharply between pure expressions and actions 02:08:21 first i'd like to get ANY main working :P 02:08:23 and that actions have type IO something 02:08:40 oaky 02:08:52 main = print "Hello, world!" 02:09:17 parse error 02:09:24 possibly incorrect indentation 02:09:27 how can that be? 02:09:46 where are you putting it? 02:09:48 hard to say... it's in the Thue file 02:09:50 in the end 02:09:56 and i just run it 02:10:04 dblclick on the file 02:10:22 runThue'' (subst:substs) init sure = case doSubst subst init of 02:10:22 (False, _) -> runThue' substs init sure 02:10:22 (True, newinit) -> runThue' substs newinit True 02:10:22 main = print "Hello, world!" 02:10:26 end of my file 02:10:44 indentation wrong though 02:10:50 because of the paste 02:10:56 And it compiles without main? 02:11:01 yes 02:11:06 all the functions work 02:11:21 sorry 02:11:26 it seems they dont' xD 02:12:10 okay 02:12:12 now it works 02:12:39 i had done something fishy there... forgot about it and thought it was the same working code 02:12:56 next step would be a do block I guess 02:13:04 main = do 02:13:24 and then some more actions, indented 02:13:59 i tried one code, but it said isAscii not in scope... and nothing was imported 02:14:10 hmm 02:14:16 import Data.Char for that I think 02:14:21 oaky 02:14:44 btw: haskell.org/hoogle 02:15:50 as well as http://www.haskell.org/ghc/docs/latest/html/libraries/index.html 02:16:03 okay, i now have a code that reads two names, one for output, one for input and pipes 02:16:37 i'll peruse those later :) 02:16:49 too much just now... it's 4 am 02:17:08 There is also System.Environment.getArgs 02:17:21 hmm 02:17:29 but i call main as a function 02:17:35 in the prompt 02:17:44 :main 02:17:45 i could just give them as params? 02:17:54 Special command 02:18:04 can give arguments 02:18:35 okay, i'll stick to the file thing though :D 02:18:46 s <- readFile ifile 02:19:08 return s will be a string with the contents of the file..? 02:19:28 s will be that string 02:19:54 <- takes values out of IO in a sense 02:20:06 okay 02:20:31 i'll make the parser, thue's io comes some other time, i'll sleep soon 02:22:25 s <- readFile ifile 02:22:25 let (substs, init) = parseRaw s in 02:22:25 runThue substs init 02:22:31 would this be right? 02:22:54 if i do the parseRaw that converts string -> substitutions and initial string 02:23:26 looks fine 02:23:48 good, i'll start the parser... not sure if i'll manage to finish it just now :D 02:23:58 everything's kinda hazy 02:24:47 Does Haskell make well to parsers like the BT one? (Not that I'd switch.) 02:25:10 BT? 02:25:21 Bencoding. 02:25:54 almost certainly 02:26:56 Parsec would be shooting fish in a barrel :) 02:27:16 heh 02:27:18 write one 02:30:15 -!- crathman has quit (Read error: 110 (Connection timed out)). 02:36:14 -!- wooby has quit. 02:54:04 -!- meatmanek has left (?). 03:15:05 done 03:17:39 http://www.pastebin.ca/356520 03:18:26 took you longer to code :) 03:18:55 i'm not a fast coder 03:19:25 but it is just 24 lines :) 03:19:52 and ununderstandable by me 03:21:27 to run, do parseTest (many bencoding) "whatever" 03:21:53 ah, drop the many 03:41:23 -!- ShadowHntr has joined. 03:49:07 (S)S(S)S()S(K)I(S_)F 03:49:37 something does not look quite right there 03:49:57 ()? S_? 03:51:35 yeah, because i was just banging on the keyboard 03:55:40 on second thought, it is obvious that () should be I 03:57:15 because that makes (A1...An)B = A1...AnB for all n including 0 03:58:02 There should be a function that takes all the arguments you give it and does nothing with them 03:58:18 there is: V 03:58:28 it's in unlambda 03:58:33 V x = V 03:59:09 V = Y \f.\x.f ? 03:59:36 yeah 04:00:32 V = (SII) \f.\x.ff 04:00:56 you can take it from there :) 04:02:15 (SII)x == xx 04:02:47 well, yeah 04:03:26 but that would make the expression larger 04:03:42 Y = \f.(SII) \x.f (SII) x 04:04:15 ...right? 04:04:36 that would seem a reasonable conclusion 04:05:20 except the parentheses are not quite right 04:05:34 bargle blop 04:05:45 Y = \f.(SII) \x.f (xx) 04:06:10 yeah 04:09:57 V = (SII)(S(KS)(S(KK)I))(S(KK)I) 04:11:44 S(KK)I = KK 04:12:20 wait... 04:12:47 S(KK)I = K 04:13:02 S(KK)Ix = (KK)x(Ix) 04:13:15 = K 04:13:57 V = (SII)(S(KS)K)K 04:15:12 = (SII)(S(KK)) 04:15:26 nope 04:15:30 wrong order 04:17:14 i don't see how you got your first expression, though 04:17:55 SII \xf.ff 04:18:13 s/xf/fx/ 04:18:22 and then? 04:18:45 \f.(S (Kf) (Kf)) 04:18:55 (drop the SII for a moment) 04:19:55 ok (but not optimized) 04:19:59 ? 04:20:10 how can you optimize it? 04:20:16 S (Kf) (Kf) = K(ff) 04:20:45 oh right 04:20:50 it's a konstant function 04:22:09 so \fx.ff == S(KK)(SII) 04:22:30 so V = (SII)S(KK)(SII) 04:22:43 so V = (SII)(S(KK)(SII)) 04:24:05 might be right :) 04:28:25 (KK) = I right? 04:28:45 I mean K 04:29:06 no 04:29:22 KKx = K 04:29:34 right 04:30:04 so yes, V = (SII)(S(KK)(SII)) 04:30:55 * bsmntbombdood feels like he has accomplished something 04:32:08 actually 04:32:14 S(KK)(SII) 04:32:26 nevermind 04:33:51 S(KK)(SII)x = KKx(xx) = K(xx) 04:34:49 yeah 04:35:09 so if x = S(KK)(SII), then xx = K(xx) 04:36:02 what's your point? 04:36:27 just triple checking 04:58:57 i'm going to bed, thanks for your help 04:59:23 me too, good night 04:59:40 -!- oerjan has quit ("leaving"). 05:15:08 -!- Sgeo has quit (Remote closed the connection). 05:28:01 -!- digital_me has quit (Read error: 60 (Operation timed out)). 05:31:22 -!- GregorR has changed nick to _D6Gregor1RFeZi. 05:52:43 -!- puzzlet has joined. 05:59:14 -!- Arrogant has joined. 06:33:10 -!- ShadowHntr has quit ("End of line."). 06:55:40 -!- _D6Gregor1RFeZi has changed nick to GregorR. 07:34:41 -!- RodgerTheGreat has quit. 07:40:30 -!- voodooattack has quit (Read error: 113 (No route to host)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:08 -!- Arrogant has quit ("Leaving"). 08:35:38 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 08:51:50 -!- pgimeno has joined. 13:09:47 -!- nazgjunk has joined. 13:41:34 -!- helios24 has joined. 13:57:56 -!- jix has joined. 14:20:07 *BOGGLE*: 14:20:10 "No, everyone is born Christian. Only later in life do people choose to stray from Jesus and worship satan instead. Atheists have the greatest "cover" of all, they insist they believe in no god yet most polls done and the latest research indicates that they are actually a different sect of Muslims." 14:21:53 no, actually *this* is even more mind-boggling: 14:21:56 ""One of the most basic laws in the universe is the Second Law of Thermodynamics. This states that as time goes by, entropy in an environment will increase. Evolution argues differently against a law that is accepted EVERYWHERE BY EVERYONE. Evolution says that we started out simple, and over time became more complex. That just isn't possible: UNLESS there is a giant outside source of energy supplying the Earth with huge amounts of energy. If there were su 14:22:35 Headline: Christian Scientists Hypothesise 'Sun' 14:29:17 -!- nazgjunk has quit ("Bi-la Kaifa"). 14:34:06 haa!!! 14:34:16 that's funny 14:36:15 "a giant outside source of energy supplying the Earth with huge amounts of energy" 14:56:40 -!- kxspxr has joined. 14:57:52 -!- kxspxr has quit (Client Quit). 15:19:03 -!- crathman has joined. 15:24:04 -!- wooby has joined. 15:24:34 -!- wooby has quit (Client Quit). 15:46:48 -!- RodgerTheGreat has joined. 16:13:56 -!- Arrogant has joined. 16:16:35 -!- sebbu has joined. 16:32:50 bsmntbombdood: Hmmm, now what could that be ... 16:33:03 bsmntbombdood: Something like a big ball of burning gas ... 16:33:11 bsmntbombdood: That uses nuclear fusion to create energy ... 16:33:20 -!- RodgerTheGreat has quit. 16:33:24 bsmntbombdood: Energy which ends up transferred to Earth ... ;) 16:34:14 Hilarious. 16:39:29 -!- FabioNET has joined. 16:56:28 -!- Arrogant has quit ("Leaving"). 17:12:37 -!- RodgerTheGreat has joined. 17:21:59 -!- ShadowHntr has joined. 17:26:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 17:28:48 -!- oklofok has joined. 17:34:52 -!- oklofok has changed nick to oklopol. 17:52:29 -!- nazgjunk has joined. 17:59:38 -!- RodgerTheGreat has quit. 18:05:14 -!- RodgerTheGreat has joined. 18:07:51 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:13:36 -!- nazgjunk has joined. 18:13:37 -!- UpTheDownstair has joined. 18:14:13 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:14:30 -!- UpTheDownstair has changed nick to nazgjunk. 18:21:17 -!- ShadowHntr has quit (Read error: 131 (Connection reset by peer)). 18:22:18 -!- ShadowHntr has joined. 18:37:00 GregorR: indeed 18:38:01 pikhq: Why are you never online? :P 18:43:21 -!- ShadowHntr has quit (Client Quit). 18:45:06 you're killin me 18:45:26 i'm bored 18:50:23 you should do the oko 18:50:28 http://www.vjn.fi/148.htm 18:50:33 too bad i wrote this in finnish :\ 18:52:50 GODDAMN THESE PEOPLE ARE ANNOYING 18:53:16 rararar 19:00:47 finnish is a pretty useless language. nobody speaks it! 19:17:29 -!- nazgjunk has quit ("Bi-la Kaifa"). 19:17:37 :D 19:18:03 yeah... who likes useless languages... 19:50:35 -!- wooby has joined. 20:06:56 -!- ihope has joined. 20:07:36 ~exec self.raw("PRIVMSG ihope :Boing") 20:07:45 Interesting, don't you think? 20:07:50 ~exec self.raw("PRIVMSG ihope :Boing") 20:07:55 Really, how odd... 20:08:33 ~ps 20:08:33 0: 'self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self', 772164.12 seconds 20:08:40 Hee. 20:08:58 ~kill 0 20:09:06 ~ps 20:09:06 0: 'self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self', 772197.13 seconds 20:09:10 Yay. 20:17:57 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 20:20:22 ~exec self.raw("QUIT") 20:20:22 -!- bsmnt_bot has quit. 20:20:26 -!- bsmnt_bot has joined. 20:20:30 ~ps 20:20:31 None 20:20:39 That's one way to do it, eh? 20:20:48 ~exec self.ihope = IRCbot("80.32.164.76", "FOLLYbot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen(); self.ihope.bsmnt = self 20:38:11 -!- helios24 has quit (Read error: 60 (Operation timed out)). 20:44:55 ~exec self.ihope.bsmnt.raw("PRIVSMG #esoteric :Foo") 20:45:02 Interesting. 20:45:05 Oh. 20:48:30 -!- helios24 has joined. 21:00:51 -!- helios24 has quit (Read error: 60 (Operation timed out)). 21:06:47 -!- helios24 has joined. 21:09:36 -!- FabioNET has joined. 21:11:13 -!- sebbu has quit (Read error: 60 (Operation timed out)). 21:16:05 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:16:06 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 21:18:48 -!- sebbu has joined. 21:22:54 -!- FabioNET has quit (Client Quit). 21:39:51 -!- RodgerTheGreat has quit. 21:54:50 ihope 21:56:53 me too 22:01:44 iklopol 22:02:28 osofok 22:02:47 fuck... i'll have to wear a suit tomorrow :<<< 22:02:57 hah 22:03:26 you mean poohead 22:07:15 -!- wooby has quit. 22:13:04 -!- digital_me has joined. 22:26:55 -!- Sgeo has joined. 22:30:42 -!- oerjan has joined. 22:34:47 ug 22:35:37 ly 22:35:50 ITYM "li" 22:36:12 why i realized that just after saying it 22:36:17 *li 22:36:22 http://en.wikipedia.org/wiki/Ugli_fruit 22:38:37 why the heck isn't it spelled Hugli if that's how it's originally pronounced? 22:47:51 Darn Babelfish doesn't have finnish 22:49:28 oklopol: Why can't you write in a sensible language such as Norwegian? :) 22:51:08 Or Finlandssvenska, but I guess you hate that as much as most Norwegians hate Nynorsk 23:09:54 -!- GregorR has changed nick to _D6Gregor1RZeFi. 23:10:18 -!- _D6Gregor1RZeFi has changed nick to _D6Gregor1RFeZi. 23:31:50 -!- sebbu has quit ("Leaving"). 23:39:39 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 2007-02-16: 00:01:22 -!- SevenInchBread has joined. 00:08:28 -!- kxspxr has joined. 00:17:12 -!- sp3tt has quit (Connection timed out). 00:27:51 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)). 00:28:25 -!- SevenInchBread has joined. 00:29:13 -!- _D6Gregor1RFeZi has changed nick to GregorR. 00:50:40 -!- ihope has joined. 00:56:36 -!- kxspxr has quit. 02:25:27 -!- ihope_ has joined. 02:29:45 -!- goban has joined. 02:29:47 #ps 02:29:53 ~ps 02:29:53 None 02:29:57 Really? 02:29:58 ihope 02:30:03 Suspicious. 02:30:10 ? 02:30:12 bsmntbombdood: yes? 02:30:13 you restarted it 02:30:22 When? 02:30:29 #exec dir(self) 02:30:44 ~ is the command character here, guys :-P 02:30:51 er 02:31:03 kill everthing 02:31:11 #exec self.raw("MSG #esoteric "+str(dir(self))) 02:31:22 PRIVMSG, not MSG. 02:31:29 ~exec sys.stdout(dir(self)) 02:31:30 ['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'ihope', 'listen', 'load_callbacks', 'message_re', 'nick', 'owner', 'pong', 'p 02:31:30 ort', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'save_callbacks', 'socket', 'sockfile', 'verbose'] 02:31:35 Or that. 02:31:43 #exec self.raw("PRIVMSG #esoteric "+str(dir(self))) 02:31:54 sheesh 02:32:06 ~exec self.raw("PRIVMSG #esoteric :"+str(dir(self))) 02:32:06 it won't work anyhow, you are missing a colon. 02:32:07 ['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'ihope', 'listen', 'load_callbacks', 'message_re', 'nick', 'owner', 'pong', 'port', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'regi 02:32:32 #exec self.raw("PRIVMSG #esoteric ""+str(dir(self))) 02:32:35 #exec self.raw("PRIVMSG #esoteric :"+str(dir(self))) 02:32:39 um... 02:32:52 anyone else thinks sgeo is a bit dense today? 02:33:02 Sgeo: ~exec, not #exec 02:33:19 Is it the same code on bsmnt_bot and ihope? erm 02:33:25 * oerjan says this, having misspelled stdout as output for n-1 of the last n attempts 02:33:35 Sgeo: what? 02:33:40 ~ps 02:33:41 None 02:33:47 #exec self.raw("QUIT :") 02:33:47 * DogKing has quit (Active Quit: ) 02:33:52 Sgeo: mine was running with # as the command character. 02:33:54 ihope is not a bot. I hope this clears things up. 02:34:17 I started it with an ~exec on this one. 02:34:18 * bsmntbombdood growls at ihope_ 02:34:24 bsmntbombdood: yes? 02:34:37 just felt like growling 02:34:40 Oh. 02:36:04 * bsmntbombdood giggles at ihope_ 02:36:06 hm... 02:36:48 a Zoo language, unifying OOK, MOO and various other beastly endeavours. 02:40:09 -!- bsmnt_bot has quit. 02:40:28 -!- bsmnt_bot has joined. 02:42:04 -!- bsmnt_bot has quit (Client Quit). 02:42:23 -!- bsmnt_bot has joined. 02:43:14 -!- ihope has quit (Success). 02:44:02 -!- bsmnt_bot has quit (Client Quit). 02:44:18 -!- bsmnt_bot has joined. 02:49:30 -!- bsmnt_bot has quit. 02:49:46 -!- bsmnt_bot has joined. 02:59:43 -!- bsmnt_bot has quit (Excess Flood). 03:00:01 -!- bsmnt_bot has joined. 03:01:13 -!- ihope_ has changed nick to foobar. 03:01:42 -!- foobar has changed nick to ihope. 03:05:11 * oerjan again advertises nickserv's ghost command 03:05:40 -!- bsmnt_bot has quit (Remote closed the connection). 03:05:48 -!- bsmnt_bot has joined. 03:05:57 -!- ShadowHntr has joined. 03:12:33 -!- Sgeo has quit (zelazny.freenode.net irc.freenode.net). 03:12:33 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 03:12:57 -!- puzzlet has joined. 03:14:15 -!- bsmnt_bot has quit. 03:14:20 -!- bsmnt_bot has joined. 03:40:49 -!- crathman has joined. 03:41:50 fun, we can blow up any combinatory logic program to any size 03:41:55 replace I with SKI 03:42:03 K with S(KK)I 03:42:34 S with S(KS)I 03:42:37 -!- Sgeo has joined. 03:44:21 repeat ad nauseuj 03:44:22 m 03:44:30 *am 03:45:21 right 03:45:25 * oerjan draws his roman soldier sword 03:46:04 That is a noun of the FIRST declension, so it's accusative ends in... ? 03:46:12 *its 03:46:14 huh? 03:46:34 You haven't seen Life of Brian? 03:46:51 no 03:47:09 (Strictly speaking, neither have I, somehow I always miss the middle) 03:48:21 S(KI)I 03:48:30 There's this hilarious part where John Cleese's Roman character scolds Brian for writing Romans Go Home grafitti 03:48:56 But not because of what it says, but because he butchers the Latin grammar 03:51:56 -!- digital_me has quit (Remote closed the connection). 03:54:21 -!- bsmnt_bot has quit. 03:54:24 -!- bsmnt_bot has joined. 03:57:20 SSK 03:57:56 SSKxy = xyx 04:00:15 Wait, what's this ghost advertisement stuff all about? 04:02:12 about getting back your nisk after being thrown off 04:02:16 *nick 04:02:37 Also, bsmntbombdood, was it you some of us were trying to teach ordinal numbers to? 04:02:41 do /msg nickserv help ghost 04:02:43 oerjan: how's that relevant to stuff? 04:03:04 Oh, the... right, yeah. 04:03:08 yeah 04:03:35 bsmntbombdood: got it figured out yet? 04:03:47 haven't read anything since then 04:04:21 bsmntbombdood: well, mind if I try one more time? 04:04:26 is it time for confusing him more by telling about epsilon? 04:04:33 oerjan: nah. 04:05:53 basically, ordinals are all about induction. 04:06:26 I'd say they're all about well-orderings. 04:06:44 That, too. 04:06:47 Yeah. 04:07:02 But well-ordering is what you need for induction to be well-defined. 04:07:19 A well-ordering is an ordering of a set such that all subsets of the set have a least element. 04:07:19 -!- crathman has quit (Read error: 110 (Connection timed out)). 04:07:36 For example: the positive integers: {1, 2, 3, 4...} 04:07:53 Any (non-empty) subset of them has a least element. 04:08:03 huh? 04:08:13 isn't that any set? 04:08:15 And that is equivalent to the usual rule of induction. 04:08:22 Can you think of a set of positive integers that has no least element? 04:08:32 ...Wait, what? 04:08:51 Any set of positive integers has no least element. 04:08:59 *a 04:09:11 ...Right, yes. 04:09:30 Now, an ordinal number essentially expresses one notion of the size of a well-ordered set. 04:10:01 {1} has the ordinal number 1, {1,2} has the ordinal number 2, {1,2,3} has the ordinal number 3... 04:10:19 Then for {1,2,3,4...}, the ordinal number is omega. 04:11:01 Now, for a "bigger" well-ordering of the natural numbers, we could say 1 is greater than the rest: {2,3,4...1}. 04:11:22 There are other kinds of sets that _don't_ have least elements, for example the set of all _negative_ integers. 04:11:25 Look at it as {2,3,4,5...1}, and it seems like it has one extra element. 04:11:29 Yes, like that. 04:11:58 Now, this one extra element is expressed by adding one, so this new set has the ordinal number omega+1. 04:12:27 {1,2,3,4,5...} is the same as {2,3,4,5,...1} 04:12:33 Then if you say 1 is greater than everything except 2, and 2 is greater than everything, you get {3,4,5,6...1,2}. The ordinal number for that would be omega+2. 04:12:55 As a set, yes, but it's the order they're in that matters here, not the elements themselves. 04:12:57 Not when you consider the ordering. 04:13:10 sets are unordered 04:13:26 Well, call it an order instead of a set, then. 04:14:41 "Ordered set" is really an abbreviation for a set, plus an order relation on that set. 04:14:53 k 04:14:54 It's the same set, yes, but 1 is greater than everything else in the set--it's an infinity, basic(al)ly. 04:15:38 So then if you go do something like {0,2,4,6,8...1,3,5,7,9...}, you have the same set again, but this time you have an infinite number of things, each of which is greater than another infinity of things. 04:15:51 This is omega+omega, or omega*2. 04:16:33 If it confuses you to change the ordering of the natural numbers, it is possible (for now) to use sets of fractions instead. 04:16:47 Indeed it is. 04:16:55 fractions? 04:17:15 How about something like this: {0, 0.9, 0.99, 0.999... 1} 04:17:17 Say, {0, 1/2, 1/3, ..., 1, 1+1/2, 1+1/3, 1+1/4, ...} also has ordering omega*2 04:17:30 oerjan: but that's still out of order. 04:17:33 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:17:33 that would be omega+1 04:17:36 whoops 04:17:54 {0, 1/2, 2/3, 3/4... 1, 1+1/2, 1+2/3...} 04:18:07 right 04:18:17 k 04:18:21 not sure where this is going 04:18:37 Then you can still add more to the end: {0, 1/2, 2/3, 3/4... 1, 1+1/2, 1+2/3... 2} would represent the ordinal omega*2+1. 04:19:22 Go as far as you want, adding as many infinities as you want: {0, 1/2, 2/3, 3/4... 1, 1+1/2... 2... 3... 4.....} 04:19:35 Go on forever like *that*, and you have omega*omega, or omega^2. 04:19:58 Now, the nice thing is that the different well-orderings are themselves well-ordered. 04:20:56 Therefore, you can represent each ordinal as a set of ordinals: instead of {0, 1/2, 2/3, 3/4... 1, 1+1/2, 1+2/3, 1+3/4...}, you can have {0, 1, 2, 3... omega, omega+1, omega+2, omega+3...} 04:21:15 omega*2 happens to be the lowest ordinal number greater than all elements of that set. 04:21:55 And if you have a "continuous" set like that, it defines an ordinal number. 04:22:32 So if you took the unions of the sets corresponding to, say, omega, omega*2, omega*3, omega*4, etc., you'd end up with the set representing omega*omega. 04:23:23 The union, I mean, not unions. 04:27:18 Often, an ordinal number is said to actually be the set of ordinal numbers that goes with it, so ordinal numbers are defined as being sets of ordinal numbers. 04:28:10 Those are known as von Neumann ordinals, after the inventor. 04:30:25 You can add ordinals: 04:31:12 -!- Sgeo has quit (Read error: 110 (Connection timed out)). 04:31:21 If you have an ordered set in two parts, first one ordered as the ordinal a and then one part ordered as the ordinal b, then the ordinal of the whole set is called a+b. 04:32:22 You can see that in the omega+1, omega+2 etc. above. 04:32:57 Strangely enough this addition is not commutative. 04:33:10 1+omega = omega != omega+1 04:33:43 (It is associative however) 04:34:07 (I.e. a+(b+c) = (a+b)+c) 04:34:30 I like natural addition. 04:34:43 -!- Sgeo has joined. 04:35:11 -!- ShadowHntr has quit ("End of line."). 04:35:48 To multiply: 04:38:22 Make a set containing a subdivision into segments, all with the same order a, and such that the set of segments themselves have order b. Then that whole set has order a*b. 04:38:47 So omega*2 consists of two subsets, each with order omega. 04:38:58 This is not commutative either. 04:39:51 But it is associative, and there is distributivity: a*(b+c) = a*b + a*c 04:45:46 That distributivity hold only rightwards. 04:45:51 *holds 04:47:09 For powers, we need to use induction. 04:47:43 -!- goban has quit ("Leaving"). 04:48:01 a^1 = a, and a^(b+c) = a^b*a^c. 04:48:24 Except that doesn't help us reach infinity, so: 04:49:22 a^b = union of a^(b_l) when b = union of b_l. 04:49:29 omega. 04:49:34 There, I've reached infinity! 04:49:37 :-P 04:49:48 -!- alex-4 has joined. 04:49:54 Good, now you can explain omega^omega :) 04:52:25 oerjan: i don't hate any languages :) 04:52:39 but i don't know swedish that well 04:52:42 that's good, neither do i 04:52:48 -!- sp3tt has joined. 04:52:58 then you can explain oko here :) 04:53:13 okoing is a way of life :) 04:53:20 omega^omega: the union of omega^n where n < omega. 04:56:20 Now then, epsilon = union of omega^(omega^(omega^...))) nested n times when n < omega 04:57:51 omega, omega^omega, omega^omega^omega, omega^omega^omega^omega... 04:58:01 omega^epsilon = epsilon, incidentally. 04:58:27 epsilon = omega^^omega, no? 04:58:29 If I remember right. 04:58:59 I suppose so. 04:59:14 I am not sure of that ^^ notation. 04:59:29 Tetration? 04:59:40 And omega^^^omega would be epsilon_1. 04:59:47 I think. 05:00:02 Well, maybe not. 05:00:13 (omega^^omega)^^omega? 05:00:26 I think we just went past what I remember :) 05:01:38 Except one huge step more: 05:02:44 omega_1 = the union of all ordinals of reorderings of the natural numbers. 05:03:17 (I hope omega_1 is the right name. The first ordinal of cardinality aleph_1.) 05:05:48 Yes, omega_1 is the first ordinal of cardinality aleph_1. 05:05:59 omega_n has cardinality aleph_n, in general. 05:06:06 wtf are you talking about :O 05:06:15 Ordinal numbers 05:06:28 there's only two numbers 05:06:32 zero and one. 05:06:42 lament: what about... uh... hmm. 05:07:13 lament: is that algebraically closed? 05:07:21 I mean, surely not. 05:07:38 x^2 + x + 1 = 0 05:07:41 Solve that. 05:07:51 {0,1} form a field if that's what you're asking. 05:07:59 Algebraically closed. 05:08:07 Polynomials all have solutions. 05:08:28 x*x = x and x+x = 0, so that equation up there is equivalent to 1 = 0. 05:08:51 Also, it's Friday over here. Less than ten minutes ago, it was Thursday. 05:08:59 I think I should be getting to bed. 05:09:05 so what if it's not algebraically closed? 05:09:18 Then it cannot be all numbers. 05:09:26 Then... uh... say, why don't we define CK_n for all ordinal numbers n? 05:09:47 okay, let's close it then 05:09:47 What is CK? 05:10:33 The smallest ordinal number that can't be enumerated by a computer of order n, where a computer of order n is a Turing machine, except able to solve the halting problems for computers of orders less than n. 05:10:40 Close it, eh... 05:10:54 Let's say B*B + B + 1 = 0. 05:11:01 That means B*B + B = 1. 05:11:29 So B(B + 1) = 1, if that matters at all. 05:11:48 Hey, why don't we call it 2? 05:11:55 2*2 + 2 = 1. 05:12:00 -!- crathman has joined. 05:12:18 Then we could say 1 + 2 = 3. 05:12:26 Eventually, you end up with all the nimbers. 05:12:32 ;-) 05:12:38 Fun. Bye! 05:15:52 well no 05:16:20 ? 05:17:22 that doesn't sound right 05:18:03 What doesn't sound right, and by the way nimbers was probably not a misspelling. 05:18:31 oh, well, okay then 05:30:54 -!- ihope has quit (Connection timed out). 05:58:20 can K be made with S and I? 05:58:49 no, S and I cannot remove variables 05:59:25 They are in the subset called lambda_I calculus 05:59:48 where in \x.E, E has to contain x 05:59:59 right 06:00:30 is lambda_i calculus turing complete? 06:00:42 I vaguely recall yes 06:01:05 church numeral 0 doesn't work 06:01:25 something about simulating K for a large enough subset to make it work for numerals 06:01:27 Is this Unlambda fun? 06:01:42 combinatory logic 06:01:43 Is this (Unlambda fun) ? 06:02:01 Ah. Is he creating the Church numerals? 06:02:10 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 06:02:18 -!- crathman_ has joined. 06:02:20 -!- crathman_ has changed nick to crathman. 06:02:23 no we were discussing whether K is necessary for Turing completeness 06:03:15 i guess S and I might not be enough, to get lambda_I you need also B and C 06:03:43 Ah. 06:03:46 B and C don't get rid of variables though 06:04:06 -!- ShadowHntr has joined. 06:04:44 s/variables/arguments/ 06:05:09 i don't know the construction for a "simulated" K for numerals, however 06:05:49 it was either Church or Curry's work, I guess 06:07:19 wikipedia: The constants of CLI are: I, B, C and S, which form a basis from which all CLI terms can be composed (modulo equality) 06:07:48 thought so 06:08:03 under "lambda calculus", I found the quote: 06:08:16 Note that in Church's original lambda calculus, the formal parameter of a lambda expression was required to occur at least once in the function body, which made the above definition of 0 impossible 06:10:00 but they don't tell you what it is 06:11:02 where did you find that CLI quote? 06:12:08 http://en.wikipedia.org/wiki/Combinatory_logic#CLK_versus_CLI_calculus 06:17:56 heh, searching for lambdaI gives an article with the title "Proving PSN after ruining a perfectly good calculus" 06:18:04 *googling 06:18:04 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)). 06:19:31 PSN? 06:20:37 preservation of strong normalization 06:20:44 i think it was 06:20:57 it was the rest of the title i found funny :) 06:23:49 remember iota from the other day? 06:23:56 yes 06:24:24 If we use a different combinator, \x.xKSK, the definitions of S and K are shorter 06:24:45 x=\x.xKSK 06:24:51 i may have read that somewhere 06:24:56 K = (xx)x 06:25:29 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 06:27:54 S = x(xx) 06:28:00 much shorter than iota 06:29:04 as short as you could possibly get them 06:29:33 or could you get one of them to be xx? hm. 06:30:08 -!- ShadowHntr has joined. 06:30:45 S = Kx is impossible 06:32:38 K=Sx would mean y = Kyz = Sxyz = xz(yz), but yz cannot determine y for all y and z so that is impossible 06:34:20 S = xK and K = xS seem harder to analyze 06:40:37 I think that's pretty darn good 06:41:15 `x`xx, 5 chars 06:56:49 -!- goban has joined. 07:23:26 -!- goban has quit ("Konversation terminated!"). 07:25:39 -!- goban has joined. 07:27:52 -!- helios_ has joined. 07:28:08 -!- helios24 has quit ("Leaving"). 07:28:39 -!- helios_ has changed nick to helios24. 07:37:50 -!- voodooattack has joined. 07:40:52 -!- goban has quit (Remote closed the connection). 07:44:33 -!- goban has joined. 07:48:15 -!- goban has quit (Client Quit). 07:49:01 -!- crathman_ has joined. 07:49:24 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 07:49:47 -!- crathman_ has changed nick to crathman. 07:49:59 -!- goban has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:16 -!- Arrogant has joined. 08:16:20 -!- oerjan has quit ("leaving"). 08:39:24 -!- crathman has quit (Read error: 110 (Connection timed out)). 08:52:48 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 08:53:34 -!- goban has quit ("Konversation terminated!"). 08:55:15 -!- goban has joined. 09:11:36 -!- Arrogant has quit ("Leaving"). 11:47:10 -!- ihope has joined. 11:49:03 -!- ihope has quit (Client Quit). 13:09:01 -!- nazgjunk has joined. 13:20:08 -!- voodooattack has quit (Read error: 110 (Connection timed out)). 13:27:30 -!- voodooattack has joined. 13:32:07 -!- voodooattack has quit (Nick collision from services.). 13:32:17 -!- voodooattack| has joined. 13:32:57 -!- voodooattack| has changed nick to voodooattack. 13:41:23 -!- voodooattack has quit (Nick collision from services.). 13:41:37 -!- voodooattack has joined. 13:55:48 -!- voodooattack has quit (Nick collision from services.). 13:56:02 -!- voodooattack has joined. 14:13:06 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 14:13:17 -!- UpTheDownstair has joined. 14:13:29 -!- UpTheDownstair has changed nick to nazgjunk. 14:43:15 -!- ooooo has joined. 14:52:00 -!- crathman has joined. 15:46:31 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:46:46 -!- UpTheDownstair has joined. 15:47:41 -!- UpTheDownstair has changed nick to nazgjunk. 15:55:35 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 15:55:44 -!- UpTheDownstair has joined. 15:58:49 -!- UpTheDownstair has changed nick to nazgjunk. 16:16:12 -!- FabioNET has joined. 16:44:13 -!- voodooattack has quit (Nick collision from services.). 16:44:27 -!- voodooattack has joined. 16:58:08 -!- voodooattack has quit (Nick collision from services.). 16:58:22 -!- voodooattack has joined. 17:01:56 -!- voodooattack has quit (Nick collision from services.). 17:02:10 -!- voodooattack has joined. 17:27:43 -!- sebbu has joined. 17:27:56 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:28:14 -!- goban has joined. 17:36:22 -!- kxspxr has joined. 17:36:32 -!- kxspxr has quit (Client Quit). 17:38:52 print "hi" 17:41:11 -!- UpTheDownstair has joined. 17:41:22 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:42:30 -!- UpTheDownstair has changed nick to nazgjunk. 17:51:17 -!- voodooattack has quit (Nick collision from services.). 17:51:31 -!- voodooattack has joined. 18:06:09 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 18:23:36 -!- FabioNET has joined. 18:29:24 -!- sebbu2 has joined. 18:37:15 -!- sebbu has quit (Read error: 60 (Operation timed out)). 18:38:46 -!- FabioNET has quit (Read error: 145 (Connection timed out)). 18:54:36 -!- sebbu2 has changed nick to sebbu. 19:33:33 -!- FabioNET has joined. 19:52:28 -!- ShadowHntr has joined. 20:21:16 -!- _FabioNET_ has joined. 20:21:20 -!- FabioNET has quit (Read error: 110 (Connection timed out)). 20:39:14 -!- voodooattack has quit. 21:20:47 -!- oerjan has joined. 21:23:13 -!- SevenInchBread has joined. 21:23:27 hi crumby one 21:45:00 x=\x.xSKS 21:45:04 S = xx 21:45:15 not sure if K is possible yet 21:45:22 hm... 21:46:28 I = x(xx) 21:48:40 how do you get that last one? 21:49:07 xS = SSKS 21:49:53 erm 21:51:17 SSKS = SS(KS) 21:51:39 I goofed 21:51:49 easy to do 21:53:52 I get x(x(xx))=S as well 21:57:32 x(xxx)=SS(SKS)=SSI 22:03:22 x(x(xxx))=S 22:03:55 xx(xx)=SS, x(xx)x=SxS, xxxx=Sxx 22:04:09 SSxy = Sx(xy) 22:04:29 you mean Sy(xy) 22:04:30 Sx(xy)z = xz(xyz) 22:05:15 what? 22:05:24 SSxy=Sy(xy) 22:05:24 i was just using x as a variable 22:05:41 i realized that 22:05:57 crap 22:05:59 yeah 22:07:17 i seem to be always getting back to S: x(xx(xx))=S too) 22:08:05 yeah 22:08:17 think this is a dead end 22:08:51 maybe, maybe not. at least getting S cuts many search branches short quick 22:09:15 because SKS = I 22:09:54 darn you are right 22:10:26 well not quite 22:10:33 but it's still \x.(((xS)K)S) and not \x.x(SKS) 22:11:37 none of the four-x versions actually contain K 22:12:18 or wait 22:12:38 well x itself is still in there so there might be a chance 22:16:40 ...DNS is some weird, chaotic stuff... 22:16:57 but then again... that kind of applies to networking in general. 22:17:42 x(x(xx)x)=SK=KI eventually 22:24:40 x(xxxx)=SKS=I 22:25:24 cool 22:34:58 x(x(x(xx)x))=KS, I have a feeling of getting closer... 22:35:18 i've gone on to other combinators 22:35:18 (That was the first with 6 x's 22:35:21 ) 22:35:36 fine then we aren't duplicating work 22:35:46 i'm going for shortness of S and K 22:36:05 indeed this x has been a disappointment in that respect 22:36:06 hmm... I'm really interested in the idea of an "anonymous decentralized server"... for lack of a better term 22:36:57 but then, if it really was shorter then since the combinator is the same size as the known one it would certainly have been used instead 22:37:18 i've got one with a short S and I 22:37:21 no K yet 22:37:26 hmm.. it'd be like a P2P network acting as a single virtual server... all the data would be partitioned amongst all the peers in the network... and so there would be no real "server". 22:37:59 ...would be great for illegal stuff. :) 22:38:48 Uh, DHT you mean? 22:39:14 If you took any ol' DHT system, then connected to it without actually joining the DHT, you have exactly what you're looking for. 22:40:18 It would be great for free web hosting too... 22:40:46 since everyone being hosted is chipping in some process cycles and hard disk space of their own... there's no need to charge anyone for the service. 22:41:28 freenet 22:42:15 indeeed 22:42:30 without the kiddy-porn though, I hope 22:42:40 IIRC, there are no non-participating clients in FreeNet. 22:42:41 or maybe bittorrent 22:42:51 freenet sucks because it's written in java 22:42:54 GregorR: you could write a selfish client if you wanted to 22:43:13 nah... you could have kiddie porn. 22:43:16 bsmntbombdood: how so/ 22:43:23 SimonRC: resource hog 22:43:37 maybe 22:44:05 Some non-virtual instance methods might be nice in Java. 22:44:10 I ran freenet for a while untill I got tired of it using half my memory and all of my cpu 22:44:18 Or sealed classes. 22:44:30 they would speed up method calls a fair bit I ssupect 22:44:42 bsmntbombdood: and all your network connection 22:44:43 bsmntbombdood, you can't give it a maximum? 22:44:59 This is apparently about networking water coolers, from the looks of slide 2: http://www.dur.ac.uk/tom.friedetzky/local/par/pc14-4up.pdf 22:45:22 gargh 22:45:26 what? 22:45:29 X=\x.xSKSK 22:45:34 S = XX 22:45:41 what is this for? 22:46:09 I = X(XX) 22:46:53 SimonRC, trying to find a single combinator to have the shortest S and K 22:47:11 best we have so far is X=\x.xKSK 22:52:57 hmmm... so freenet doesn't die down on its process cycles when it doesn't need them and/or when there's other stuff that needs them on your computer? 23:13:03 -!- nazgjunk has quit ("i need to sleep ffs"). 23:21:01 hmm http://ling.ucsd.edu/~barker/Iota/ 23:21:27 yeah 23:21:29 yes, that's where we started 23:21:51 but \x.xKSK is shorter than iota 23:22:40 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 23:27:34 oh wow 23:27:43 http://www.cs.uu.nl/people/jeroen/article/combinat/combinat.ps 23:27:45 ? 23:28:15 Darn postscript 23:28:45 X = \f.fS(\xyz.x) 23:28:47 K = XX 23:28:51 S = X(XX) 23:29:13 ok that's the final word then 23:29:25 yeah 23:31:31 the worst is i am sure i have seen that URL before 23:32:55 it was on the iota page 23:35:09 it is considerably more complicated though 23:36:00 -!- sebbu has quit ("@+"). 23:41:45 \f.fS(S(S(KS)S(KK)(KK))(S(KK)I)) 23:42:36 crazy long 23:42:50 i think you have missed some optimizations 23:43:09 probably 23:43:17 \xyz.x = \x.K(Kx) = S(KK)K 23:43:33 uh...yeah 23:43:35 :P 23:43:49 i'm stupid 23:45:29 \f.fS(S(KK)K)=SI(S(KS)(K(S(KK)K))) 23:45:38 wait 23:45:48 too late :) 23:46:02 whoops 23:46:24 \xyz.x = S(KK)(S(KK)I) 23:46:24 *S(SI(KS))(K(S(KK)K)) 23:46:30 not S(KK)K 23:46:42 S(KK)I=K 23:46:58 oh duh 23:47:39 follows from eta-reduction: \x.fx = f 23:48:12 yeah 23:49:17 * SimonRC goes... 23:49:22 silly me 23:50:24 I wonder if there's a shorter I than SKK 23:50:55 no: S, K, SS, SK, KS, and KK are all not I 23:51:45 ...so? 23:51:59 in iota, I is shorter than both S and K 23:52:18 oh you mean with that X 23:53:24 actually there is 23:53:37 because SKX is shorter than SKK :) 23:55:21 oh right 23:55:29 but there still could be a better one 23:56:11 -!- _FabioNET_ has quit (Read error: 110 (Connection timed out)). 23:59:10 XX=K, X(XX)=K, XXX=KX, X(X(XX))=XK=KS_=S, X(XXX)=X(KX)=KXS(\xyz.x)=X(\xyz.x)=(\xyz.x)S(\xyz.x) 23:59:37 eh, wait... 2007-02-17: 00:00:26 messed up at the start 00:03:41 wow that paper printed terribly 00:07:18 nope, there is no shorter than six X'x 00:07:22 *X's 00:08:17 fun 00:08:36 eh, wait... 00:08:50 i have missed some cases 00:09:41 i'm trying to understand their derivation 00:09:55 in the paper? 00:10:55 yeah 00:12:19 for P it makes sense but I don't understand the K part 00:13:42 -!- ShadowHntr has quit (Client Quit). 00:14:36 ok now i think i have all 5 X cases, still no I 00:20:29 i sorta understand it now 00:23:19 their method is interesting 00:29:44 apparently some guy named "Rosser" came up with X = \x.xKSK 00:30:06 probably the Rosser of the Church-Rosser theorem 00:32:23 http://en.wikipedia.org/wiki/J._Barkley_Rosser 00:45:33 -!- crathman has joined. 01:30:07 I wonder if there's an X such that XX = S and X(XX) = K 01:34:14 * bsmntbombdood tries the method in the paper 01:37:21 * SimonRC goes 01:38:08 find a P,Q,R such that PPQRQR == S 01:41:18 P=K(K(K(K(KS)))) 01:41:27 :) 01:42:12 -!- Arrogant has joined. 01:42:18 find a P,Q,R such that PPQRQR == S and SPQR = K 01:42:22 :) 01:42:47 Senatus PopulusQue Romanum 01:43:21 well, SPQR=PR(QR) 01:43:50 yeah 01:44:14 P=R=K 01:44:55 so then KKQKQK=S 01:45:12 KKQKQK=KKQK=KK, alas 01:45:52 yeah :( 01:46:06 what about P=I, R=KK 01:46:30 IIQ(KK)Q(KK)=S 01:46:38 =Q(KK)Q(KK) 01:47:04 ok, P=I, R=KK, Q=K(K(KS)) 01:48:50 what should X look like then? 01:50:15 what is (K(K(KS)))(KK)(K(K(KS)))(KK)? 01:51:09 S 01:51:15 =K(KS)(K(K(KS)))(KK)=KS(KK)=S 01:52:17 that was the point of that Q 01:52:22 wowzers it works 01:52:52 so X = \f.fPQR 01:53:32 so X = \f.f(K(K(KS)))(KK) 01:54:22 aha. then XX=XPQR=PPQRQR=S and X(XX)=XS=SPQR=K 01:54:41 yep 01:54:42 :) 01:54:58 and here i thought your equations looked arbitrary. 01:55:15 or at least complicated. 01:56:47 mission accomplished 01:57:23 yep 01:58:59 X = \f.fI(K(K(KS)))(KK) 01:59:59 or X = \f.f I (\xyz.S) (\x.K) 02:01:02 hm... 02:01:48 you cannot have XX=V and XV!=V, I think. 02:02:09 so XX and X(XX) cannot be chosen arbitrarily. 02:03:08 what? 02:03:25 Vx=V 02:03:37 oh 02:04:02 -!- ihope has joined. 02:04:10 I don't get what you are saying 02:04:21 ~exec self.raw("JOIN #math\r\nPRIVMSG #math :zomg bot") 02:04:27 ihope: we are brillant 02:04:33 (sic) 02:04:35 You are? 02:04:41 ~exec self.raw("PART #math") 02:04:45 ihope: me and oerjan 02:05:02 I mean, if you can find X such that XX=K and X(XX)=S or such that XX=S and X(XX)=K then you might think you could choose XX and X(XX) to be whatever you want. 02:05:15 * ihope logreads 02:05:41 But I don't think you can get XX=V and XX!=V, because then X would have to simultaneously use its argument and not 02:06:07 *X(XX)!=V 02:06:12 it couldn't be of the form \f.fE 02:06:20 V? 02:06:27 Unlambda's v operator? 02:06:30 Vx=V 02:06:31 yep 02:06:38 If that's it, you really don't want XX=V. 02:07:17 you might want to try and solve XX=A, X(XX)=B for A, B arbitrary 02:07:39 this method needs the number of arguments that B takes 02:07:54 The next things up would be (XX)X = XX and X(XX) = XV. If X pays any attention to its first argument, XV = V, and if it doesn't, X = KV meaning XV = V. 02:08:12 A, rather 02:08:30 that's essentially what i think too 02:08:53 then you solve \f.f PQR...upto A's # of args 02:09:13 although not entirely. 02:09:27 Then again, maybe I'm wrong for the "if it pays any attention to its first argument" case. 02:09:28 you could have XV=KV, say 02:09:59 Well, KV is... well, it's V. 02:09:59 yeah, it's more subtle than that. 02:10:11 hm... 02:10:25 X could simply pass its first argument on as arguments to other things. 02:10:27 you could have XV=\y.yV 02:10:37 Indeed. 02:10:51 Therefore, XVX = XV, which... hmm. 02:11:07 it would have to be \f.(E)f 02:11:15 instead of \f.fE 02:13:11 V essentially takes an infinite number of arguments, yes. It doesn't have what is called a "head normal form" 02:13:53 \f.E_a_1 ... E_a_n f E_b_1 ... E_b_n 02:13:59 It's headless! 02:14:10 ...What is a head normal form, exactly? 02:14:14 And in a sense every combinator which doesn't is semantically equivalent. 02:14:50 I guess one could say V is equivalent to (\x.xx)(\x.xx)... 02:15:12 It's \v1v2...vn.v E1E2...Em 02:15:31 oerjan: I... see. 02:15:59 The first expression inside the lambda must be a variable. 02:18:54 And if you reduce the Ei expressions recursively to their head normal forms (or to V if they don't have any) then you get a tree structure which may sometimes be infinite. 02:22:47 Bhm trees. 02:24:44 Here is one article which mentions it: http://pauillac.inria.fr/~huet/PUBLIC/Bohm.pdf 02:25:27 -!- oerjan has quit ("Restart"). 02:27:51 -!- oerjan has joined. 02:28:38 Anyone said anything? 02:28:44 no 02:29:03 Logs are nice. 02:29:09 Good, then I won't have to go to that snail ircbrowse 02:29:22 we now have 3 decent single combinator bases 02:29:23 I was trying avoid it 02:29:31 *to 02:30:25 actually i could have gone to tunes, they are much quicker but poorer formatting. 02:32:06 I wonder why meme/ircbrowse has become so slow. Too much growth? 02:35:07 is S(KS)K reducable? 02:35:29 maybe eta, lessee 02:35:42 Reduceable? 02:35:57 S(KS)Kx = S(Kx) 02:36:07 Ah, yes. 02:36:11 so no 02:36:18 nah, looks pretty minimal 02:36:39 S(Kx)yz = Kxz(yz) = x(yz)? 02:36:50 that's what I got 02:37:05 right 02:37:33 you could reduce it with either B or C, I never remember which is which 02:37:52 C is composition, isn't it? 02:38:03 So S(KS)K = CSK? 02:38:16 Hey, S(KS)K = C, even... right? 02:38:28 yep, C 02:38:37 no b 02:38:45 (B a b c) = (a (b c)) 02:39:03 What's C, then? 02:39:16 (C a b c) = (a c b) 02:39:23 according to wikipedia 02:39:30 -!- digital_me has joined. 02:39:39 So that's... uh, what was it? 02:39:42 flip! 02:39:52 something like that 02:40:13 B = (.), C = flip 02:40:23 And W = join. 02:40:44 join? 02:40:55 http://en.wikipedia.org/wiki/B%2CC%2CK%2CW_System 02:41:17 (a -> a -> b) -> a -> b, isn't it? 02:43:54 well, but only in the Reader monad 02:45:19 Is there an equivalent whose principal type is that? 02:46:10 what? 02:46:39 -!- oklopol has quit (Remote closed the connection). 02:46:44 Like join, but not monadic, I mean. 02:46:51 -!- oklopol has joined. 02:46:57 Let's ask hoogle 02:48:01 apparently not 02:49:32 I suddenly feel an urge to combine this with set theory. 02:49:56 zzzzz 02:49:57 How can functions in lambda calculus be expressed as sets? 02:50:11 Domain theory 02:51:00 Domain theory? 02:51:15 http://en.wikipedia.org/wiki/Domain_theory 02:51:21 (BTW, Unlambda uses c for call-with-current-continuation, which produces "escape continuations".) 02:51:24 zzzzz 02:51:38 SimonRC: ? 02:52:55 It's part of unlambda's weird impure functions 02:53:26 I wonder if you can interpret SKI in hardware 02:53:29 and has nothing to do with BCKW. 02:54:01 bsmntbombdood: if you can interpret it in software, and processors interpret software... 02:54:19 ihope: you know what I mean 02:54:43 you need some kind of automatic memory allocation and garbage collection. 02:54:56 bsmntbombdood: do I? 02:55:34 there are plenty of functional virtual machines, i am sure some of them could be hardware implemented. 03:03:13 -!- goban has quit (Remote closed the connection). 03:04:36 here is a design from '86: http://content.ohsu.edu/cgi-bin/showfile.exe?CISOROOT=/etd&CISOPTR=127 03:05:18 -!- goban has joined. 03:09:09 loooong 03:40:54 -!- Sgeo has joined. 04:22:29 longcat is 04:23:16 thinporcupine 04:28:07 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 04:45:51 -!- digital_me has quit ("leaving"). 05:12:35 SII(S(KK)(SII)) 05:14:40 = V 05:15:48 yep 05:19:39 combinatory calculus is fun 05:19:58 who would want to give names to arguments? 05:22:03 -!- crathman has quit (Read error: 110 (Connection timed out)). 05:23:35 ooh fun 05:23:38 S(K(SI))(S(KK)I) 05:24:00 S(K(SI))K even 05:53:47 I have a wonder. 05:54:22 It's a miracle! 05:54:43 Excuse me, I think I got my tongue stuck in my cheek. 05:55:01 Is it possible to have a language that uses S,K,I, but doesn't have any explicit order of application symbols? 05:55:16 *turing complete language 05:56:30 Given that combinators aren't commutative... 05:57:40 i guess that's a no 06:01:03 s/S,K,I/any combinators/ 06:02:11 some kind of structure is necessary. 06:02:32 with the X combinators it's possible to define S and K if xyz is x(y(z)) 06:03:10 iota too 06:03:51 if you can define S and K then you still need to keep the order of those. 06:04:00 yeah 06:04:22 you can dispense with some of the order. 06:04:33 in other calculi 06:05:09 The pi-calculus for example, independent processes whose order doesn't matter. 06:05:23 But those aren't combinator based that I know of. 06:05:38 never heard of pi-calculus 06:06:08 It's sort of a lambda calculus for concurrent programming. 06:07:40 -!- crathman has joined. 06:08:49 And there are calculi inspired by chemical processes. Instead of ordering, there is a distinction between active and inert data. 06:10:03 but if you had no structure what so ever, and say something called S,K and I: 06:10:20 then the only thing mattering would be the number of each. 06:10:47 Not much to base computation on. 06:11:00 yeah 06:18:09 -!- Sgeo has quit ("Leaving"). 06:44:25 -!- crathman has quit (Read error: 110 (Connection timed out)). 06:52:48 -!- oerjan has quit ("leaving"). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:08:53 -!- Arrogant has quit (Read error: 104 (Connection reset by peer)). 08:18:03 VVVVVVV 08:19:44 why does unlambda have V? 08:21:44 why not? 08:22:17 because it's stupid? 08:22:26 it's not stupid 08:22:34 why not? 08:22:34 it's a convenient shortcut, like i 08:23:19 v is bottom, no? 08:23:33 er, no 08:23:38 er, yes, it is 08:24:16 bottom? 08:24:37 _|_ 08:26:07 bottom is the bottom of an infinite loop :) 08:28:32 I don't see any applications of V 08:31:44 it could be a primitive exception mechanism 08:32:05 for example, division by zero would return v 08:35:03 hmmm 08:51:36 -!- nazgjunk has joined. 09:18:17 -!- sebbu has joined. 12:20:05 -!- tgwizard has joined. 12:20:26 -!- voodooattack has joined. 13:26:11 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:26:41 -!- nazgjunk has joined. 13:42:28 -!- crathman has joined. 13:51:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:51:53 -!- nazgjunk has joined. 14:01:37 -!- tgwizard has quit (Remote closed the connection). 15:10:42 -!- helios24 has quit (Read error: 60 (Operation timed out)). 15:21:16 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 15:21:51 -!- crathman has joined. 15:51:55 -!- sebbu has quit ("reboot time soon"). 16:09:50 -!- helios24 has joined. 16:23:10 -!- goban has quit (Connection timed out). 16:23:31 -!- goban has joined. 16:28:59 -!- sebbu has joined. 16:31:24 -!- helios_ has joined. 16:32:08 -!- helios24 has quit (Read error: 110 (Connection timed out)). 16:57:55 -!- crathman_ has joined. 16:58:09 -!- crathman has quit (Read error: 104 (Connection reset by peer)). 16:58:10 -!- crathman_ has changed nick to crathman. 17:01:51 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:01:54 -!- goban has joined. 17:14:18 -!- helios_ has quit ("Leaving"). 17:17:34 -!- crathman_ has joined. 17:27:30 -!- crathman_ has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 17:30:01 -!- crathman has quit (Read error: 110 (Connection timed out)). 17:33:14 -!- calamari has joined. 17:41:16 -!- goban has quit (Connection timed out). 17:41:34 -!- goban has joined. 18:07:05 -!- crathman has joined. 18:09:49 -!- Sgeo has joined. 18:30:08 -!- sebbu2 has joined. 18:35:19 -!- calamari has quit (Read error: 104 (Connection reset by peer)). 18:49:11 -!- sebbu has quit (Read error: 110 (Connection timed out)). 18:49:49 -!- calamari has joined. 19:08:11 -!- sebbu2 has changed nick to sebbu. 19:19:45 hmm 19:20:57 Currying is the tautology: ((A & B) -> C) -> (A -> (B -> C)) 19:20:58 heh 19:23:24 also, IIRC, S is (p -> q -> r) -> ((p -> q) -> (p -> r) 19:24:23 yeah, that's right 19:24:49 also K is p -> q -> q and I is p -> p 19:25:07 which means that S-K-I corresponds to that logic I can't remember the name of 19:25:55 hmm, Y = SII, so 19:37:53 -!- goban has quit (Remote closed the connection). 19:38:07 -!- goban has joined. 19:39:49 -!- voodooattack has quit. 20:37:51 ((A & B) -> C) -> (A -> (B -> C)) ? 20:37:54 what's that mean? 20:38:04 Y isn't SII 20:38:18 (SII)x = xx 20:39:17 Y = SII \f.\x.x(fx) 20:40:10 i think 20:41:15 -!- UpTheDownstair has joined. 20:41:29 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:43:25 -!- UpTheDownstair has changed nick to nazgjunk. 20:44:00 Y=SII(S(K(SI))I) 20:44:17 by abstraction elimination 20:57:09 -!- nazgjunk has quit ("night silly sheep"). 20:57:30 hmm that doesn't seem right 20:58:08 because (S(K(SI))I) is SI 20:58:20 so that would mean Y=SII(SI) 20:58:29 I wouldn't know. 21:00:06 SII(SI)x == (SI)(SI)x == Ix(SIx) == x(SIx) 21:00:08 hmmm 22:03:42 stupid haskell and its typeness 22:51:23 -!- ihope has joined. 22:51:48 -!- sebbu2 has joined. 22:54:38 ~exec self.ihope = IRCbot("80.32.164.76", "bot", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen() 23:03:42 #exec self.ihope = 3 23:04:03 ~exec self.ihope = 3 23:04:23 Well, that sure didn't kill it, did it? 23:04:26 ~exec self.ihope.raw("QUIT") 23:08:35 -!- digital_me has joined. 23:10:21 -!- sebbu has quit (Read error: 110 (Connection timed out)). 23:26:29 sweet, the calculi of lambda conversion got here 23:30:11 -!- ihope has quit (Read error: 131 (Connection reset by peer)). 23:42:29 -!- SevenInchBread has changed nick to CakeProphet. 23:53:59 uuuuh 23:54:20 this book defines Snfx as f(nfx) 23:54:22 -!- sebbu2 has changed nick to sebbu. 2007-02-18: 00:00:50 weird 00:42:23 -!- sebbu has quit ("@+"). 00:56:39 -!- Sukoshi has quit (Read error: 104 (Connection reset by peer)). 01:08:54 -!- CakeProphet has changed nick to SevenInchBread. 01:09:17 foo 01:28:39 -!- anonfunc has joined. 01:34:39 -!- anonfunc has quit. 01:36:00 -!- anonfunc has joined. 02:31:43 -!- digital_me has quit ("leaving"). 03:08:54 pipes in that SII is the mockingbird 03:09:15 I put together the Smullyan birds a while back: http://www.angelfire.com/tx4/cus/combinator/birds.html 03:09:48 ? 03:09:54 wishes for a simple esoteric language that would allow combinators to be named and composed 03:10:07 what's a bird? 03:10:24 Y combinator is known as the Why bird. 03:10:52 ... 03:10:58 birds are kind of a trick for naming combinators - from one of Raymond Smulyan's book 03:11:21 a mockingbird repeats whatever it hears: SIIx = xx 03:11:44 ok 03:12:16 and... 03:12:52 no particular point... just scrolling up on some of the earlier conversation,,, 03:14:10 realizes that I might be missing the point of this channel... 03:14:58 but playing around with unlambda, I've been wondering if there's a similar language that actually allows you to name and combine combinator definitions 03:16:23 -!- oerjan has joined. 03:18:00 crathman: well, Scheme would be one ;) 03:18:02 -!- wooby has joined. 03:18:49 haskell too 03:18:52 tis true Scheme can be used. just looking for a language that's bare bones like unlambda or K 03:20:00 but unlambda and k doesn't go above the level of actually letting you write long chains of combinators 03:20:04 bsmntbombdood: V in Unlambda becomes usable because of C, the call-with-continuation operator. In fact you have to use them because the I/O is based on it. 03:20:29 The impure C allows you to escape from a V. 03:20:44 what? 03:21:06 Your command some hours ago, you wondered why Unlambda had V. 03:21:20 oh 03:21:40 *comment 03:22:00 * oerjan must be in IRP-mode :) 03:23:01 Of course the real reason to tangle V,C and I/O in this way is to make Unlambda weirder than pure combinatory logic. 03:23:18 * bsmntbombdood notices that crathman's "Crossed Konstant Mocker" SKI expansion is way longer than it needs to be 03:24:23 -!- anonfunc has quit. 03:25:32 can be just S(KK)(SII) 03:25:48 I was sloppy with some of the sk chains 03:25:53 Another weirdness: Using C you can detect whether a function is D without actually applying it. I noticed this but I don 03:26:03 't know if anyone has used it. 03:26:49 It could allow for a different way of list termination. 03:27:46 I considered using it in my Unlambda interpreter but settled on using Church numerals to build lists instead, since you have to count `'s anyhow. 03:32:22 but we used laminated punch cards! 03:32:32 -!- crathman_ has joined. 03:32:50 SimonRC: the SKI logic is "the implicational fragment of intuitionistic logic" 03:34:06 oerjan.logread_amount > 100 03:34:52 And SKI corresponds to doing that logic Hilbert style, while lambda calculus corresponds to doing it natural deduction style. 03:35:16 See Wikipedia, I think. 03:35:36 whoops. get's disconnected in the middle of conversation. 03:37:06 -!- crathman has quit (Read error: 60 (Operation timed out)). 03:37:18 -!- crathman_ has changed nick to crathman. 03:42:02 crathman: I found an interpreter for such a language the other day. 03:42:50 I'm not proficient enough to write esoteric languages... but very much enjoys playing with them 03:43:26 oerjan: got a link? 03:43:34 i don't think it is considered esoteric, even, more like a computational model like combinatory logic itself. 03:44:03 I'm trying to look through my browser logs. Although I posted it here, too. 03:44:07 oerjan: there is a fine line between tarpit and minimalist PL. :-) 03:46:11 btw here is a weird one that i couldn't make any sense of: http://cstein.kings.cam.ac.uk/~chris/combinators.html 03:46:35 definitely something to play with, though. 03:48:15 Darn, I didn't know it was that many days ago, but I found it: http://www.dina.dk/~sestoft/lamreduce/index.html 03:48:52 actually it is lambda calculus, but it is still pretty bare-bones 03:52:23 oerjan: thanks! 03:56:15 calculation by hand ftw! 03:58:51 ha ha! 03:59:12 I is XXX 03:59:28 hot combinators naked! 04:00:02 -!- ShadowHntr has joined. 04:00:54 actually no, but ok 04:12:02 -!- anonfunc has joined. 04:17:22 -!- ShadowHntr has quit (Client Quit). 06:14:29 -!- crathman_ has joined. 06:20:14 -!- crathman_ has quit (Read error: 54 (Connection reset by peer)). 06:20:36 -!- crathman_ has joined. 06:28:31 -!- crathman_ has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 06:32:42 -!- crathman has quit (Read error: 110 (Connection timed out)). 07:08:39 -!- calamari has quit ("Leaving"). 07:52:49 -!- helios24 has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:54 -!- sebbu has joined. 08:21:34 G'night all! 08:24:27 -!- Sgeo has quit (Client Quit). 09:03:01 -!- helios24 has quit (Read error: 54 (Connection reset by peer)). 09:03:03 -!- helios24 has joined. 09:09:16 oerjan, was it an unlambda interpreter you made with unlambda or a brainfuck interpreter? :P 09:10:56 unlambda 09:11:12 i thought so 09:11:17 can i have the link? 09:12:14 * SevenInchBread has fun with GUI programming? 09:12:36 I never thought I'd say that. 09:12:46 http://oerjan.nvg.org/esoteric/interpreter.unl but I don't seem to get through at the moment. 09:13:16 thank you 09:13:40 * SevenInchBread should get his own hostname one of these days... 09:14:14 I didn't even know I had one until they mentioned it during a recent crash at NVG 09:14:40 I'm actually not too familiar with how DNS works... 09:15:26 you need a static IP address right? Either that or change the registration each time your IP changes... 09:15:59 well my webpage is on the NVG server so others take care of the mess... 09:16:19 what does C do in unlambda? 09:16:33 if you change the registration you have to be careful about expiration dates, I think. 09:16:56 Tkinter (Tk in Python) is oddly fun to play with. 09:17:16 if you make those too long you _cannot_ change the registration reliably until it expires. 09:17:24 C is call-with-current-continuation 09:17:45 hmm... what's that mean? :D 09:18:15 `Cf turns into `f, where is a continuation, a special function. 09:18:29 yeah... changing the registration will create a period of time where your website is inaccessible... because of caching. 09:19:25 Now `g would cause the call `Cf to return with g as its result 09:20:36 If `Cf hasn't already returned you can think of as a local break or return function 09:22:02 But if `Cf has already returned you can mysteriously use to make it return _again_. 09:24:36 The latter can make for even more than usually hard to understand programs. The Unlambda distribution comes with this program: ``r`cd`.*`cd 09:25:12 When you can understand what it does, you have a good grasp on continuations. 09:26:33 so... it has something to do with side-effects? :D 09:26:36 However, I believe my interpreter only uses continuations for escape. Not that it isn't hard enough. 09:27:36 Sort of. C itself is still sort of pure, it just makes for strange program logic. 09:28:11 i'll try to understand them later 09:28:16 *C, not them 09:28:37 unlambda is goddamn simple now that i read about it yesterday 09:29:01 i didn't understand it when i saw it like half a year ago 09:29:25 a few substitution rules 09:34:52 -!- voodooattack has joined. 09:34:57 -!- voodooattack has quit (Remote closed the connection). 09:35:25 maybe it was because i thought there is something super special in there 09:35:33 -!- voodooattack has joined. 09:57:26 -!- nazgjunk has joined. 09:58:11 hmm... i still have a hard time understanding how to do loops 09:58:22 can i get an s expression reduce to itself? 09:58:27 i mean 09:58:29 i can't 09:58:33 can you? 09:59:20 what do you mean? :p 09:59:49 ahem 10:00:42 loops -> recursion -> clever use of self-application 10:01:51 let's say you want to make a function f = `g f 10:02:10 actually... 10:02:25 since unlambda has strict evaluation we need to be a bit careful. 10:03:17 okay 10:03:29 how would i make f ? `gf 10:03:32 = 10:03:33 Let's say we want f x = ``g f x, where g is given. 10:03:33 *= 10:03:59 yeah 10:04:12 the first version will only work in a lazy language. 10:04:36 i think i follow 10:04:51 the trick is to make something that becomes f when applied to itself. 10:05:06 say h h = f 10:05:15 exactly what i want, yes 10:05:27 hmm okay 10:05:43 so ``h h x = ``g f x = ``g `hh x 10:06:08 so it won't evaluate them too early? or? 10:06:22 whoops. 10:07:17 To avoid early evaluation, the first step is to modify g. 10:08:05 Make a g' such that ``g' h x = ``g `hh x 10:08:53 but such that g' only applies h to itself when really needed. 10:09:09 okay, this gets too hard for me 10:09:11 :) 10:09:22 ```SIXS 10:09:23 ``IS`XS 10:09:23 `S`XS 10:09:37 i just wanted `XS -> `I`XS 10:09:42 hmm 10:09:46 it's not the same thoug 10:09:47 *H 10:09:58 that's not overly hard since I is the identity. 10:10:08 i would need an interpreter to learn this 10:10:31 it's not overtly hard maybe, too hard for me though 10:10:53 i mean, `XS is _always_ `I`XS :D 10:10:59 overt :PP 10:11:14 well, true 10:11:49 but i'm having a hard time convincing myself about turing completeness 10:11:59 since all expressions seem to die right away 10:12:07 ho hum. 10:12:11 so i wanted to make an S expression evaluate to itself 10:12:22 ``sii is your friend. 10:12:43 ` ``sii ``sii will not die. 10:13:27 let me explain it a different way. 10:13:48 mocking bird 10:14:13 to make a function recursive, give it an extra parameter which is itself. Then to recurse, apply that parameter to itself. 10:14:56 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 10:15:05 yeah, that i figured, i just needed to see one simple example of S reducing into itself 10:15:09 an s expression 10:15:43 well I just gave you one, ```sii``sii 10:16:06 simplest there is. 10:16:18 i did this language once where you needed to pass everything around to be able to use them... but unlambda indeed is already like that 10:16:30 yeah 10:16:30 i wish this world was smaller 10:16:38 i might do something original sometime 10:16:57 i'll play with cheese for a while then 10:17:02 i'm very slow in this 10:17:09 *``sii`sii 10:17:54 Eh, right 10:18:03 it's actually trivial 10:18:06 eh, wrong 10:18:11 oh 10:18:16 what is? 10:18:31 It should be ```sii``sii 10:18:57 indeed, but i understood it 10:19:02 i'm a clever interpreter 10:19:25 Another one: ```sii``s`kk``sii 10:19:45 but, it basically just... sii doubles it's argument and applies it to itself, so it's trivial 10:20:09 but it needs lazy evaluation, hm... 10:20:15 but i learned these yesterday so they are not so clear yet i could write these things myself 10:20:23 i have to convert the big one to python :D 10:20:40 lambda a,b,c : (a(c))(b(c)) 10:20:44 *ones 10:21:34 -!- nazgjunk has joined. 10:21:55 is there a nice command line kind of unlambda interpreter? 10:22:13 i'd make one fast in python though if just s and k and i 10:22:14 They are all command line aren't they? 10:22:19 probably 10:22:22 The ones in the distribution. 10:22:26 i don't know 10:22:40 because i've not seen one, i'll search if there are many then 10:22:41 And a few more on my web page 10:23:10 this is a language i'll prolly start making interpreters when learning languages, since it's so simple 10:23:32 Essentially what I did 10:23:46 hmm 10:23:52 can i see your web page? :D 10:24:09 Although getting C right requires some understanding. 10:24:14 oerjan.nvg.org/esoteric 10:24:25 yes, that's why i'll leave that until later 10:25:11 oh yeah, my thue 10:25:15 i'll finish it today 10:25:21 i might bug you later that is :D 10:25:50 I'm afraid I'll be leaving the house in 5 minutes 10:26:16 but feel free to ask me later 10:26:48 your haskell interpreter 10:26:52 it takes files 10:26:54 only 10:26:57 seems 10:27:08 Let me see 10:27:15 later tonight, i'll play with unlambda first 10:28:17 No, you can use stdin by giving no argument 10:29:37 :main? 10:29:41 i'll try.. 10:29:42 :D 10:30:10 hmm 10:30:27 I wrote it in a pretty old version of Haskell, no hierarchical libraries - NVG isn't quite up to date on Haskell 10:30:39 anyhow, gotta go 10:30:43 bye 10:30:51 -!- oerjan has quit ("Bye"). 10:31:30 -!- jix has joined. 10:48:00 -!- anonfunc_ has joined. 10:56:37 -!- voodooattack has quit (Nick collision from services.). 10:56:51 -!- voodooattack has joined. 11:02:51 -!- anonfunc has quit (Read error: 110 (Connection timed out)). 11:06:53 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 11:29:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 11:29:44 -!- UpTheDownstair has joined. 11:33:41 -!- UpTheDownstair has changed nick to nazgjunk. 11:48:43 -!- jix__ has joined. 11:53:37 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 12:32:56 -!- voodooattack has quit (Nick collision from services.). 12:33:10 -!- voodooattack has joined. 12:51:50 -!- jix__ has joined. 12:52:44 -!- voodooattack has quit (Read error: 54 (Connection reset by peer)). 12:53:36 -!- voodooattack has joined. 12:56:03 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:56:57 -!- nazgjunk has joined. 13:05:32 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:06:18 -!- nazgjunk has joined. 13:07:44 -!- helios24 has quit (Remote closed the connection). 13:08:51 -!- helios24 has joined. 13:26:42 -!- cz_jc has joined. 13:59:56 -!- crathman has joined. 14:20:36 -!- oerjan has joined. 14:41:26 -!- sebbu2 has joined. 14:47:24 -!- crathman has quit (Read error: 110 (Connection timed out)). 14:48:07 -!- cz_jc has left (?). 14:55:07 -!- oerjan has quit ("leaving"). 15:01:08 -!- sebbu has quit (Read error: 110 (Connection timed out)). 15:01:08 -!- sebbu2 has changed nick to sebbu. 15:20:31 whoooo... 15:20:35 * SevenInchBread is making..... paint. 15:20:55 my thue is almost ready! 15:21:05 i'm making output by passing a list around xD 15:21:32 dirty cheater? 15:21:39 ya 15:21:57 i want to get that working before actually learning haskell io 15:22:27 * SevenInchBread shall make the best paint program ever. 15:22:33 :P 15:22:48 i made a vector drawing thingie the other day 15:22:56 it was fun 15:24:14 Actually... I might rig up a CLI to a programming language specifically for drawing pretty pictures. 15:24:25 Programming art! 15:45:45 -!- crathman has joined. 15:49:58 ready 15:50:07 goddamn that took long :\ 15:51:13 yeah, i don't understand why there aren't programming command lines on the bottom of every program 15:58:10 -!- tgwizard has joined. 16:03:12 haha once again my interpreter was perfect but i couldn't use it xD 16:03:30 well, not perfect but worked as i'd intended it to 16:03:39 i should leave testing for others.. 16:17:23 -!- crathman_ has joined. 16:23:49 -!- crathman has quit (Read error: 60 (Operation timed out)). 16:36:50 Anyone want to make a nifty paint program with me? 16:37:58 ...I need to figure out how to make Python play nice with C... so I can make little helper functions in C to do all the massive byte-crunching while still nestled in the comfort of my The Best Language Ever(tm). 16:38:04 OMG 16:38:21 this actually worked http://fvdp.homestead.com/files/eso_bfi.t.txt :P 16:40:26 -!- crathman_ has quit (Read error: 110 (Connection timed out)). 16:40:41 hmm... not that fast though xD 16:41:09 *::=,>,[-<+>]<.:101_11_ 16:41:12 ran quite fast 16:41:18 *::=++++++++[>++++++++<-]>+.+.+.+.+.+.+.: 16:41:29 has been running for 2 minutes now 16:42:04 write an unlambda in brainfuck 16:42:31 :P 16:42:49 i will try when i know it better 16:43:08 ski shouldn't be hard 16:43:12 imean 16:43:15 impossible 16:46:55 now that the interpreter is ready i could make it again from scratch, since it's prolly the crappiest piece of code i've ever written/seen 16:55:05 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:55:20 -!- goban has joined. 16:57:22 -!- jix__ has changed nick to jix. 17:02:25 -!- goban has quit (Remote closed the connection). 17:02:40 -!- goban has joined. 17:33:51 haha 17:34:06 made a thue interpreter in python in 25 min :P 17:34:32 a little learning with haskell is needed... 17:34:36 ------------> 17:35:04 i was actually just starting to eat... but had to write it... my food's cold maybe :\ 17:47:14 Yeah... Thue is fun to make :) 17:47:20 because it's.... super easy to parse. 17:48:06 well, bf is easier 17:48:34 okay, might be i just used bad techniques 17:48:58 since i didn't really reason what the best way to do it would be 17:49:09 just wrote a quick thing 17:50:18 basically... split and partition. ;) 17:54:11 for old,type,new in ((left, right[0], right[:2]) for left, right in (x.partition("=")[::2] for x in split("\n") if "=" in x))): 17:54:20 you can parse the replacement rules in one line. :) 18:07:04 -!- goban has quit (Read error: 54 (Connection reset by peer)). 18:07:19 -!- goban has joined. 18:07:21 -!- voodooattack has quit (Read error: 113 (No route to host)). 18:10:40 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:11:04 -!- nazgjunk has joined. 18:11:57 def thue(str): 18:11:57 rules=filter(lambda a:a!=['']and a!=['',''], map(lambda a:a.split("::="),filter(lambda a:a!=' ',str).split("\n"))) 18:11:57 return rules 18:12:15 formatting 18:12:28 that's not the optimal way though :PP 18:17:15 http://www.pastebin.ca/362275 this is quite sucky :P 18:19:09 eh... maps and filters get kind of weird. 18:19:17 * SevenInchBread likes list comprehensions. :) 18:19:53 -!- ShadowHntr has joined. 18:20:19 i don't know how to parse that with them 18:20:39 maybe you did it there, that will not compile in my python 2.2 18:20:46 so i have no idea what it does :D 18:21:11 -!- goban has quit (Operation timed out). 18:21:32 -!- goban has joined. 18:21:37 it's basically the same thing as map and filter. 18:21:48 * SevenInchBread has the latest version of Python... so yeah... probably isn't compatable. 18:21:55 prolly, i just have [.. for .. in ... if ...] 18:22:04 and no other list comprehensions 18:22:18 oh... well that was a generator expression... same thing in iterator form 18:22:27 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:23:23 -!- nazgjunk has joined. 18:23:47 okay, i don't know what that means 18:24:07 know how list comprehensions work? 18:24:20 yes 18:25:04 a generator is the same thing... except instead of constructing a list.. it just creates an iterator (which lazily evaluates the items as it iterates over them..) 18:25:18 list comprehensions are eager... generator expressions are lazy. 18:25:49 i know that 18:25:55 but how do they work? 18:26:02 show me an easy example 18:26:43 oh 18:26:55 i got it now that i read your code thoroughly 18:27:19 except.. what is (x.partition("=")[::2] ? 18:27:33 the [::2] thingie 18:27:47 hmmm.. it's hard to explain exactly... 18:27:57 it has something to do with modulo. 18:27:57 tell me what it does there 18:28:04 i'll try and induce 18:28:05 -!- UpTheDownstair has joined. 18:28:24 it takes the 0th and 2nd slice from a 3-tuple 18:29:10 >>> x = (x ** 2 for x in xrange(100)) 18:29:12 >>> print x 18:29:13 18:29:15 >>> print x.next() 18:29:17 0 18:29:18 >>> print x.next() 18:29:19 1 18:29:21 >>> print x.next() 18:29:23 4 18:29:24 >>> print x.next() 18:29:25 9 18:29:27 -!- nazgjunk has quit (Connection reset by peer). 18:29:27 >>> print x.next() 18:29:29 16 18:29:30 >>> print x.next() 18:29:32 25 18:29:34 >>> print x.next() 18:29:36 36 18:29:38 >>> for num in x: print num 18:29:39 49 18:29:41 64 18:29:42 81 18:29:44 100 18:29:45 (...truncated...) 18:29:47 mmm... floddy. 18:31:03 yeah, i thought it's like that, but now partition returns left, mid, right, mid being the thing by which it was partitioned? 18:31:27 yeah 18:31:43 so [::2]] effectively rmeoves the mid 18:32:02 yeah 18:32:10 (It's a common technique I use with partition... :) ) 18:32:21 can i do [:1:2] or something to get 1,3,5 etc 18:32:45 that would just return 0 18:32:50 and btw i think it's brilliant they have these [stuff here] things for easy sublists etc 18:33:03 but, how would i get them? 18:33:05 you mean... list literals? :) 18:33:09 is there a way? 18:33:10 maybe 18:33:21 i don't know python's terminology that well 18:33:30 the brackets 18:33:34 [stuff, here] 18:33:45 yeah 18:34:02 is that python's own? 18:34:03 * SevenInchBread ...thought that was common... 18:34:27 yeah... comma-delimited list of expressions surrounded by brackets... makes a list. 18:34:38 no no nono 18:34:53 list literal, i didn't parse that in my head it seems :P 18:35:01 ooooh 18:35:04 i mean (list here)[stuff here] 18:35:05 the slices 18:35:08 ye 18:35:15 >>> range(100)[::2] 18:35:16 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98] 18:35:24 I'm guessing it uses modulo... 18:35:27 can you have 1, 3 etc? 18:35:38 yeah, from:to:filter-mod 18:35:45 i'd say 18:35:46 * SevenInchBread has never really figured out step... he just knows that setting it to 2 skips all the even indices. 18:35:57 oh 18:36:02 i'm a goddamn idiot :P 18:36:07 list[1::2] 18:36:19 ...yup :) 18:36:26 that would give you..... 18:36:36 1, 3, etc? 18:36:38 i hope 18:36:42 >>> range(100)[1::2] 18:36:44 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99] 18:37:59 heh... you can do all sorts of nifty stuff with slices if you make your subclasses of list. :) 18:38:44 hey... range(100)[1::2:3] would that be something? 18:38:58 nah. 18:39:09 there's only three parts. 18:39:13 start:end:step 18:39:14 would've been a fun way to slice 18:39:16 yeah 18:39:32 * SevenInchBread brings up numpy... which uses some kickass multidimensional slicing. 18:53:13 numpy-dumpy 18:57:25 here we go... 18:57:30 * SevenInchBread had to figure out how to use it again. 18:58:45 >>> import numpy 18:58:46 >>> x = numpy.array([range(10), range(10,20), range(30,40), range(40,50)]) 18:58:48 >>> print x 18:58:49 [[ 0 1 2 3 4 5 6 7 8 9] 18:58:51 [10 11 12 13 14 15 16 17 18 19] 18:58:52 [30 31 32 33 34 35 36 37 38 39] 18:58:54 [40 41 42 43 44 45 46 47 48 49]] 18:58:55 >>> x[1,3] 18:58:57 13 18:58:59 >>> x[1,(3,4,5,6,7)] 18:59:00 array([13, 14, 15, 16, 17]) 18:59:02 >>> x[(1,2),(3,4)] 18:59:03 array([13, 34]) 18:59:05 >>> x[(1,2,3),(3,4,5)] 18:59:06 array([13, 34, 45]) 18:59:34 -!- maverickbna has joined. 18:59:55 -!- ShadowHntr has quit (Nick collision from services.). 19:00:05 -!- maverickbna has changed nick to ShadowHntr. 19:01:33 can you take sub-squares from a 2d-array? 19:01:50 I think you can... I'm just trying to figure out how. :P 19:02:15 it's also pretty damn efficient... most of NumPy's array stuff is in C. 19:03:23 yeah, clever trick 19:03:40 I don't even think it uses multiple arrays actually.. 19:03:55 as long as you maintain a solid shape you can just use multiplication. 19:04:17 yeah, asm does that faster than it does actualy multiplication 19:04:21 so yeah, it's fast 19:04:26 *actualy 19:04:29 *actual 19:04:36 (wh the y) 19:04:43 *(why the typos :\) 19:05:40 heh... there's a function for initializing an arbitrary array to nothing but zeros... perfect for a BFer :) 19:06:22 well, it's kind of obvious there's one :P 19:06:54 hmmm? 19:07:10 i think it is... maybe not :\ 19:08:47 -!- Sgeo has joined. 19:10:10 oklopol, do you have it installed? 19:10:50 i don't... i'll get a newer python too if i get it 19:10:56 hmm 19:11:00 -!- UpTheDownstair has changed nick to nazgjunk. 19:11:13 Numpy is incredibly fast O.o 19:11:22 i'll do it now, gotta see 19:12:06 it initialized a 100 by 100 by 100 array of zeros in about the same time any other normal Python list would initialize. 19:13:01 hmm 19:13:28 100 x 100 is pretty much an empty array :) 19:13:40 10000 ~ 0 19:14:00 well... using Python lists it would have taken up a signifigant amount of memory. 19:14:20 probably 19:14:37 i'm used to python being unbelievably slow 19:15:04 I haven't experience much of anything else... as far as for actual use. 19:15:45 i know at least c++, java, python and vb thoroughly 19:15:57 it usually works fine for what I need it to do... and there's usually some insane library out there that can accommodate those weird high-performance situations. 19:16:06 thoroughly being i know pretty much all the things normal people use with them :) 19:17:17 2.5 is the newest? 19:18:15 well, it's newer at least 19:21:25 yeah 19:21:28 that's the newest. 19:21:53 hmmm... alright... so a 100 by 100 by 100 by 100 matrix of zeroes made my computer bog down for a minute. 19:22:29 but it could allocate it? 19:22:35 eventually. 19:22:46 100 megabytes 19:22:58 ...hmmm, oh yeah. 19:23:01 * SevenInchBread didn't consider that. 19:23:39 yeah... if I try to go 5 dimensions of 100 each... numpy spits out a "dimensions too large" error... for good reason I imagine. :P 19:23:46 it's not the time that's the issue there :) 19:24:08 hmm 19:24:13 dimensions too large? 19:24:18 it can have 5 dim though? 19:24:23 yeah 19:24:31 it can have arbitrary length dimensions. 19:25:04 good, c had a restriction of 12 dimensions at some point :P 19:25:05 but... since that would be well over a gigabyte... it sorta... preemptively stopped me. 19:25:16 (might be a lower lever restriction though) 19:25:28 well... I haven't checked the actual max... 19:25:31 * SevenInchBread does so. 19:25:40 well, 10 gigabytes 19:25:56 a bit more if you consider the idiotic 1024==1000 thing 19:26:00 10 gigabytes.... of zeros... talk about useful memory. 19:26:03 eh 19:26:05 a little less 19:27:06 typ... the dimensions look arbitrary... just however much memory we can hold. 19:27:32 typ? 19:28:06 er... that was a "yep"/ 19:28:43 ah okay 19:29:28 ah.... 32 19:30:07 >>> y = numpy.zeros((1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)) 19:30:09 ValueError: sequence too large; must be smaller than 32 19:30:25 :\ 19:30:29 that's stupid 19:30:40 Still... that should be plenty of dimensions for most scenarios... unless you're doing some freaky theoretical physics shit 19:30:59 yeah, but it wouldn't make it harder to code to make it n dimensions... 19:31:15 Python lists are arbitrary dimension... I believe. 19:31:25 i know they are 19:32:40 >>> x = [] 19:32:41 >>> for num in xrange(1000): 19:32:43 x = [x] 19:32:45 19:32:46 >>>print x 19:32:48 (...I'll spare you the spam...) 19:32:49 * SevenInchBread is feeling copy-pasty. 19:33:05 i hate you 19:34:21 well... I tried to make a bigger dimension... but xrange() gave out on me before the trust list could. 19:35:40 oh ho! but itertools and its trusty count function save the day. 19:35:56 i was just about to press paste on the same pieceeh 19:37:26 mmmm.... this is going to take a while. 19:40:15 my computer should learn some manners... when i tell someone i hate them it's not the right time to freeze up just before i can explain what i meant... 19:40:30 yeah... so.. 19:40:39 10000000000000000000000000000000-d list took too long... 19:40:55 fucking python installation .... 19:40:57 :\ 19:40:59 hurray KeyboardInterupt. 19:41:06 -!- GregorR has changed nick to GreggorR. 19:41:41 Python's list/iterative-stuff is probably one its stronger features... 19:41:57 -!- GreggorR has changed nick to GregorR. 19:42:58 theoeretically speaking... Python can have infinitity-d lists. 19:43:15 just... not with all unique values. 19:43:49 ...but that's not really anything amazing. :P 19:44:02 well, any list can have any-dimension lists :) 19:44:05 *language 19:44:08 lol xD 19:44:42 hmm... I actually don't think Python can create infinite-length lists... 19:45:16 Lisp can... simply because they're linked. 19:47:09 heh... you can -simulate- an infinite list.. 19:47:26 but I guess that's all Lisp is doing also. 19:48:58 you can't have an infinite length list because of the implementation 19:49:11 i don't think python has but memory limits on length 19:49:15 -!- sebbu2 has joined. 19:49:17 I can have a set that contains everything though. :) 19:49:37 oklopol, well... with linked lists you can simply reference the pairs beforehand... 19:49:38 i hate windows 19:49:47 i'd like a brainfuck os better 19:50:04 what do you mean? 19:50:27 why the fuck does the taskbar not hide?!?!?!?!?!?!? 19:50:49 why did they put a randomizer on every fucking task 19:51:06 i closed about 40 programs just now to get it down 19:51:12 i only have mirc open 19:53:07 -!- digital_me has joined. 19:53:12 okay, i'll throw this piece of shit out the window. 19:53:31 * SevenInchBread made an infite list in Python... cheating a little bit. 19:53:44 elaborate 19:54:07 >>> x = [1,[2,[3,[]]]] 19:54:08 >>> x[1][1][1] = x 19:54:10 >>> x 19:54:11 [1, [2, [3, [...]]]] 19:54:16 ah 19:54:17 yeah 19:54:32 i forgot python had pointers 19:54:33 i mean 19:54:35 you know what i mean 19:54:43 heh... yeah... lists are mutables. 19:55:06 mutable is different, i mean addressable 19:55:09 ... 19:55:34 maybe in the implementation... but it's transparent at the top. 19:55:54 ? 19:56:06 no it isn't 19:56:07 the pointing and addressing and all that is automatic. 19:56:20 well, mathematically yes 19:56:27 in other words... there is no & :) 19:56:29 you don't see the pointers as numbers 19:56:35 that's the only difference 19:57:04 yeah well... by that logic... there's no much difference in assembly and Python. 19:57:18 I'm just not seeing the assembly. 19:57:58 all you don't see is the numerical addresses... otherwise you only have pointers and calcs are with values, moving around with pointers 19:58:11 it's a lot of convenience 19:58:24 BUT you don't have a real difference like in functional langs you would 19:58:33 where you can't know where something is 19:58:34 totally... I'd rip my hair out if I had to mess around with pointers. 19:58:41 and it isn't really anywhere 19:59:02 -!- goban has quit (Read error: 54 (Connection reset by peer)). 19:59:07 but i forgot python is any-style programming... there's a nice term for it 19:59:14 somewhere out there 19:59:14 -!- goban has joined. 19:59:18 pointers are nice 19:59:36 usually they can be simulated in part... they are nice though. 20:00:02 I've got a fairly interesting language in my head... that resembles Smalltalk... but fairly different. 20:00:24 that's a bit too vague to be interesting tbh :D 20:01:09 it's looking pretty neat in my head... it uses Smalltalks message-passing (except there are no multi-argument messages) mixed with Lisp's idea of symbols.... 20:01:41 i don't know smalltalk :< 20:02:02 smalltalk was one of the pionerrs of OO. 20:02:06 before it got all... weird. 20:02:54 you mean OO features or attitude 20:03:02 with weird 20:03:17 and yes, i know that much about smalltalk 20:03:33 It was one of the first to do "everything is an object"... 20:03:39 yeah yeah 20:03:51 i know all the trivia stuff, just not anything real :) 20:03:54 It doesn't really remind me of other OO languages though. 20:04:28 it has a metaclass everything is derived from, the metaclass being derived from itself, that's how much i know :P 20:04:41 because everything HAD TO be derived from something 20:06:46 yeah... it's like Lisp for OO... there's only three syntax forms... and no keywords (aside from a few reservered booleans, self, and super)... conditionals are implemented as methods of booleans... etc. 20:07:01 http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html <--- 20:08:32 -!- sebbu has quit (Connection timed out). 20:08:32 -!- sebbu2 has changed nick to sebbu. 20:08:58 more flowery than implementation-specific... but eh... it's the best description I could find. :P 20:09:32 i like technical descriptions better.. but i'll read that if it's not long 20:09:56 it does go into what it considers a hinderance to program design. 20:19:41 -!- Rugxulo has joined. 20:20:55 -!- Rugxulo has left (?). 20:35:26 i finally managed to read it :) 20:35:33 there was nothing i didn't know 20:36:17 ...yeah 20:36:21 erm... 20:36:34 so... other languages don't have something similar to list[x:y]? 20:36:50 i haven't seen 20:37:01 that does not mean there isn't one 20:37:07 yeah... 20:37:11 since i know mostly esoteric alngs 20:37:13 *langs 20:37:25 Some Python-like languages probably do it... I'd guess Ruby and maybe Perl. 20:37:29 maybe 15-20 non-esoteric 20:37:58 yeah, i don't know those languages... i should learn the languages everyone knows... 20:38:00 Hmm... I think in Smalltalk slicing is like list from: x to: y 20:38:40 that kind of sublisting syntax can of course be implemented in c++ in 10 min 20:39:10 but i won't do that :\ so it has to be in the language itself 20:39:22 I'm surprised C(++) doesn't have... Python's for loop. 20:39:40 it is considered to be added 20:39:48 it's way too common a procedure to always repeat. 20:39:54 but c++ is slow to change nowadays 20:40:02 it will take the java syntax 20:40:08 well... maybe not in C.... arrays aren't quite as versatile as lists. 20:40:10 java just evolves faster 20:40:40 for (int i : integer_list) {} 20:40:52 java is like that, c++ too if they add it 20:41:12 * SevenInchBread tries to think of some more Smalltalk idioms he knows... 20:41:12 but you have iterators in c++, it's the same thing but no nice syntax for it 20:41:18 I've never actually used that language... just read about it. 20:41:39 conditionals are like.... bool ifTrue: function ifFalse: function 20:42:09 and it has literal syntax for lambda blocks in []'s 20:44:34 math looks like any other math... because of the binary syntax form... 2 + 2 2 / 2 20:45:48 the if thing i don't understand 20:45:53 but i know math is like that 20:46:10 booleans are equipped with an ifTrue and an ifFalse method. 20:46:16 that take lambdas as arguments. 20:46:52 so.... 20:47:30 2 > 3 ifTrue: ["Hello, World!" print] 20:47:49 okay 20:50:46 so yeah... the idea I had for my own language... would eliminate that annoying colon, make all functions one-argument, remove classes entirely (prototype OO), and have some nifty ways to mess around with the evaluation of amessage 20:54:26 i still don't know anything about smalltalk :) 20:54:49 ...well I don't really know what else to explain. 20:55:35 "..." print outputs a string 20:55:36 it's a fairly straightforeward design... there's some objects... and some messages... and everything about the implementation can be changed in some way. 20:55:42 that much i know 20:55:42 -!- UpTheDownstair has joined. 20:55:48 do you know... why? 20:55:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 20:55:53 plus basi arithmetics 20:56:08 *basic 20:56:33 i don't know syntax, i don't know the language 20:56:46 oh... well syntax is a snap. 20:57:04 there's basically thee kinds of expressions... and a few literals. 20:57:15 i know, the text said 20:57:17 or you 20:58:08 -!- goban has quit (Read error: 54 (Connection reset by peer)). 20:58:11 messages... how i see it is that functions are rather sent messages to objects that contain instructions 20:58:14 or lambdas 20:58:15 functions 20:58:17 w/e 20:58:31 but it's just my guess 20:58:36 unary... which goes object message binary... which goes object message arg1 and keyword object message1: arg1 message2: arg2 message3: arg3 ... ... .. 20:58:39 it's basicallty a method call. 20:58:43 i don't know what is referred to by a "message" 20:58:45 message-passing. 20:58:49 -!- tgwizard has quit (Remote closed the connection). 20:58:54 like in erlang? 20:59:05 it's like "Hello".split("e") 20:59:09 the "split" is the message. 20:59:15 to "Hello"... the object. 20:59:25 it's just a method call... pretty much. 20:59:27 yeah, so exactly how i guessed, but it wasn't clearly said there 20:59:31 so i didn't know 20:59:44 by "message" i assumed an erlang-type message 20:59:48 you know erlang? 20:59:50 -!- UpTheDownstair has changed nick to nazgjunk. 20:59:51 nope. 21:01:11 it's functional.. but process id's that are somewhat like continuations can be stored and you can do prodess-id ! message 21:01:49 the in the function that the process-id points to there can be "on receive this and this message" 21:02:01 on receive... anyway 21:02:07 oh... kinda like coroutines? 21:02:12 kinda 21:02:18 you should read about erlang 21:02:25 I've heard erland is good for threads. 21:02:25 it's pretty neat 21:02:29 yeah 21:02:40 I'm assuming is uses a lot of coroutine-like stuff 21:02:40 runs 25 million threads smoothly i hear 21:03:02 yeah, functions can stop to wait for messages from other functions 21:03:12 and when you call a function you store it's process id 21:03:15 so you can send it data 21:03:25 that's the basic thing you do in erlang 21:03:26 so it's like... a mini-OS? 21:03:39 that sounds pretty cool actually... 21:03:47 ericssons language 21:04:10 (though the name actually comes from a guy named erlang, quite a coincidence) 21:04:12 you could easily fork real OS subprocesses and wrap them as erland functions. 21:04:28 yeah 21:05:09 i like the idea there's only data in functions and no objects etc but you can send messages... i don't know why though :P 21:05:25 hmm.... ah... that's interesting... so it stores processes as memory... that's usually not done. 21:05:38 i haven't even seen an implementation for erlang, i just read a book about it... i think 21:05:43 i have no ideaw when 21:05:45 *-w 21:05:56 yeah, a running function is kinda like an object 21:06:03 and it dies after it's executed 21:06:10 * SevenInchBread was going to ID-ify the objects in his language... he might also steal a few ideas from erland while he's at it. :) 21:06:22 ...erlang 21:06:27 but long executions don't matter since they are in a stabilized state when waiting for messages 21:07:03 actually... a function waiting for a message is kinda like an object with a state 21:07:05 Id-ified responses... sounds like a step-up in human-like communication... since communication is rarely linear. 21:07:12 ...only a lot sexier if you ask me 21:07:18 yeah 21:07:23 ah... all the local variables are held like an object's state? 21:07:28 -!- goban has joined. 21:07:31 yes 21:07:43 you have pattern-matching and vars 21:07:48 ints, lists, strings 21:07:54 and of course atoms 21:07:59 for pattern-matching 21:08:06 ...I've actually had an idea like that before... frozen functions with object-like state. 21:08:14 has all the nice functional list convenience 21:08:25 yep, i just realized it now actually 21:08:35 and started to like erlang a lot more :) 21:08:59 hmmm... 21:09:23 because they can have vars, calling is an object constructor, vars are the stored state, receiving messages is waiting for function calls 21:09:35 kinda like 21:09:52 the main reason I've never used threading is because it's too much of a hassle... but processes with IDs and a state (which basically mimics OS processes... except you have way more access to the memory inside)... is kind of natural. 21:10:07 yeah.. I've noticed you can use coroutines to make objects.. 21:10:30 yeah, well, in java threads are easy, but erlang beats it 21:10:40 and with most langs threads are shitty 21:11:31 * SevenInchBread incorporates some of that into his smalltalk/lisp mix. 21:11:45 i actually never realized what you saw in coroutines until i realized erlang has that, basically, and it's a very sweet concept 21:12:09 mix'm up 21:12:09 the coroutines I've seen though are far more limited than that though. 21:12:24 just single-input, single-output type stuff. 21:13:06 I guess with some hackish alterations of some low-level Python stuff you could change the local state... but it's definetely not meant to happen conviently. 21:14:02 yeah 21:14:09 erlang doesn't have return values 21:15:00 actually 21:15:02 i'm lying 21:15:05 *wrong 21:15:36 hmm.. basically I stole Lisps idea of a universal syntax and symbols (kind of like pointers but in reverse)... and then I stole Smalltalks idea of everything-about-an-object-is-handled-by-itself... and from erland I'll take the idea of continued processes with changable state. :) 21:15:51 in erlang you can call functions in a different thread with one syntax and the function returns it's id right away, or you can call it "normally", and it then returns whatever it returns when it's ready 21:16:29 "universal syntax and symbols" what does this mean? 21:16:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:16:40 i don't know lisp that well 21:16:43 :D 21:16:45 maybe 21:16:52 well... Lisp just has one and only one syntax.... (func arg1 arg2 ...) 21:17:06 ah 21:17:07 yeah 21:17:13 that's it... with some minor exceptions. 21:17:19 yep 21:18:06 so... Lisp can directly access its variables as a data type... a symbol data type. 21:18:36 so... to assign a symbol to a value in Lisp... you do (set 'symbol value) 21:18:51 yeah 21:19:04 ' being a special literal that keeps an expression from evaluating... and returns it as a symbol. 21:19:06 so yeah 21:19:40 if you have it so that every object understands the "becomes" message. 21:19:42 -!- ShadowHntr has quit ("End of line."). 21:20:06 you can change reference to objects... or you can change objects themselves. 21:20:10 in common lisp is not used with defun, set and such specialties... or? 21:20:48 i read this book from the seventies... 21:20:55 well... common lisp has setq... which is a macro that basically boils down to set. (it stands for "set quote"... because the ' is called the quote operation) 21:21:16 and defune is a macro too... 21:21:31 yeah 21:21:40 set and defun they were in the book 21:22:23 and let and something to make functions and vars in functions... 21:22:24 but in my language... there won't be macros... and thus no special way to make variable assignment. 21:22:32 and lambda separately 21:22:40 3 different ways to make functions 21:22:50 you just have to send a becomes message to a symbol object.. 21:23:06 yeah 21:23:10 i see what you mean 21:24:38 `foo becomes bar would change the foo symbol so that it pointed to bar... but foo becomes bar (without the backquote) would change foo the object to bar... 21:24:52 so in the second one... -all- references to foo would be pointing to bar now. 21:25:02 it's like the reverse of pointers. :) 21:25:39 kinda 21:25:42 and instead of tiny little memory blocks... you have entire objects. 21:27:19 it'll probably work using an id system... each object would have a unique ID on an list represented the global memory of the program... it sounds very much like a high-level version of pointers. 21:28:31 yeah, somewhat 21:30:32 it's just the opposite of how C does it... in C the variables are implicitly references... while in this the variables evaluate to objects... and you have to "catch" them with a backquote to evaluate the reference itself. 21:31:04 well... no 21:31:10 catch? 21:31:23 actually... variable assignation copies the memory into the new block. 21:31:38 ...er... I think? 21:31:46 :P 21:38:06 well... the benefits are basically what you get with pointers... except less complicated (I think). 21:38:42 or maybe just less tedious... you don't have to type out 4 billion *'s ...just 1 ` whenever you want to alter a variable. 21:39:56 well... the syntactical inconvenience of c pointers can easily be circumvented in c++ 21:41:10 with ->? 21:42:11 the symbol design works really nice for prototype-oriented OO... familiar with it? 21:43:37 prolly 21:43:41 not the name though 21:43:48 sounds familiar 21:44:06 no, with references 21:45:30 basically... prototype OO is OO without classes. 21:45:47 you make new objects by spawning copies of previous objects and altering their contents. 21:45:47 okay 21:45:54 ah 21:45:56 like nopol 21:46:03 :) 21:46:11 which is really all classes do... make copies of themselves... 21:46:21 now we just remove the distinction of class and object altogether. 21:46:34 nopol does that... but it's classes and functions are the same thing 21:46:42 so... it's a bit different 21:47:14 Self, Moo, and JavaScript are all prototpe. 21:47:37 i don't know any of them:< 21:47:59 the copies objects all have a reference to their "parent".. and usually there's some normal OO concepts thrown in to make things convient. 21:48:08 like delegation... which is basically arbitrary inheritance. 21:48:36 but... I'm not going to use any sort of inheritance... because you don't need it. 21:48:52 yeah... modularity is for wimps 21:53:05 nah... you just copy everything over... you've still got modularity.. 21:53:34 if you have duckish typing 21:53:37 and you prolly do 21:53:50 and since you have the ability to change both symbols and objects... you can easily override a function shared by a wide number of objects. 21:54:31 oh definetely... I'd have trouble even conceiving of a language that can't duck type.... Python has spoiled me. 21:55:35 well, duck typing circumvents inheritance 21:55:40 not entirely 21:55:47 but the modularity part 21:56:09 because you can have similar interfaces with similar objects 21:56:25 with duck typing you jsut don't tell that to the compiler until at run-time 21:56:55 a bit slower if bad implementation, maybe a bit less clear for someone who reads the code 21:56:58 but it works 21:57:05 and makes a lot of things less verbose 21:57:38 heh... compiler? 21:58:14 yeah, badly rephrased 21:58:16 i mean 21:58:28 * SevenInchBread usually follows a fairly straightforeward model for interpreting... scan for tokens... and then interpret the tokens to do shit. 21:58:37 you don't have to specify in the code which things do what 21:59:06 but you just hope they abide by the interface that is needed 21:59:17 i don't know if you follow what i'm trying to say 21:59:29 The idea of "telling the compiler how to work" is literally completely alien to me... and doesn't even seem necessicary or that beneficial. 22:00:03 yeah, but it reduces run-time errors 22:00:17 because if you don't tell it it can't tell you you did an error 22:00:30 well... the entire idea behind OO is that the details of the implementation are hidden behind a name...if everybody assumes that the procedures behind the names all do what they're supposed to do... then everything works fine. 22:01:02 yes, but with non-duck typing you also know what kind of things do what kind of stuff 22:01:34 with duck-typing you use everything as you wish and sometimes it works, sometimes not, because it can't be checked at compile-time 22:01:39 (in most cases) 22:02:37 it's pretty useful in my experience... replacing the standard output stream with a class wrapper that implements the same methods as a file object often saves a lot of time. 22:02:58 it makes it easy to hack things. :) 22:03:05 make it do what you want. 22:03:16 yeah... that can be done with or without duck-typing 22:03:28 but without it you do it with inheritance 22:04:12 and then it's more "agreed" that it does what it's required to do 22:04:24 with duck-typing it's run-time checked 22:05:36 -!- anonfunc_ has quit. 22:08:09 oklopol, hmmm? 22:08:14 * SevenInchBread is confused now. :P 22:08:33 why would inheritance make a method work or not work? 22:09:11 if something is inherited from something else it has the method the parent has 22:09:27 so if a function need some methods a, b and c 22:09:31 -!- nazgjunk has quit ("mrahaha"). 22:09:31 it makes a class 22:09:37 and then that class is derived from 22:09:38 but 22:09:48 with duck-typing you don't need that 22:09:56 because you can send ANY object to it 22:10:12 doesn't have to be derived from the class that has the methods that function needs 22:10:28 and the function then fails if the object it got doesn't have the methods 22:10:35 and this is a runtime error 22:10:55 without ducking it would've been a compile time type error 22:11:38 in my first sentence method -> methods 22:11:53 second, need -> needs 22:13:10 i think if you do the duck you oughtta have direct string manipulation for method names... which python incidentally does :P 22:15:18 well.. hmm... 22:15:25 what is causing this to occur? 22:15:30 the error-at-compule-time. 22:16:09 because if it didn't have the method the function uses, it wasn't derived from the class the function takes as argument 22:16:30 because a function can only use a method it's argument has 22:16:45 (casting can be done of course but considered bad in most cases) 22:20:56 oh yeah.... darn static typing 22:22:10 it does add a layer of security to a procedure... but usually one that isn't needed... 22:23:08 Actually... I think a nice way to do typing is by category. 22:23:44 well, that's interfaces for you 22:25:50 I've never liked excessive type-checking. 22:26:10 if something doesn't work... let it explode on its own... 22:26:34 yeah :D 22:29:24 in a purely OO language... the worst that could happen is the object doesn't implement the method. 22:29:51 actually no 22:30:21 in for example java the WORST that could happen is that someone who read the code would not understand the logic at some point 22:30:36 that's the oo of today 22:31:28 meh... Java is for corporate monkeys. 22:33:31 oh... another thing I like about the smalltalk-like syntax I'll be using. 22:33:50 there's absolutely no distinction between function calls or attribute reading. 22:34:10 because all attributes are messages... which are function-like-things. 22:34:11 i don't know if it's like that with other langs, but from what i hear, it is towards that direction 22:34:22 i mean 22:34:32 the corporate-monkey-ness 22:35:15 yeah... everybody's trying to make languages that are good for shelling out programs quickly and efficiently... 22:35:25 I mean... whatever happend to having fun whilst programming? 22:35:30 yeah 22:35:57 i idle on this java chan... there was an hour long discussion about how to get sort() work with the swedish alphabet 22:36:36 fully automatic unicode support... that's another thing I'll put in this language. :) 22:36:43 i said it's a 15 min job to make one yourself, which lead into a half an hour discussion about how much faster it is to use other's tools than to make ones own 22:36:48 one's 22:37:15 ...if everyone followed that logic... no one would be making tools. 22:37:23 sometimes it's just -fun- to make shit. 22:37:39 you can look at it and say "I fucking made that" 22:38:21 yeah... i said something like that, they said you don't get money if you do stuff yourself 22:38:23 :\ 22:38:37 * SevenInchBread is 15... totally doesn't get paid anyways. :P 22:39:01 i thought you must be young with your constant ideas 22:39:16 but yeah... automatic unicode support... 22:39:25 I don't know why people don't do it to begin with. 22:39:42 c++ has it, java has it, python has it, what doesn't? 22:39:57 ASCII when you're using ASCII characters... and then when you add some unicode to the string... boom, it automatically changes encodings for you. 22:40:01 not Python. 22:40:21 oh 22:40:28 ah, yeah, indeed it doesn't 22:40:52 but unicode codepoints are kind of weird. 22:41:02 but I don't it's impossible to have automatic management of encodings. 22:41:24 oh.. and just one number type... 22:41:40 ? 22:41:42 called... number. 22:42:02 it'll convert to long, short, floating-point whatever. 22:42:31 hmm 22:43:05 well... maybe an imaginary type... like Python has. 22:43:18 yes, exactly what i thought 22:43:27 actually 22:43:30 simply because it, mathematically, operates differently. 22:43:35 exactly what python has, right? 22:43:42 nope. 22:43:48 what is different? 22:43:54 Python still distinguishes between integer and floating point. 22:44:06 long and short are automatically converted... but they're still separate data types. 22:44:21 python has auto-bignum 22:44:32 you don't see the data-types really 22:44:40 well, rarely 22:44:41 floating point. 22:44:56 with true division being implemented though... it's getting close to that. 22:45:03 well 22:45:14 but... there's still distinguishments in the type hierarchy... which is what I was talking about removing. 22:45:31 the data would be represented internally in multiple ways... but abstractly it's just a "number". 22:45:32 you wanna get floating points perfect, you make a lazy system that NEVER calculates a function unless for output 22:45:45 and still maintains the actualy functional representation 22:46:08 and makes it nicer when it finds rules like + - x 1 1 = x etc 22:47:14 *actual 22:47:21 why the y?!? 22:47:26 maybe a rational data type... but that's mainly only useful for algebraic solver applications. 22:47:51 i thought about making this math lang 22:48:10 since i could easily do better than matlab with basic mathematics 22:48:20 not the neural networks etc of course :P 22:48:32 I like how math can be implemented without using special syntax... 22:48:59 the only difference is that there are no precedence rules... which is fine... it's easier to remove "method calls go left to right" 22:49:11 remove = remember 22:49:48 what do you mean? 22:50:08 2 + 2 isn't special syntax in the language I'm thinking of. 22:50:52 what's special syntax? 22:51:10 well like... special rules 22:51:13 for mathematical operators. 22:51:16 aren't necessary. 22:51:27 like 5(4 + 5 ) 22:51:29 -... 22:51:32 like 5(4 + 5 * 2) 22:51:34 it just fits into the existing syntax 22:51:39 er... well that won't work. 22:51:48 which is 5 * (4 + (5 * 2)) 22:51:50 I mean... basic (non-implicit) rules. 22:51:58 hmm 22:51:59 ? 22:52:18 5 x (4 + (5 x 2)) 22:52:32 x is better than * ? 22:52:38 the operators don't need special syntax... it's not exactly like math. 22:52:44 well... I've always liked it... 22:53:00 over *... but they can both be included and mean the same thing. 22:53:49 well, if you have vectors, you can have '*', '.' and 'x' be different multiplications :) 22:54:06 on vector objects. ;) 22:54:20 see... that's the thing... all the objects define what all the operators mean 22:54:36 yeah, operator overloading 22:54:43 not even that. 22:54:51 the operators are just... defined on the objects anyways. 22:54:54 there's nothing to overload. 22:55:00 mmmmmkay 22:55:00 . 22:55:12 you make a new datatype, it has everything already? 22:55:34 depends on where you copied from... remember there aren't really any "typeS" here... just objects. 22:56:19 hmm.. i still don't see where exactly you tell the computer what the multiplications mean... 22:56:26 in 5 * 5 * is the name of a method on 5 22:56:29 unles you... tell it 22:56:33 yeah 22:56:35 *unless 22:56:51 i'm pretty sure there's something wrong with my s 22:57:09 it'll be builtin code defining what multiplication does... but it can be overriden... 22:57:30 it doesn't matter -how- the method is defined... simply that it is associated with the right name. 22:58:06 mm kay 22:58:08 .. 22:58:37 if you wanted to... you could do something like 22:58:43 True becomes False 22:59:03 thus making all references to the True object now point to False instead. 22:59:24 yeah, you told that before 22:59:37 that's fun for esoteric purposes 22:59:43 eh... well... boleans are kind of singletonish anyways... so `True becomes False would have much of the same effect. 23:00:10 but you should never have ANYTHING have any side-effect upwards without declaring it clearly in an upper lever 23:00:13 except other symbols point to True would still be pointing to True. 23:00:36 hmmm? 23:00:59 nope... no restrictions. 23:01:00 i have a thing called infinite nesting theory 23:01:02 but 23:01:11 i'm not going to try and explain here 23:01:26 restricting possibilities just because someone might use them stupidly is a bad idea. 23:01:27 hmm 23:01:48 in most cases, yes 23:01:51 The Python developers do that a lot... much to my chagrin 23:02:06 make evyerthing child proof. 23:02:47 yeah... it kind of takes the point of wanting things high-level if you can do low-level fuck-ups :P 23:05:33 + - x * ^ / mod = != base inc dec ! 23:05:41 that's exactly why c++ will become one of the slowest languages in the future, computers can do th simple mathematical algorithm reductions better than humans... actually, i realize this is basic and there's no need in explaining it :D 23:05:49 *the 23:06:04 inc and dec? :P 23:06:20 ++ and -- are too Cish for my tastes 23:06:29 how about... up and down? 23:06:56 no, reserve that for your two-dimension pointer needs 23:07:19 these are just integer methods. 23:07:25 anything can redefine any of those. 23:07:36 yeah yeah, i wasn't serious. 23:07:45 base? 23:07:47 ....what is a 2d pointer? 23:07:55 yeah... log wouldn't make any sense. 23:08:00 you don't wanna know what i meant 23:08:20 base is for what? 23:08:25 log 23:08:30 but why? 23:08:36 10 base 2 would be log 10 base 2 23:08:52 because everything is inherently infix notation? 23:09:07 10 log 2 wouldn't make any sense 23:10:02 10 base 2 would be [1,0,1,0] if you ask me 23:10:04 :) 23:10:12 K has that for example 23:10:14 yeah... 23:10:18 it's called base there 23:10:21 or __base 23:10:55 I want to use like... base 50 represented by sequences of base 5 23:10:56 K has everything 23:11:13 ? 23:12:39 eh... difference bases will simply different objects. 23:13:07 try once more please :) 23:13:19 different bases will simply be represented by different objects. 23:13:43 mmm okay, what did "base 50 represented by sequences of base 5" 23:13:45 mean? 23:13:53 not sure. 23:13:59 :D 23:14:06 it's possible to do freaky mixes of bases though 23:14:29 i hope you don't see a connection between the numbers 50 and 5 23:14:49 5 and 55? 23:14:57 * SevenInchBread wants to adhere to the law of fives. 23:15:02 not that much either 23:15:20 11 only has special properties in 10-base 23:15:23 and i hate it 23:15:30 that's the reason for all the hoping 23:15:37 hopedy-pop 23:15:38 i should sleep 23:16:21 oh oh 23:16:27 balanced 5-base 23:16:39 represented by -2,-1,0,1,2 23:16:42 beautiful no? 23:16:50 sure :P 23:20:30 phinary? 23:20:45 http://en.wikipedia.org/wiki/Golden_ratio_base 23:21:50 -!- oerjan has joined. 23:22:45 oh oh oh 23:22:47 unary base 23:22:54 11111 11 23:22:56 would be seven 23:23:12 yeah 23:23:17 hm... or it could be a list [5,2] 23:23:39 oerjan i got the thue working :P 23:23:47 great :) 23:23:49 * SevenInchBread likes the idea of a base based off of the golden ratio... but not as confusing as using the actual irrational number. 23:23:53 maybe 5 and 3. 23:24:17 SevenInchBread: Have you heard of the Fibonacci base? 23:24:37 * SevenInchBread just now landed on the Wikipedai article 23:24:54 link 23:25:42 I think he means http://en.wikipedia.org/wiki/Fibonacci_coding 23:25:53 yeah 23:27:23 hmm... maybe a mixed radix notation that alternates between 3-base and 5-base 23:27:30 both balances 23:27:49 -2,-1,-0,1,2 and -1,0,1 23:28:37 alternating means essentially using 15-base, I think 23:29:13 unless you use a weird alternating scheme - like one based on Fibonacci numbers :) 23:29:40 mixed-radix 23:32:12 http://en.wikipedia.org/wiki/Zeckendorf%27s_theorem 23:32:17 rofl 23:32:37 i understand that. but if the mix is strictly alternating, it will be just base 15. 23:32:38 ai auto-proved that in a second when i heard fibonacci base 23:32:51 *I 23:32:53 ai :P 23:33:12 hmmm 23:33:29 I had this urge to reedit that article to say "slightly" before the "more difficult" 23:33:32 heh.... base 0.1 is pretty cool... it's base-10 backwards. 23:33:35 well, for any alternation n1, n2, ... nN it will essentially be || nX base 23:33:58 where || is sigma for multiplication... 23:34:03 where sigma is sum 23:34:09 i'm not good with terms :) 23:34:13 you mean Pi 23:34:19 maybe. 23:34:28 no, certainly :) 23:34:33 multiplication of a list... 23:34:52 sum has the E thing, multiplication a || thin with a lin on top 23:34:54 or smth 23:35:12 list.. math doesn't call them lists 23:35:23 like, the minutes/seconds notation is essentially itself mixing base 6 and 10 to make 60... 23:35:33 sequence. 23:35:51 really? 23:35:52 :o 23:35:52 right... but you right it differently. 23:36:05 huh? 23:36:07 it's essentially base 15... but you get to write it in a confusing manner. 23:36:10 :) 23:36:11 i don't see 6 anywhere :\ 23:36:18 in the clock 23:36:22 they are capital greek Sigma and Pi. 23:36:30 prolly 23:36:42 looks like capital pi, didn't know it was though 23:36:51 and i don't have the letter on this keyboard 23:36:53 :) 23:36:53 in 3:10:15, the digits after the colons can only be 0-5 23:37:08 ah 23:37:10 okay 23:37:13 indeed 23:37:44 i just think it's 60-base but there is no way to print 60-base so it's represented as 10-base 23:38:17 that may be true but I think the ancient babylonians wrote their base 60 in two parts as well 23:38:31 oh 23:38:31 otherwise, just too many digits 23:38:36 hmm 23:38:39 maybe 23:38:42 i'm not completely sure of it. 23:38:42 why 60 then? 23:38:44 :\ 23:38:48 fractions maybe 23:39:14 they invented fractions actually i think... i think i read about this exact thing somewhere 23:39:26 the length of the year is close to 360 days. 23:39:26 a million years ago 23:39:53 yeah... 6 * 60, plus 10 for the history of finger calculation 23:39:57 actually fractions are frequently base 60 because the babylonians invented them, and had a base 60 system 23:40:19 60 factorizes nicely 23:40:19 i vaguely recall it merging from a base 6 and base 10 system. 23:40:29 yeah, would make sence 23:41:09 it was base 60... but the didn;t represent it with 60 individual symbols 23:43:47 heh, the mixed base article says the Mayans used 20 except for second place, where they used 18 23:43:56 :D 23:43:59 because 18*20 = 360 23:44:16 i read martians first 23:44:26 hmm 23:44:34 20,18,20,20... 23:44:35 ? 23:44:46 the other way around of course 23:44:47 why, they would use base 14 of course, having that many digits... 23:44:58 :D 23:45:52 I bet base-10 would have made no sense 23:46:36 i wish my parent would've taught me hex only :\ 23:46:44 btw: (S)igma for (S)um, (P)i for (P)roduct. 23:46:53 oh 23:47:01 indeed 23:48:49 hmmm... base-11 is cool. 23:49:01 why? 23:49:12 It's like base-10... except there's a tiny offset as you go up. 23:49:20 and that part i said about using a weird mixing, i meant using what is called Fibonacci substitution. 23:49:23 ...it's easier to think in. :P 23:49:56 fibonacci substitution? 23:50:42 0 -> 01, 1 -> 0, repeat indefinitely to form infinite sequences. 23:51:33 Then use such a sequence to decide which base to use at which position. 23:53:45 In Haskell: fibseq = '0' : concatMap s fibseq; s '0' = "01"; s '1' = "0" 23:54:36 eh, wait 23:55:30 Make that fibseq = '0' : tail (concatMap s fibseq) where s '0' = "01"; s '1' = "0" 23:57:43 OH 23:57:50 base-7... with musical notes 23:58:00 nah 23:58:08 7 makes no sence 23:58:19 The first 50 digits: 01001010010010100101001001010010010100101001001010 23:59:05 with half-notes you need base 12, plus notation for octave 2007-02-19: 00:00:05 C C# D D# E F F# G G# A B B# if that is right in English. 00:00:20 almost 00:00:37 Or do they use H for B# too? 00:00:41 C C# D D# E F F# G G# A A# B is english 00:00:44 no 00:00:48 oh 00:00:51 sorry :) 00:00:54 they do 00:00:58 too many standards 00:01:02 wait, I got that backwards 00:01:07 and all of them too crappy to use 00:01:18 better look it up 00:01:19 wow... I didn't even realize there was another standard. 00:01:24 aah 00:01:27 Bb B 00:01:31 Bb is A# 00:01:39 right. 00:01:41 it was you who misguided me :P 00:01:47 why don't we just use like... 12 letters? 00:01:59 so we don't have to deal with those missing half-tones. 00:02:05 in Norwegian at least, for historical reasons Bb is B while B is H 00:02:05 because pythagoras was an idiot 00:02:09 or pascal 00:02:12 i can't remember :) 00:02:15 typographical reasons, in fact. 00:02:26 in finnish too 00:02:31 i don't know the reasons 00:02:35 please tell me 00:03:03 They were written as different font versions of B, and one of them resembled H... 00:03:18 so eventually turned into it. 00:03:20 base 24 if we wanted to include some microtones.. 00:03:37 you hear them? 00:04:00 eh... there's a subtle difference. 00:04:04 it's common in Indian music 00:04:09 i don't hear clearly other than 12, since i didn't hear them early enough 00:04:09 i know 00:04:29 note ear i one thing you only learn young (note ear?) 00:04:55 It's 7 because that is how many there are in a single scale 00:05:11 yeah, but it's a stupid system 00:06:49 i should make my music language... then i could start playing with automatic music generation 00:06:59 i mean, the scales are harmonic. it's only when you want to mix scales and use dissonances that you need more notes. 00:07:07 that's pretty no-man's-land 00:07:18 yeah... Western music is based on harmony. 00:07:43 wouter's page has a nice article on that 00:07:45 yeah... I had an idea for a rhythm-based language... that broke up a beats into infinitely-divisible sub beats... 00:07:48 i mean 00:07:51 the scales 00:08:04 even on a finite tape of memory its theoretically infinite due to fractional divisions 00:08:19 but the whole scale thing is just a too-far-gone abstraction... 00:08:40 hm... brainfuck with an infinitely divisible tape might be something 00:09:05 well.. 00:09:27 you could use the numbers to represent microtones. 00:09:37 and have a finite limit to the tape. 00:10:02 divisions just "expand" the tape... as things kind of break down 00:14:13 You mean http://wouter.fov120.com/rants/hertz_12notes.html ? 00:14:35 yeah 00:14:51 the only rational thing i've heard said about numbers 00:14:56 okay 00:14:59 not the only on 00:15:00 *on 00:15:03 *one 00:15:13 but most musicians have no idea... about anything 00:15:50 it's hard explaining why a riff is good if ppl can't understand it's mathematical idea 00:16:09 wouter of course talked about a different thing that riffs etc 00:16:18 but scales instead 00:16:34 though it's a lot similat 00:16:36 *r 00:19:28 well, of course what has a good idea always sounds good 00:22:37 it's a fairly context sensitive means of expression... 00:23:02 If we just used instruments capable of bending across any number of frequencies... you'd have the full range of options... 00:23:25 sitars do something like this... you can tune them to some stalbe notes... while having quite a bit of leeway with bending the strings. 00:23:42 stalbe means? 00:24:23 ...stable 00:24:45 the frets serve as landmarks... but most of the tones are somewhere inbetween. 00:25:03 can't do that with a piano... which always has an exact tone for an exact position. 00:25:21 you can do that with most instruments 00:25:24 but you never do 00:25:30 in western music 00:25:41 yeah. 00:26:05 For blues and jazz guitar... nothing quite sounds right if it's not somewhere near (or slightly off of) the penatonic scale. 00:26:40 in western music you always have more than one note playing at the same time, the division to twelwe maintains a nice set of harmonical chords 00:26:57 styles, I guess... both genres center heavily on the penatonic. 00:27:41 well, subsetting the 12 notes can be done but it's merely a way of abstraction and only helpful for a composer 00:28:15 that's true... istars are usually one note at a time, with the resonating strings usually doing octaves. 00:28:38 indeed, it gets too complicated otherwise 00:28:41 -!- wooby has quit. 00:28:41 for the ear 00:28:53 i've always liked dissonance though 00:28:54 I was suggesting that the solution to the "perfect" musical system is that there isn't one... you just pick your frequencies for the song. 00:29:12 my piano teacher always yelled at me when i played tritonus all the time in my compositions 00:29:41 hmm... 00:30:06 it would be interesting to find some way to represent near-human-like performances via something like a programming language. 00:30:34 you mean like... make the computer sound like a human playing? 00:30:42 like... you could create frequency abstractions... rhythm abstractions... melodic patterns (and a way to make slight changes to that pattern)... 00:30:51 yeah. 00:31:16 dl quitar pro 5 and see how good the technology is today... 00:31:19 very minute changes patterns. 00:31:37 everything is recorded from real instruments and it sounds terrible 00:31:40 ( 00:31:54 (though prolly not the best possible program for it...) 00:31:55 * SevenInchBread is kind of fuzzy on how sound is encoded. 00:32:04 wav 00:32:12 uses 0...255 values 00:32:15 just raw in there 00:32:27 and there is this tiny thingie in the loudspeaker 00:32:38 that can be up (255) or down (0) 00:32:42 * oerjan only now went to the logs. Good grief how you have been talking! 00:32:45 ah... so wav is like the bitmap of sound files. :) 00:33:00 and at certain intervals it takes the next number and moves the thingien in there in the right place 00:33:01 yes 00:33:05 exactly 00:33:31 mp3 uses something very mathematical and clever, but everything is always reduced to wav when playing 00:33:50 since the physical way to represent sound in a loudspeaker is done like that 00:34:02 with a moving thingie 00:34:04 hmm... so if you could make abstractions of all the various musical patterns (rhythm, harmony, melody, timbre(?)) 00:34:40 i don't care about sound that much, i'm more interested in melody 00:34:49 i mean, mathematically at least 00:35:01 but 00:35:11 I want to create worthwhile music with nothing but a computer program... basically. 00:36:02 to make a square wave (the simplest wave) with note "a" you make the wave change the position 440 times in a second and put in a file 0 255 0 255 0 255... 00:36:03 sorry 00:36:06 880 times a second 00:36:28 since 0 255 is one wave only 00:36:41 you get it? 00:36:49 usually it's 44000 b/s 00:36:53 *B 00:37:24 so you do 50 0's, then 50 255's, then 50 0's etc to make the "a" note 00:37:41 but it wouldn't sound very good... 00:37:55 if you don't like square 00:38:19 you would need very very very subtle changes in the frequency... to make it sounds good. 00:38:22 square is used in old games and a the base of a few soloish tunes of a synthesizer 00:38:29 *tunes -> sounds 00:38:43 and i like it, but 00:38:49 you can use a sine wave 00:38:55 I'm looking for natural sounds. :) 00:38:59 so yeah 00:39:01 a sine wave 00:39:04 that is done - suprisingly - with a sin() 00:39:12 or like... some sort of imaginary number oscillator thing? 00:39:20 sin(t*something) 00:39:21 yeah 00:39:43 t meaning we are playing the t:t'h time step of the note 00:39:52 but even then... that's going to be a very very steady wave... hardly "the real deal". 00:40:02 natural sounds are done with addition of sine waves and random generation 00:40:10 and i don't care about it that much 00:40:16 so i can't tell you a lot about is 00:40:18 *it 00:40:22 maybe some dynamical systems stuff? 00:40:28 ? 00:40:47 chaos theoy, fractals, etc? 00:40:57 you can't make natural sounds since NO ONE has EVER been able to do them 00:41:00 period. 00:41:12 ...then I'll make unnatural natural sounds. 00:41:16 :) 00:41:18 you can record them and clone them as you wish 00:41:25 but it's the same as cloning humans 00:41:41 it works but how it really works is unknown 00:41:59 heh... you'd basically need to simulate a recording... at which point you might as well just go record someone. 00:42:08 -!- sebbu has quit ("@+"). 00:42:26 simulate the release of air from vocal chords pressing against a microphone.. etc 00:42:28 you can make a continuation in python that returns values for the thingie (0-255) one step at the time 00:42:36 and use it to fill a wav file 00:42:38 and play it 00:42:40 yeah yeah... I get how that would work. 00:42:57 with some couroutinal crap you could send in some input for mild alterations based on surrounding stuff. 00:43:03 i did a random music generator once :P 00:43:11 it randomized the tone and the melody 00:43:11 ....how'd that go? 00:43:25 i liked the melodies... no one else did 00:44:13 and i was like 14 then (okay.. you're that age now and better than me so fuck you but anyway) annnnnnnnnnnnnd i didn't understand the wave things 00:44:19 so i made it in a bad way 00:44:24 It would be cool to apply some fractal-like mathematic stuff... 00:44:28 that's vague but... 00:44:29 yeah 00:44:44 i randomized a sequence for the thingie, not a mathematical formula for the sine waves 00:44:51 so it rarely randomised good tones 00:45:14 ah 00:45:25 you used a random sample of some typical tones? 00:45:32 like... the notes? 00:45:43 or was it just... totally random byte values? 00:46:12 yeah, oklopol is just really fond of white noise :) 00:46:15 i used [int(random.random()*256) for i in range(10000)] and then put those values in slower or faster according to the current pitch 00:46:53 oerjan i can send you some, it sounds terrible though, prolly, but i could create random tones and play them at varying pitches :) 00:47:06 so it has some coolness in it 00:47:18 but, i must confess, i like white noice 00:48:16 i have this experimental project called - who'd've thank it - brainfuck, i make white noiceish pieces using random generated tones and misuse of audacity 00:48:20 and i like it 00:48:24 I don't know why it never occured to me that I could play around with sound using programs. 00:48:25 mmmmmmh it's nice 00:48:28 being the huge music nut I am... 00:48:44 * SevenInchBread goes off to learn some basic stuff. 00:48:50 yeah, i love to find out i've actually done stuff in the past 00:49:11 with a bad memory like me you often get a feeling you've wasted 17 years and archieved nothing 00:49:16 hmmm... maybe a BF-like language that does something with sine waves? 00:49:35 i've been designing brainsick 00:49:49 brAInSICk that is 00:50:00 *BrAinSICk 00:50:03 anyway 00:50:23 brainfuck with everything in it, music, 3d graphics, networking, gui, etc 00:50:27 but only brainfuck 00:51:23 eh 00:51:24 actualy 00:51:26 *ll 00:51:48 i once made a language for creating music... i don't think i ever finished it 00:53:02 i've always been a big fan of c++, but realized just now i could actually use inheritance with it too and avoid having to make manual memory handling to get different datatypes to work :) 00:53:13 just now == 4 months or smth 00:53:48 i've done a lot of interpreters, always used one data class with a void pointer and enum for type :D 00:53:55 very oo... 00:54:09 maybe i'll stop the monolog and go to sleep 00:54:13 -----------------------> 00:56:08 ...I don't like C++ 00:56:36 hrm... I'm a bit rusty on my wave physics / mathematical represenatations of that. 00:57:11 hmm 00:57:22 if you have two wave functions going over the same medium... they usually add together right? 00:57:36 if the mediam is at 0 00:57:51 superposition, yes i think so 00:57:59 yeah... that's right 00:58:02 yes 00:58:44 of course.... there's more to it than that. 00:59:02 what? 00:59:14 string instruments produce standing waves, harmonics, fundamental frequency, partial tones etc 00:59:30 hmm 00:59:38 standing waves are the same thing 00:59:53 because we only consider the wave, not how it begins 00:59:56 *is created 01:00:14 harmonics -> result of the addition 01:00:16 ah yeah... 01:00:33 fundamental frequency 01:00:34 hmm 01:00:36 the standing wave is the result of the original wave being plcuked and reflrected across the string. 01:00:41 i don't know what that is 01:00:42 which results in... all of that occuring naturally. 01:00:59 yes, it results in a wave in air :) 01:01:28 if you can simulated a string stretched across frets... and a point of pressure from a finger... then you can simply create all of that without knowing what it is exactly. 01:02:02 partial tones: actual_note sin(n) = sin(n) + 1/2*sin(n*2^(7/12)) + 1/4*sin(2n) 01:02:29 ...I don't know Haskell.. 01:02:45 partial tones mean for a wave with a certain pitch there are always weaker one with a pitch that is a certain factor of it 01:02:52 that wasn't haskell 01:02:55 hmmm... oh that's neat... Haskell can define functions implicitly? 01:03:01 haskell couldn't understand that 01:03:12 but, yes 01:03:28 if i understand what you mean 01:04:05 well see... I'm trying to get more than just the note here.. 01:04:09 it's nearly correct Haskell, just change ^ to ** and add a missing * I think 01:04:22 yeah, prolly 01:04:29 but it's not what i meant :) 01:04:32 hmm 01:04:32 you start off with a simple wave... from plucking... which oscilates and reflects over itself. 01:04:37 might be haskellish :P 01:04:39 indeed 01:05:02 I want the sound of that initial startoff too... not just the result of it. 01:05:55 partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics. 01:06:02 and a harmonic is caused by the vibrations of the string on the other side of your finger... which may or may not happen (and has a very likely chance of occuring on certain frets) 01:06:21 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 01:06:50 essentially any periodic signal is the sum of a series of sine-like waves with periods that are fractions of the big one. 01:07:23 -!- oklofok has joined. 01:08:40 did i miss a lot? 01:08:45 -!- oklofok has changed nick to oklopol. 01:08:56 you may have missed: 01:08:58 partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics. 01:09:01 essentially any periodic signal is the sum of a series of sine-like waves with periods that are fractions of the big one. 01:09:02 -!- crathman has joined. 01:09:08 yeah 01:09:16 that's what i was trying to say earlier 01:09:54 i just don't know fourier... except it's another trivial thing someone named after themselves because they were the first to publish the idea 01:10:06 yes, unsurprisingly, the mathematics behind music is pure mathematics... however there's obviously something missing from a mathematical model. 01:10:18 there is a lot missing from it 01:10:37 there is no mathematics behind music yet, i mean no popular theories 01:10:41 -!- crathman has quit (Connection reset by peer). 01:10:44 i've not found at least 01:10:55 -!- crathman__ has joined. 01:10:57 -!- crathman__ has changed nick to crathman. 01:10:59 there is wave theory but that's trivial 01:11:35 anyways, functions can't represent waves that well 01:11:44 i have a brilliant idea for the music lang 01:11:53 but it's not in it's final form yet 01:12:02 and requires some learning 01:12:15 heh the earlier mention of list slicing syntax: 01:12:31 it's basically you can use a function as a list of all it's values... but a bit different 01:12:47 I think you could use coroutines to effect the iteration of the wave function in subtle ways... based on certain conditions (i.e. previous notes). 01:12:52 You _could_ do map (list !!) [10..20] in Haskell, but it would be horribly inefficient. 01:12:54 makes certain things handy... i wish i had more time :\ 01:13:14 SevenInchBread yeah, it's kinda like that 01:13:24 you do a continuation for the wave 01:13:29 then generalize it into a note 01:13:46 since these things are always used the same way i'll insert them into the language 01:14:12 like for string instruments there's a natural descrease in amplitute... it starts off very sharp and then dies down in profressively more gradual steps. 01:14:26 if you know the language well, it's a perfect composition tool assuming i get the playing without wav files working 01:14:30 so you feed values into the coroutine to create that change. 01:14:38 but you can also play with harmonics etc easily 01:14:46 yeah 01:14:59 that's basically what i'll insert into the language 01:15:14 you have maths for sine wave so that basically you only change the derivative 01:15:27 as if you were just calcing more values to a list 01:15:28 BUT 01:15:45 it's all calculated to a simple sine function that just changes over time 01:15:52 hmm 01:16:13 i don't know if that makes sence, i'm not good at explaining my thoughts 01:16:38 heh... OO SHALL SAVE US 01:16:41 MAKE WAVE OBJECTS 01:16:48 AND ADD THEM TOGETHER WITH THE __ADD__ FUNCTION 01:17:05 and to handle the addition we shall isntantiate WaveHandlerHandlers. 01:17:21 to the WaveHandlerHandlerMetaclass as a metaclass 01:17:23 you know the bad thing is you have to understand math to make a wave gradually decrease in pinch 01:17:37 sounds like a square root. 01:17:40 but with changing the derivative only it's a trivial mental task 01:18:04 SevenInchBread what does? 01:18:05 a square root function thing over the amplitude. 01:18:09 eh 01:18:11 hmm 01:18:21 i'd need paper at this point... 01:18:24 anyway 01:18:39 http://en.wikipedia.org/wiki/Image:Square_root.png 01:18:47 if the wave slows down at a certain rate, there are errors if you only change the pitch 01:19:02 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 01:19:13 amplitude... not pitch. 01:19:29 amplitude is trivial 01:19:35 it needs no language support 01:20:02 that you can do with power or 1/x 01:20:26 changing pitch at a rapid rate on the other hand is complicated 01:20:33 ....what are you talking about? 01:20:39 I'm just talking about in general... making waves. 01:20:42 and i have _some_ methods of making it easy to do 01:21:06 i'm saying it is complex to make pitch change over time 01:21:15 well... lets's figure out why the change in pitch occurs. 01:21:20 amplitude is of course not 01:21:51 ...because the programmer wants it to? 01:22:24 I think you could use a combination of math and some randomality to make it sound more natural. 01:22:44 yes, randomality is another thing of complexity 01:22:53 I mean... what occurs in the instrument to make rapid pitch changes... and how does it effect the wave if we were to slow it down. 01:23:03 the best way is to simply look at some waves in action. :) 01:23:33 because not only separate values of the wave change randomly - that leads to white noise on the backround - you have to change the pitch and amplitude randomly 01:24:06 well, you can deduce the math for changing pitch on the fly 01:24:39 i've been designing this 2d-music generator where you make blocks more in patterns you specify 01:24:46 og... duh. 01:24:52 they're totally different waves. 01:25:07 depending on the instrument... and how you transition between notes. 01:25:08 and little circles bounce around making waves that - when hit the ceiling - produce sound 01:25:16 there's going to be some interplay of multiple pitches going on 01:25:28 yes, as oerjan said earlier 01:26:08 partial tones exactly 01:27:11 you mean when changing pitch? 01:27:24 hmmm... I bet Erland would be good for this kind of job... 01:27:30 ...Erlang 01:27:38 :P 01:27:48 yeah... when changing pitch. 01:27:50 like... notes 01:27:57 yeah, same thing 01:28:22 OH. 01:28:24 hmm... 01:28:41 except of course notes refer to an abstraction of pitch where the growth has been changed to fit the working of the human ear 01:28:45 -!- ShadowHntr has joined. 01:29:37 the speed of change in a slurred note from one pitch to the next would be based on the physical distance between the two notes and when the next note needs to played. 01:30:03 not always... but something close to that. 01:30:09 pitch n = 440 * (2^(n/12)), where n is the distance between "a" and the wanted note in half-steps 01:30:25 that's the difference 01:30:36 assuming we're on guitar... the pitches would change in stair-case like manner... 01:30:50 yeah 01:30:51 because of well... the frets. 01:31:28 heh... and then there's the squeek. :) 01:31:35 hmm? 01:31:47 guitar squeeks :) 01:32:02 aah 01:32:05 harmonics 01:32:15 when you slide across the strings really fast.. it makes a shrill little screech. 01:32:17 confusing term 01:32:23 oh 01:32:30 that i'm not familiar with 01:32:33 ah 01:32:34 okay 01:32:37 now i see 01:32:47 that's not really a guitar thing... random noise 01:32:49 It's just background noise. 01:33:03 you could implement smashing the quitar then as well :P 01:33:08 *into a wall 01:33:37 the only way to produce natural-sounding music is to take into the account the dynamics between notes... and the transitions... rather than having a single value for each note. 01:33:45 you could. 01:34:14 and the clicking of the pick... a function of the picks density, the material used, the speed of the thrust, the thickness and the number of the strings. 01:34:14 yes 01:34:21 ... 01:34:30 * SevenInchBread is obviously stumbling off into semi-sarcasm. 01:34:49 well, i don't care about real life 01:35:14 it does not have to sound like a guitar if you ask me 01:35:23 or natural 01:35:34 by the way... sleep -> 01:35:59 sweet dreams 01:36:06 sure! -> 01:36:07 -> 01:56:18 -!- ihope has joined. 02:18:51 crappy day 02:19:20 Stop using the calendar as toilet paper. 02:19:22 (...) 02:19:38 and stay away from fans. 02:19:42 just in case. 02:20:12 Especially if you're in North Korea. 02:20:13 justin case is a loser 02:20:25 Justin Case, eh? 02:22:39 Anyway, about those ordinal numbers... 02:25:13 oh god 02:26:04 :-P 02:26:24 yes? 02:26:48 Well, grok them yet? 02:27:08 i don't know and i don't care right now 02:27:39 i already know enough 02:46:36 -!- oerjan has quit ("leaving"). 03:09:50 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 03:10:52 -!- ihope has quit (Read error: 54 (Connection reset by peer)). 03:42:38 -!- meatmanek has joined. 03:44:45 -!- oerjan has joined. 03:50:43 Y = SII(\f.\g.g ((f f) g)) right? 03:51:50 seems right 03:54:37 alternatively, \g.SII(\f.g (f f)) 03:56:07 no 03:56:32 ? 03:58:12 oh 03:58:14 yeah 03:58:17 sorry 04:08:14 -!- ooooo has quit (Nick collision from services.). 04:15:02 !bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. 04:15:05 Hello World! 04:15:29 hey egobot, long time no see 05:01:26 -!- wooby has joined. 05:42:42 -!- oerjan has quit ("leaving"). 05:51:59 -!- ShadowHntr has quit ("End of line."). 05:57:57 -!- Sgeo has quit (Remote closed the connection). 06:20:38 -!- Arrogant has joined. 06:22:33 -!- digital_me has quit (Read error: 110 (Connection timed out)). 06:25:35 -!- goban has quit ("Konversation terminated!"). 06:29:15 -!- goban has joined. 06:44:19 -!- goban has quit ("Konversation terminated!"). 06:48:24 -!- goban has joined. 06:51:05 -!- Arrogant has quit ("Leaving"). 07:17:37 -!- goban has quit (Remote closed the connection). 07:18:04 -!- goban has joined. 07:50:13 -!- puzzlet has quit (Read error: 145 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:14 -!- GreaseMonkey has joined. 08:01:47 Uryyb rirelbar! V whfg znqr n EBG13 rapbqre/qrpbqre :Q 08:02:30 man ROT13 is fun once you have a decoder/encoder 08:03:03 :Q is a funny emote 08:03:27 person holding magnifying glass to mouth / person smoking 08:03:28 -!- puzzlet has joined. 08:03:28 so :D is a funny emote in ROT13? 08:04:07 indeed 08:07:01 http://pastebin.ca/363217 <-- my encoder/decoder 08:07:41 Should we talk in ROT13 for now? 08:07:54 Fubhyq jr gnyx va EBG13 sbe abj? 08:09:26 yays 08:09:53 29 lines of C code. converts fast apart from the console routines 08:11:07 GreaseMonkey: nice 08:11:11 i shall attempt a shorter one :) 08:11:16 oh, and btw, i managed to beat hackthissite.org's permanent programming challenge 08:11:49 excluding includes and blank lines, 25 lines of code. 08:12:01 sorry 08:12:04 21 lines 08:12:10 there's those commented-out lines 08:12:27 which is Z<->A, Y<->B, X<->C, etc 08:12:53 sadly, the console routines suck :\ 08:13:06 indeed 08:14:34 the algorithm itself is quite good though. 08:15:36 my code for perm programming challenge 1 basically got a count of every instance of every letter in every word in the wordlist and the 10 strings, and compared them one-by-one 08:16:12 the code will expire in 20 secs 08:16:25 i stuck a 10 minute timer on pastebin.ca 08:21:16 k 08:22:14 -!- nazgjunk has joined. 08:22:17 -!- nooga has joined. 08:22:23 hi 08:22:45 Terrgvatf anmtwhax naq abbtn!!! 08:23:32 Zmglvgs bvvamgrt ;p 08:23:35 yby 08:26:10 Smngro amnrr pu? 08:28:33 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 08:28:51 -!- puzzlet has joined. 08:48:49 oh here we go 08:49:28 http://pastebin.ca/363277 08:53:13 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)). 09:01:31 an attempt without a lookup table 09:07:11 simple rot13? ;p 09:07:50 ;) 10:02:29 -!- UpTheDownstair has joined. 10:02:53 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 10:03:42 -!- UpTheDownstair has changed nick to nazgjunk. 10:08:21 whoa 10:08:22 main(a){while(a=~getchar())putchar(~a-1/(~(a|32)/13*2-11)*13);} 10:15:42 -!- nazgjunk has quit ("Bi-la Kaifa"). 10:22:48 -!- voodooattack has joined. 11:12:48 -!- oklofok has joined. 11:23:31 -!- oklopol has quit (Read error: 110 (Connection timed out)). 12:02:35 -!- wooby has quit. 13:37:45 -!- Keymaker has joined. 13:40:28 if anyone's interested (at some time someone here was, can't remember who), here's a solution to the prolan/m problem in IOI 1990, sum.prm :) i finally got around finishing it 13:40:30 http://koti.mbnet.fi/yiap/programs/miscellaneous/SUM.PRM 13:41:23 oh, run it in that javascript interpreter, the c interpreter has some weird bug in it 13:44:11 -!- Keymaker has left (?). 13:44:30 nooga, finally, i made the quicksort 13:44:48 and the other thing... don't remember 13:44:51 -!- oklofok has changed nick to oklopol. 13:50:09 -!- Keymaker has joined. 13:58:31 i just noticed that the program also works with more than two numbers it was designed to work with (as the competition required it to sum only two numbers)! this is completely unintentional, yet of course a good thing. :) all my tests with more input numbers worked, but can't say everything works, as it wasn't designed so. however every two-number input should work 13:59:41 -!- anonfunc has joined. 14:00:04 and yeah, the input is given like "43+51=?", as defined in that competition 14:00:22 -!- Keymaker has quit. 14:55:02 -!- nazgjunk has joined. 14:58:16 -!- anonfunc has quit. 14:58:53 -!- jix__ has joined. 15:35:33 -!- crathman has joined. 16:02:37 -!- helios24 has quit ("Leaving"). 16:02:40 -!- helios24 has joined. 16:27:46 -!- UpTheDownstair has joined. 16:36:11 -!- UpTheDownstair has quit (Operation timed out). 16:40:05 -!- jix__ has changed nick to jix. 16:44:23 -!- nazgjunk has quit (Connection timed out). 16:55:22 -!- nazgjunk has joined. 17:00:32 -!- tgwizard has joined. 17:02:13 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:02:28 -!- goban has joined. 17:12:40 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:12:55 -!- goban has joined. 17:16:59 -!- goban has quit (Connection reset by peer). 17:17:14 -!- goban has joined. 17:20:27 -!- SevenInchBread has joined. 17:56:03 -!- FabioNET has joined. 17:58:45 -!- digital_me has joined. 18:02:56 -!- goban has quit (Connection timed out). 18:06:01 -!- goban has joined. 18:07:57 * SimonRC has been working hard 18:23:07 -!- Sgeo has joined. 18:27:51 -!- calamari has joined. 18:45:05 -!- ShadowHntr has joined. 18:45:21 -!- sebbu has joined. 18:49:21 -!- sebbu2 has joined. 19:00:47 -!- sebbu has quit (Read error: 104 (Connection reset by peer)). 19:05:38 -!- _FabioNET_ has joined. 19:06:05 -!- _FabioNET_ has quit (Read error: 104 (Connection reset by peer)). 19:09:41 -!- FabioNET has quit (Read error: 110 (Connection timed out)). 19:18:25 -!- FabioNET has joined. 19:22:33 -!- helios_ has joined. 19:22:34 -!- helios24 has quit (Read error: 54 (Connection reset by peer)). 19:28:42 -!- helios_ has changed nick to helios. 19:28:51 -!- helios has changed nick to helios24. 19:29:16 * SevenInchBread is making a do-hickey for obfuscating Python. 19:35:46 -!- FabioNET has quit (Remote closed the connection). 19:57:54 bargle 19:59:26 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 20:07:58 -!- calamari has quit ("Leaving"). 20:11:37 -!- UpTheDownstair has joined. 20:11:41 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 20:20:15 -!- FabioNET has joined. 20:34:46 -!- helios24 has quit ("Leaving"). 20:54:49 hahaha http://fukung.net/v/720/school.gif 21:07:43 hahahaha 21:07:53 that's pretty funny. 21:08:35 -!- kxspxr has joined. 21:12:42 pfft... if he weren't writing it in C he would have saved some time. :P 21:12:52 with its... almost-low-levelness 21:22:19 -!- UpTheDownstair has changed nick to nazgjunk. 21:23:28 for i in range(500): print "I will not throw paper airplanes in class" 21:24:28 one line bitches 21:24:42 hehe 21:25:02 for i as integer = 0 to 500:print "I will not throw paper airplanes in class":next 21:25:09 ^^ FreeBASIC :p 21:25:13 lame 21:25:27 no xD 21:26:01 more like.. sophisticated and elegant :p 21:26:25 print "I will not throw paper airplanes in class" * 500 21:26:29 print "I will not throw paper airplanes in class\n" * 500 21:26:45 clevar 21:27:27 hurray for string multiplication and its aid to spammers worldwide. 21:27:45 ~exec sys.stdout("I will not throw paper airplanes in class\n" * 3) 21:27:47 I will not throw paper airplanes in class 21:27:47 I will not throw paper airplanes in class 21:27:47 I will not throw paper airplanes in class 21:28:08 ~ps 21:28:08 None 21:28:40 what is the bot that logs this channel? 21:29:03 do:var i=0:print "I will not throw paper airplanes in class":i+=1:loop while i<500 21:29:30 ~exec print self 21:29:40 ~exec sys.stdout(self+"\n") 21:29:40 self 21:29:41 print doesn't work 21:29:55 and join #bsmnt_bot_errors 21:29:56 ~exec sys.stdout.write(self+"\n") 21:30:12 ~exec sys.stdout(self) 21:30:13 <__main__.IRCbot instance at 0xb7c3206c> 21:30:25 oh... duh. :OP 21:30:53 lol 21:30:57 ~exec sys.stdout(dir(self)) 21:30:57 ['COMMAND_CHAR', 'THREADING', '__doc__', '__init__', '__module__', 'chan', 'commands_running', 'commands_running_lock', 'connect', 'connected', 'disconnect', 'do_callbacks', 'do_ctcp', 'do_exec', 'do_kill', 'do_ps', 'do_quit', 'do_raw', 'errorchan', 'exec_execer', 'get_message', 'host', 'ident', 'ihope', 'listen', 'load_callbacks', 'message_re', 'nick', 'owner', 'pong', 'p 21:30:58 ort', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'save_callbacks', 'socket', 'sockfile', 'verbose'] 21:31:12 ~exec self.print_callbacks() 21:31:23 ooh idea 21:33:00 ~quit 21:33:01 -!- bsmnt_bot has quit. 21:33:05 -!- bsmnt_bot has joined. 21:33:11 ~exec self.print_callbacks(sys.stdout) 21:33:12 [('^PING (.*)$', 'pong'), 21:33:13 ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'), 21:33:13 ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'), 21:33:13 ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'), 21:33:14 ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'), 21:33:15 ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)', 21:33:16 'do_exec'), 21:33:17 ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'), 21:33:19 ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'), 21:33:21 ('^ERROR :Closing Link:.*', '')] 21:33:25 perfec 21:33:27 t 21:33:49 ~exec self.print_callbacks(sys.stderr) 21:38:24 ~exec shouldA = lambda char: char in __import__("string").letters; trans = {"?":"!?!?", "!":"!!!",".":"!"}; Achar = lambda char: trans.get(char, (char,"A")[shouldA(char)]); self.AAAAAAAAA = lambda stuff: "".join(map(Achar, stuff)) + "!" 21:38:25 -!- goban has quit (Remote closed the connection). 21:38:34 -!- goban has joined. 21:39:21 ~exec sys.stdout.write(self.AAAAAAAA("bsmnt is a terrible bucket cleaner!?")) 21:39:39 ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?")) 21:40:27 bsmntboobdood, your hackish thread thing doesn't update the global scope. 21:40:40 nope 21:40:52 or... for that matter... it's making closures mess up. 21:40:52 that's intentional 21:41:10 it doesn't have to do with the threads though 21:42:12 ~exec self.shouldA = lambda char: char in __import__("string").letters; self.trans = {"?":"!?!?", "!":"!!!",".":"!"}; self.Achar = lambda char: self.trans.get(char, (char,"A")[self.shouldA(char)]); self.AAAAAAAAA = lambda stuff: "".join(map(self.Achar, stuff)) + "!" 21:42:15 ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?")) 21:42:52 ~exec self.shouldA = lambda self,char: char in __import__("string").letters; self.trans = {"?":"!?!?", "!":"!!!",".":"!"}; self.Achar = lambda self,char: self.trans.get(char, (char,"A")[self.shouldA(char)]); self.AAAAAAAAA = lambda self,stuff: "".join(map(self.Achar, stuff)) + "!" 21:42:54 ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?")) 21:44:05 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 21:47:34 ~exec for i in xrange(100): self.raw("PRIVMSG #bsmnt_bot_errors :%s" % i); time.sleep(1) 21:47:34 -!- goban has quit (Operation timed out). 21:47:37 -!- goban has joined. 21:48:42 ~ps 21:49:07 -!- bsmnt_bot has quit (Excess Flood). 21:49:10 -!- bsmnt_bot has joined. 21:53:41 ~exec self.foo = "" 21:54:10 ~exec for i in range(100): self.foo += "%s\n" % i 21:54:23 ~exec sys.stdout(len(foo)) 21:54:30 ~exec sys.stdout(len(self.foo)) 21:54:31 290 21:54:39 ~exec sys.stderr(self.foo) 21:55:27 ~exec for i in range(10999): self.raw("PDASD") 21:55:28 -!- bsmnt_bot has quit (Excess Flood). 21:55:30 -!- bsmnt_bot has joined. 21:56:35 i'm bored 22:04:12 -!- calamari has joined. 22:06:03 -!- voodooattack has quit. 22:24:49 -!- goban has quit (Read error: 60 (Operation timed out)). 22:28:33 -!- goban has joined. 22:29:08 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)). 22:43:24 -!- goban has quit (Operation timed out). 22:43:34 -!- goban has joined. 23:02:13 -!- calamari has quit ("Leaving"). 23:04:30 -!- FabioNET has quit (Client Quit). 23:08:16 -!- UpTheDownstair has joined. 23:08:28 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:10:17 -!- UpTheDownstair has changed nick to nazgjunk. 23:37:31 -!- crathman has quit (Read error: 113 (No route to host)). 23:37:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:41:10 Y'know what would be awesome? 23:41:13 A pneumatic computer. 23:42:27 make one! 23:42:54 Pneumatic AND/OR gates are possible, right? 23:43:21 i don't see why not. 23:43:35 one great computer 2007-02-20: 00:11:34 -!- sebbu2 has quit ("@+"). 00:55:15 i made bf with wav output :P 01:09:37 hmmm 01:09:46 I wonder how to parse something like this: 01:10:03 := i 01:10:11 := * 01:15:28 oh, heh, nevermind 01:16:21 that took a whole 8 lines 01:21:13 http://pastebin.ca/364284 01:29:03 hmmm... it's odd how different my mindset was before I started programming. 01:29:10 "complex" had a positive connotation. 01:29:12 ? 01:35:41 oui 01:42:14 -!- oerjan has joined. 01:53:54 -!- ShadowHntr has joined. 02:05:05 -!- kxspxr has quit. 02:25:17 ~exec exec "x='floo'" in globals() 02:25:22 ~exec sys.stdout(x) 02:25:23 floo 02:25:28 cool 02:50:06 bsmnt so why doesn't the normal mode of execution simply go to the "globals"? 02:50:16 ~exec x = 2 02:50:17 because 02:50:25 ~exec sys.stdout(x) 02:50:25 floo 02:50:31 because that would make too much sense right? 02:50:36 no 02:50:44 because then the locals aren't available 02:50:51 self, for example 02:50:53 what locals? 02:51:13 sure they are. 02:51:22 self isn't a local... in this context it's a global. 02:52:02 no, it's local 02:52:03 doesn't exec take two environment arguments, one for the globals and one for the locals? So you could have both. 02:52:10 yes. 02:52:11 it does. 02:52:17 uh huh 02:52:24 self is a variable name... 02:52:35 but if you say something like "x=2", x goes in the locals 02:52:40 it's neither local nor global... it's whatever you decide to put it in. 02:53:00 self isn't in globals() 02:53:00 in my opinion it would be more convient to simply (and more intuitive) to treat everything as globals.. 02:53:18 ~exec global x; x = 2 02:53:38 ~exec sys.stdout.write(x) 02:53:38 2 02:54:08 but then you couldn't do tricks like ihope's extra bot inside the bot 02:54:22 it doesn't make any sense to, nor is it even useful to, by default, bind variables to a temporary local scope. 02:54:24 I think you could 02:54:51 I could copy the globals dict, then add the need locals into i 02:54:52 t 02:55:17 i suppose. 02:55:38 ....just make self a global. 02:55:39 ~exec pprint.pprint(locals(), sys.stderr) 02:55:52 but if self is global you cannot have two bots! 02:55:55 SevenInchBread: no 02:56:02 wrong... you cannot have two selfs. 02:56:07 ~exec pprint.pprint(locals(), sys.stdout) 02:56:08 {'command': 'pprint.pprint(locals(), sys.stdout)', 02:56:08 'message': ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout)', 02:56:08 'r': <_sre.SRE_Match object at 0xb7c55cc8>, 02:56:08 'self': <__main__.IRCbot instance at 0xb7c4208c>} 02:56:17 so that works 02:56:38 hmmm... 02:56:40 uno momento 02:56:46 threading would mess up horribly then, wouldn't it? or do threads have different global directories? 02:56:50 I really don't like using the global declaration. 02:57:11 no... they all seem to share a global directory... 02:57:19 no, globals is the same 02:57:37 so it doesn't work, because multiple execs run in separate threads. 02:57:48 what doesn't work? 02:57:50 and they might need different selfs. 02:58:05 it doesn't work to make self global. 02:58:14 of course not 02:58:26 ~quit 02:58:27 -!- bsmnt_bot has quit. 02:58:29 -!- bsmnt_bot has joined. 02:58:36 it would work... if each bot were a different process. 02:58:48 SevenInchBread: then NOTHING would work 02:59:00 ...? 02:59:08 ~exec pprint.pprint(locals(), sys.stderr) 02:59:38 ~exec x=1 02:59:43 ~exec sys.stdout(x) 02:59:52 damnit 03:00:00 it still goes into a local scope 03:00:18 ~exec sys.stdout(self) 03:00:19 <__main__.IRCbot instance at 0xb7bd508c> 03:00:40 it looks like it generates an empty local scope if you dont' give it one 03:01:09 ~exec x= 42; pprint.pprint(locals(), sys.stderr) 03:01:14 hm... can you pass it globals(), globals() ? 03:01:32 i'll try 03:01:45 you could. 03:01:54 ~quit 03:01:55 or just {}, globals() if you wanted.... 03:01:55 -!- bsmnt_bot has quit (Client Quit). 03:01:57 -!- bsmnt_bot has joined. 03:02:06 ~exec x = 32 03:02:08 that would make global declarations act screwy though... 03:02:11 ~exec sys.stdout(x) 03:02:18 nope 03:02:21 weird 03:02:21 so globals(), globals() would be best. 03:02:25 still gebrochen? 03:02:37 gebrochen? 03:02:43 mock german 03:02:43 oh, damn 03:02:50 I was making a copy of the dictionary 03:02:55 so nothing could be added 03:02:55 ...yeah 03:03:04 I was about to say... that would work. 03:03:07 but without making a copy, I can't put self into it 03:03:22 sure you can. 03:03:31 no, you can't 03:03:43 that will break 03:03:52 ~quit 03:03:53 -!- bsmnt_bot has quit (Client Quit). 03:03:56 -!- bsmnt_bot has joined. 03:03:56 globals().update({"self":self}) 03:03:56 Sheesh. Rewrite the bot in Erlang or something :) 03:04:00 ~exec x = 23 03:04:14 ~exec sys.stdout(x) 03:04:15 23 03:04:18 yeah 03:04:23 ~exec sys.stdout(self) 03:04:24 huzzah 03:04:31 or or just globals["self"] = self 03:04:31 NameError: name 'self' is not defined 03:04:37 no, SevenInchBread 03:04:45 globals()["self"] = self 03:04:47 because globals are shared 03:04:52 so? 03:05:00 and self must not be shared. 03:05:09 so you can't have more than one bot running 03:05:10 if you rewrite self each time... it effectively doesn't matter. 03:05:16 threads 03:05:28 execs can run simultaneously 03:05:38 all the execs running use the last exec executed's self 03:05:41 and will, if some are long-running computations 03:05:53 so just fork a new process like a sane person. 03:06:14 What, sane persons, in #esoteric? Perish the thought. 03:06:35 with forks, none of the cool tricks are possible 03:06:55 basically... you want to preserve the locals. 03:07:05 so... give each bot a local dictionary? 03:07:21 and then... all the bots share a glolbal dictionary? 03:07:27 hmmm 03:07:40 it seems kind of obvious now that I think about it... 03:07:47 i thought that was the way it was working already 03:07:56 a global declaration in this case means "all bots can share" 03:07:58 nope 03:07:58 nope... 03:08:03 one sec 03:08:10 locals are basically just discarded after a thread is executed. 03:08:51 ~quit 03:08:52 -!- bsmnt_bot has quit (Client Quit). 03:08:55 -!- bsmnt_bot has joined. 03:08:58 ~exec x=12 03:09:12 ~exec pprint.pprint(locals(), sys.stderr) 03:09:19 yay! 03:09:23 ~exec sys.stdout(x) 03:09:23 ~exec sys.stdout(x) 03:09:23 12 03:09:24 12 03:09:34 ~exec pprint.pprint(locals(), sys.stdout 03:09:36 ~exec pprint.pprint(locals(), sys.stdout) 03:09:39 {'x': 12, 'self': <__main__.IRCbot instance at 0xb7c0008c>} 03:09:43 eh, wait, are you making the local directory persistent? 03:09:47 yeah 03:09:48 weird stuff 03:10:04 each bot has it's own locals dictionary 03:10:17 makes sense... really. 03:10:57 the threads might run over each other still 03:11:09 makes managing scopes between bots far less of a pain in the long run. 03:11:31 might delay updates to the dictionary untill finished executing 03:12:03 hmm... yeah... that might be a good idea. 03:12:10 except not 03:12:23 still conflicts 03:12:26 so two processes on the same thread don't like... murder each other. 03:13:04 what is wrong with the old idea that execs that wanted persistence add attributes to self? 03:13:08 basically... python's scoping makes inter-process memory weird. 03:13:20 but it works great for normal stuff. 03:13:26 oerjan: i dunno 03:14:16 well.. the problem with that is that functions defined on self don't have the closure of their local scope. 03:14:36 which is an unexpected behavior in Python 03:14:39 ~exec foo = lambda : self 03:14:47 ~exec sys.stdout(foo) 03:14:47 at 0xb7c01684> 03:14:51 ~exec sys.stdout(foo() 03:15:02 gAH I HATE THE INSERT KEY 03:15:04 ~exec sys.stdout(foo()) 03:15:17 NameError: global name 'self' is not defined 03:15:20 bargle 03:15:27 like that. 03:15:31 i thought the expected behavior in Python is that scope hardly makes sense ;) 03:15:44 closures are broken 03:15:57 eh... scope makes sense in Python... to me anyways... but that's because I've been using it... a lot. 03:16:09 i don't understand scope in python 03:16:40 everything is local unless stated otherwise. 03:16:47 mm hmmm 03:17:16 and a closure is just an encapsulation of the globals() at the time of definition. 03:17:55 so... any idea of what's causing self to be undefined? I'm thinking it might be something with the way you have it set up... can I see the source? 03:19:10 bsmntbombdood.mooo.com/chroot_ircbot.py 03:20:38 argh 03:20:45 I think it would be cool if python.exe could take URLs as pathnames. 03:21:02 so it would interpret a program off of a URL. 03:21:41 this needs a script to start i 03:21:42 t 03:27:34 there, mime types are better 03:29:47 * oerjan suddenly has a realization: mime types cannot possibly handle sound data. 03:37:22 oerjan: this configuration is equivalent to adding attributes to self 03:37:34 just now it's implicit 03:38:49 but what if an exec needs private local variables? 03:39:12 it can't 03:39:24 it could previously 03:39:26 ...that's kind of a weird choice. 03:39:57 now you're just moving the namespace to self.__dict__... when you could easily just keep a special self.localnamespace dictionary. 03:40:10 what? 03:40:14 that's what i'm doing 03:40:25 self.locals 03:40:28 Python's scoping is very good for handling three scopes (a thread scope, a bot scope, and an all-bot scope) 03:40:35 you have the source 03:40:45 oh? 03:40:46 er... isn't 03:40:48 very 03:40:51 good 03:40:57 oh, yeah 03:41:24 Python basically just recognizes two scopes... I kind of wish it could use a list of scopes. 03:41:37 localest scope all the way to globalest :) 03:41:51 that's how i did it in my mini lisp interpreter 03:44:06 SevenInchBread: you do realize you're completely wrong, right? 03:44:32 >.> ...that sounded really arrogant. :) 03:48:25 What am I wrong aboutZ 03:48:40 >>> def foo(x): 03:48:40 ... def bar(y): 03:48:40 ... def baz(): 03:48:40 ... print x,y 03:48:40 ... return baz 03:48:42 ... return bar 03:48:45 ... 03:49:16 >>> foo(1)(2)() 03:49:16 1 2 03:49:21 Right. 03:49:44 that's a closure... either way... a Python variable still only have two scopes it can be found in. 03:49:52 i see a bunch of scopes here. 03:50:09 x can be found in the scope of foo, the scope of bar and the scope of baz, and those are all different scopes. 03:50:11 yeah... but only two are used to look up a variable. 03:51:17 to look up x from baz, we check baz, then bar, then foo. 03:51:40 no... we check the functions closure... which is one namespace. 03:51:55 it doesn't "slide upwards"... although that's the effect given. 03:53:12 huh? 03:57:13 well no.. 03:57:20 I take that back... functions have -three- namespaces. 03:57:39 still, that's not a list. :/ 04:00:49 #raw names 04:01:00 ~raw names 04:01:02 -!- bsmnt_bot has quit (SendQ exceeded). 04:01:06 lol 04:01:22 -!- bsmnt_bot has joined. 04:01:41 -!- bsmntbombdood has changed nick to xor. 04:26:01 -!- calamari has joined. 04:32:35 xor: Do you know that the xor operation can be defined on ordinal numbers? ;) 04:32:43 heh 04:32:54 I wonder if there's a way to find xors non-bitwisely 04:33:28 Xor is "nimber" addition, and nimbers can be identified with ordinals. 04:33:41 nooooooo! 04:34:11 I know i^j = (j & i) - (j | i) 04:34:14 Alas, it also boils down to ordinals having base 2 representations. 04:34:49 Any base too... the omega base was the one previously mentioned as "Cantor normal form" 04:35:32 You mean i^j = (j | i) - (j & i) 04:36:15 And that works because the bits in the second part are all set in the first, so - requires no borrow and becomes bitwise. 04:38:38 Do you know Nim? 04:39:17 Basically if you have three heaps, of size x, y and z, then the first player loses iff x == y ^ z. 04:39:49 Which is equivalent to x ^ y ^ z == 0 04:40:33 It may not be practical, but there is no mention of bits in it :) 04:41:28 (Assuming both players play perfectly, as usual in mathematical game theory.) 04:42:18 And relax, ordinals are not mentioned either unless your heaps are infinite. 04:42:34 i don't get it 04:42:53 each turn you add one to a heap? 04:43:24 No, each turn the player takes as many iterms as he wishes from one heap. 04:43:28 *items 04:43:31 oh 04:45:36 It turns out there is a large class of games that can all be reduced to Nim and assigned nimbers to their positions. 04:46:02 chess? :) 04:47:24 Not chess, at least not easily. The games should have the property that there are no fundamental differences between the players, each position can in principle occur for each, with the same allowed moves. 04:48:09 In addition, all games must end. 04:48:40 (Well-foundedness, through which the ordinals creep in if you have infinitely many positions) 04:49:55 The nimber of a position is easily defined recursively: It is the smallest natural number (from 0) that cannot be the nimber of the position after the player has moved. 04:50:15 *natural = ordinal, if games are infinite. 04:51:04 Oh, and one final property, the first player who cannot make a move loses. 04:51:14 And there are two players. 04:52:00 For Nim, the nimber of a single heap is its number of items, naturally. 04:52:27 For several heaps you can prove that it is the xor of the heap sizes. 04:53:40 The first player loses iff the nimber is 0. 04:55:50 -!- goban has quit (Read error: 60 (Operation timed out)). 04:56:07 -!- goban has joined. 05:13:23 -!- digital_me has quit ("Lost terminal"). 05:29:19 -!- oerjan has quit ("leaving"). 06:20:56 -!- Sgeo has quit (zelazny.freenode.net irc.freenode.net). 06:20:56 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 06:20:56 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 06:20:57 -!- ShadowHntr has quit (zelazny.freenode.net irc.freenode.net). 06:20:58 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 06:20:58 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 06:20:59 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 06:20:59 -!- SevenInchBread has quit (zelazny.freenode.net irc.freenode.net). 06:21:29 -!- bsmnt_bot has joined. 06:21:29 -!- ShadowHntr has joined. 06:21:29 -!- Sgeo has joined. 06:21:29 -!- SevenInchBread has joined. 06:21:29 -!- puzzlet has joined. 06:21:29 -!- meatmanek has joined. 06:21:29 -!- sp3tt has joined. 06:21:29 -!- cmeme has joined. 06:23:03 -!- nooga has quit (Remote closed the connection). 06:23:08 -!- nooga has joined. 06:57:30 -!- calamari has quit ("Leaving"). 06:58:28 -!- ShadowHntr has quit ("End of line."). 07:05:25 -!- GreaseMonkey has joined. 07:06:17 -!- GreaseMonkey has quit (Client Quit). 07:06:41 -!- GreaseMonkey has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:20:21 about that: http://fukung.net/v/720/school.gif 08:20:25 ruby kills u all 08:20:39 500.times {print "yadda yadda"} 08:24:30 -!- oklobot has joined. 08:24:52 !exec 500["yadda yadda"PrntNlDrp1SubDbl] 08:24:55 Huh? 08:24:56 yadda yadda 08:25:00 yadda yadda 08:25:03 yadda yadda 08:25:07 yadda yadda 08:25:10 -!- oklobot has quit (Read error: 104 (Connection reset by peer)). 08:25:12 yeah yeah 08:28:21 but in ruby it's more elegant :> 08:29:10 YOU are more elegant. 08:29:10 !*",211yadda yadda,3500 08:29:13 Huh? 08:29:23 !sadol !*",211yadda yadda,3500 08:29:25 BDSM: Invalid argument types for '*': string, integer (index: 1, row: 1, col: 2) 08:29:30 heh 08:29:34 old interpreter ;p 08:29:41 :) 08:30:05 -!- GreaseMonkey has quit ("gnight"). 08:30:21 i added that to oklobot quite late to 08:30:22 *oo 08:30:47 it's still not turing complete :P 08:31:12 nooga i have a lot shorter quicksort than the page 08:31:19 sow me 08:31:21 show* 08:31:38 i'll search... no idea where it is 08:33:01 okay... was in a folder named posakdif 08:35:13 -!- Sgeo has quit (Remote closed the connection). 08:36:18 http://www.pastebin.ca/364621 08:37:05 i had a lot shoter one than that... put i did some very strange things 08:37:11 and it failed from time to time 08:37:15 cool 08:37:37 but you must admit that reversed quine is genious 08:37:43 something like using then same operator many times... 08:37:46 i don't remember 08:37:48 :D 08:38:04 (7:C",228!R!C!"7822,"R:!R!"9822,"C:7(:R",228(7:C",2289"!R!:R",2287"!C!RR!C!"7822,"R:!R!"9822,"C:7( 08:38:11 the beauty 08:38:24 yeah it's pretty cool :D 08:38:48 7( in the end... eof can be there? 08:39:07 it's within a string 08:40:09 hard to say, i can't read that anymore 08:40:15 :D 08:40:25 need to make indents 08:40:25 ':' is? 08:40:42 where? 08:40:43 what? 08:40:53 what's : 08:40:55 i forgot 08:40:59 in that quine, to see the structure 08:41:05 :ab --> a=b 08:41:30 haven't played with sadol after you were here last 08:41:42 ow 08:42:14 ! 08:42:15 ? 08:42:17 Huh? 08:42:18 ! does? 08:42:21 Huh? 08:42:25 well.. bbl, classes start in 10 mins 08:42:36 ! first 08:42:39 Huh? 08:42:49 ! prints 08:42:51 Huh? 08:42:57 though so 08:42:58 have fun 08:43:03 rtfm ;p 08:43:20 http://esolangs.org/wiki/SADOL here's the cheat sheet 08:49:30 haha 08:49:39 i just came up with trecursion :) 08:50:23 it's neat, gotta come up with a lang around it 09:43:13 -!- oklofok has joined. 09:43:14 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 09:57:20 -!- oklodok has joined. 09:57:22 olp. 09:57:39 pop. 09:57:43 -!- oklofok has changed nick to oklopol. 09:57:52 %out oklodok 09:57:56 -!- oklodok has left (?). 10:23:57 -!- nazgjunk has joined. 10:31:37 -!- ais523 has joined. 10:37:07 -!- UpTheDownstair has joined. 10:37:57 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 10:40:14 -!- UpTheDownstair has changed nick to nazgjunk. 10:51:30 -!- nazgjunk has quit ("Bi-la Kaifa"). 11:08:17 -!- nazgjunk has joined. 11:16:32 I was impressed with Keymaker's Underload interpreter in Brainfuck 11:16:56 so I wrote a Brainfuck (minus input) to Underload compiler: http://pastebin.ca/364737 11:21:18 !help daemon 11:21:21 Use: daemon Function: start a daemon process. 11:21:48 !daemon ul bf http://www.bf-hacks.org/hacks/uload.b 11:22:01 !ul (Hello, world!)S 11:22:18 !ps 11:22:21 2 ais523: ps 11:23:38 !help bf 11:23:39 To use an interpreter: Note: can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. 11:24:26 !daemon ul bf http://www.bf-hacks.org/hacks/uload.b 11:24:30 !ps 11:24:34 3 ais523: ps 11:24:38 " can be the actual program" means you can write the binary there i assume? 11:24:55 You can write the source code straight in, like this: 11:24:57 oh 11:25:02 it's not the interpreter 11:25:04 !bf +++++++++++++++++++++++++++++++++++.+.+.+.+. 11:25:06 #$%&' 11:25:07 :) 11:25:15 yeah 11:25:27 but for some reason, daemoning the Underload compiler doesn't seem to take 11:25:28 i reada quickly, though program meant the interpreter 11:25:31 *read 11:25:36 !help 11:25:38 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 11:25:40 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 11:26:22 !daemon ul bf8 http://www.bf-hacks.org/hacks/uload.b 11:26:26 !ps 11:26:30 4 ais523: ps 11:27:49 !daemon dup bf >+[>,]<[<]>[>.]<[<]>[>.] 11:27:53 !ps 11:27:56 5 ais523: ps 11:28:04 !dup Hello, world! 11:28:26 That's strange, there's no output but there isn't an error message either. 11:28:35 !this makes no sense and should cause an error message 11:28:38 Huh? 11:28:47 !undaemon dup 11:28:50 Process 4 killed. 11:29:55 !daemon dup bf >++++++++++++++++++++++++++++++++[>,----------]<[<]>[++++++++++.>]<[<]>[>.] 11:30:05 !dup Hello, world! 11:30:08 *Hello, world!Hello, world! 11:30:42 The problem seems to be that EgoBot is interpreting newline as newline (10), not EOF 11:31:03 !undaemon ul 11:31:06 Process 3 killed. 11:31:08 * oklopol slaps EgoBot 11:31:10 !undaemon ul 11:31:24 !ps 11:31:26 3 ais523: ps 11:31:40 There are still two broken daemons lying around, it seems 11:31:49 !undaemon ul 11:31:58 !help eof 11:32:00 Use: eof Function: send EOF to a process 11:32:07 That looks promising 11:32:22 !bf http://www.bf-hacks.org/hacks/uload.b 11:32:31 !ps 11:32:34 3 ais523: bf 11:32:36 4 ais523: ps 11:32:48 !i 3 (Hello, world!)S 11:32:51 !eof 3 11:32:54 Hello, world! 11:33:33 !kill 1 11:33:34 Process 1 killed. 11:33:36 !kill 2 11:33:38 Process 2 killed. 11:33:40 !ps 11:33:42 1 ais523: ps 11:34:25 !help usertrig 11:34:28 Use: usertrig Function: manage user triggers. may be add, del, list or show. 11:34:57 !bf-textgen +[] 11:35:00 Huh? 11:35:06 !bf-txtgen +[] 11:35:10 Huh? 11:35:20 !bf_txtgen +[] 11:35:50 45 +++++++++[>+++++>++++++++++>><<<<-]>--.>+.++. [473] 11:36:21 I'm sure that >><< bit can be shortened 11:37:50 :P 11:40:54 !bf http://www.bf-hacks.org/hacks/uload.b 11:41:55 !i 1 (:aSS):aSS 11:41:57 !eof 1 11:42:00 (:aSS):aSS 11:42:09 Underload is a good language for writing quines in 11:43:10 StringIO's eof check in python? 11:45:28 I can't figure out the context of your last comment 12:02:16 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 12:02:26 -!- oklopol has joined. 12:36:30 i've asked this before 12:36:31 but 12:37:02 can i reach a var of the parent functions in a subfunction 12:37:10 in python 12:37:47 def oso: 12:37:48 a="" 12:37:48 def b: 12:37:48 a="adsf" 12:37:48 b() 12:37:48 print a 12:38:52 hmm... globals might be the answer, can a global be global in a function? 12:39:07 def oso: 12:39:08 a="" 12:39:08 def b: 12:39:08 global a 12:39:08 a="adsf" 12:39:08 b() 12:39:10 print a 12:43:24 i feel leetish when i write an interpreter and then close python without saving :) 12:43:42 "lol i can rewrite this in 5 min" 12:54:32 -!- helios24 has joined. 12:54:46 python 2.5 won't work... something about a refused connection... 12:54:49 :\ 12:54:50 wtf 12:57:46 is there True?true_stuph:false_stuph in python? 12:57:54 cond?true_stuph:false_stuph in python? 12:58:39 python 2.5 works fine until i click ok on these all-ways-on-to error messages 12:58:51 after which it quits 12:59:03 *always-on-top 12:59:05 :) 12:59:21 ~exec sys.stdout(true?"True":"False") 12:59:37 seems as though Python doesn't have a ?: operator 12:59:52 ~exec sys.stdout("The previous line would have worked if I had a ?: operator") 12:59:52 The previous line would have worked if I had a ?: operator 13:01:37 True 13:01:49 ~exec sys.stdout(True?"True":"False") 13:02:08 ~exec sys.stdout(("True" if True else "False")) 13:02:33 ~exec sys.stdout((if True then "True" else "False")) 13:03:19 ~exec sys.stdout((["True" for i in [True] if i]+["False"])[0]) 13:03:20 True 13:03:27 ~exec sys.stdout((["True" for i in [False] if i]+["False"])[0]) 13:03:27 False 13:03:38 handy, i must say -____- 13:07:55 def cond_to_for(cond,true,false): 13:07:56 ([true for i in [cond] if i]+[false])[0] 13:07:57 hmph 13:08:03 i don't know how to use exec it seems 13:16:34 http://www.pastebin.ca/364857 13:16:46 i have some serious mental problems :< 13:16:54 exec... wtf, this is metaproggin 13:17:44 -!- helios24 has quit ("Leaving"). 13:39:17 -!- jix has joined. 13:39:20 (23)+(23,6424)+(23534,653) -> (23,23,6424,23534,653) <<<<<< how is that done? 13:39:23 in python 13:39:35 + is not right 13:49:58 -!- helios24 has joined. 13:54:11 -!- helios24 has quit (Client Quit). 13:54:43 -!- ais523 has quit ("/quit"). 13:56:13 -!- helios24 has joined. 13:56:17 y00 13:56:21 sup? 14:03:33 is there something like StringIO in haskell? 14:03:40 it would be a cheat of course 14:03:49 but i suppose you have one anyway 14:04:07 python's StringIO, the one bsmntbombdood used 14:18:02 -!- helios24 has quit (Remote closed the connection). 14:22:23 -!- tgwizard has joined. 14:22:51 huh 14:24:00 well 14:24:37 http://strlen.com/aardappel/index.html this might be interesting 14:25:08 -!- helios24 has joined. 14:26:01 yeah, wouter's a pro 14:26:28 yeah, but false is not as good as sadol :d 14:28:33 :X 14:29:08 sorry to say but it is :\ 14:29:08 well, i like it more 14:29:15 YEAH! 14:29:38 what really lacks in sadol is classic higher order functions 14:30:30 sadol is completely functional but not in the normal wa 14:30:34 way 14:32:41 when i designed it i didn't even know what is lambda ;d 14:34:26 -!- oklofok has joined. 14:34:32 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 14:36:49 ;p 14:43:25 -!- oklofok has changed nick to oklopol. 14:43:48 once i had an idea to write simple lisp interpreter in SADOL 14:43:55 ;d 14:45:31 we all snap from time to tim 14:45:33 *time 14:46:38 :D 14:46:44 but it's possible 14:46:54 and even not so hard 14:47:19 but it requires enormous amoun of time I don't have 14:48:58 true 14:58:25 g2g 14:58:26 bbl 15:10:26 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 15:11:06 -!- oklopol has joined. 15:39:50 -!- goban has quit (Read error: 104 (Connection reset by peer)). 15:58:11 -!- goban has joined. 16:08:20 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:08:43 -!- goban has joined. 16:09:03 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 16:09:13 -!- oklopol has joined. 16:18:06 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:18:23 -!- goban has joined. 16:25:43 My compiler lecturer is a bastard. 16:26:16 Basically our assignment is: "This is a 1.24M-instruction machine code program. Make it faster." 16:29:56 -!- goban has quit (Operation timed out). 16:30:59 -!- crathman has joined. 16:31:53 -!- goban has joined. 16:34:35 SimonRC: He's really just a programmer using a class of students to cheat for his company :P 16:35:05 SimonRC that sounds fun imo 16:35:32 That sounds like quite possibly the least fun thing imaginable. 16:36:12 "Tedius" would be a better word. 16:37:02 Plus an o in there :P 16:37:25 well, if you do it manually 16:37:27 i wouldn't 16:37:40 i assume it's a metaprogramming task 16:45:45 Ah, I forgot to mention... 16:45:51 It is for a VM 16:45:56 A 2200-year-old VM 16:46:06 http://www.boundvariable.org/um-spec.txt 16:46:17 oklopol: indeed it is 16:46:36 After all, he has just taught us about optimisation. 16:47:34 -!- oklofok has joined. 16:47:35 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 16:51:18 yeah 16:51:23 then i'd find it fun 16:51:28 maybe i'm sick somehow 16:51:31 -!- oklofok has changed nick to oklopol. 16:52:05 my project in the uni is to create a jave class that can randomize a poker hand and check for straight and flush... 16:52:08 *java 16:53:23 basically a 20 minute job max, but it required a plan that has to be checked before implementation... plus a 5 page documentation 16:53:29 *requires 16:53:44 actually, the example documentation is 15 pages 16:55:05 The assignment is supposed to be about 10h work. 16:56:23 maybe, would take longer for me, prolly 16:57:37 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 17:01:59 -!- FabioNET has joined. 17:02:35 -!- FabioNET has quit (Remote closed the connection). 17:03:51 -!- sp3tt has quit (Read error: 54 (Connection reset by peer)). 17:08:28 -!- FabioNET has joined. 17:43:50 -!- sp3tt has joined. 17:46:50 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)). 17:48:07 * SimonRC goes. (Bizarre coursework: http://www.dur.ac.uk/s.r.clarkstone/ASAM%20Compilers%20coursework.eml ) 17:49:50 -!- ais523 has joined. 17:51:13 -!- sp3tt has joined. 17:54:18 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)). 17:57:37 -!- sp3tt has joined. 18:01:17 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)). 18:05:59 -!- sp3tt has joined. 18:29:36 -!- sebbu has joined. 18:31:54 dur 18:38:57 hm 18:42:54 I'll have to complain again about a lack of context, after reading the previous two lines and today's logs 18:47:52 !bf http://www.bf-hacks.org/hacks/uload.b 18:48:21 !i 1 (:*)(:::::::*******)^(*)~^S 18:48:23 !eof 1 18:48:25 **************************************************************************************************************************************************************************************************************************************************************** 18:50:26 . 18:50:32 ? 18:53:14 -!- sp3tt has quit (Read error: 54 (Connection reset by peer)). 18:55:52 I was getting EgoBot to run Underload 18:56:11 * GregorR doesn't know what underload is ^^ 18:56:23 http://esolangs.org/wiki/Underload 18:56:58 I can't daemon Keymaker's interpreter, though, because it expects EOF at the end of the program rather than newline 18:57:18 Aww :( 18:57:36 It could be modified ... but BF is sort of write-only coding ^^ 18:58:18 It shouldn't be too hard; the start of the program looks like a EOF-seeking routine to read the whole program, which could be modified independently 18:58:49 Anyway, I was sufficiently impressed with the Underload interpreter in BF that I wrote a BF (minus input) to Underload compiler: http://pastebin.ca/364737 18:59:10 -!- sp3tt has joined. 19:03:39 !daemon ul bf http://pastebin.ca/raw/365170 19:03:49 !ul (Hello, world!)S 19:03:52 Hello, world! 19:03:59 Whoot 19:04:00 !ps 19:04:00 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)). 19:04:04 1 ais523: ps 19:04:08 !ps d 19:04:12 1 GregorR: ps 19:04:21 OK, so it closes after receiving one line ;) 19:04:25 The modified version ends after it runs one program, though 19:04:31 Crossed messages... 19:05:18 -!- ais523 has quit ("I have to go home"). 19:09:40 -!- sp3tt has joined. 19:22:49 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 19:25:13 -!- oklofok has joined. 19:42:50 -!- sp3tt has quit (Read error: 131 (Connection reset by peer)). 19:56:02 -!- sp3tt has joined. 20:00:12 -!- oklofok has changed nick to oklopol. 20:04:44 -!- voodooattack has joined. 20:28:13 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 21:22:43 -!- wooby has joined. 21:39:29 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:47:51 -!- sebbu has quit ("@+"). 22:51:46 -!- goban has quit (Read error: 54 (Connection reset by peer)). 22:51:59 -!- goban has joined. 23:12:39 -!- nazgjunk has changed nick to na[zZz]gjunk. 23:15:30 exercise: write a turing-machine evaluator in the lambda calculus. 23:15:50 evil exercise: write a lambda-calculus evaluator for the turing machine 23:15:57 :-P 23:16:00 * SimonRC goes for a bit 23:16:29 heh 23:16:42 * xor just wrote a ski calculus interpreter 23:19:01 unparse(simp(parse("```S`KKIx"))) ==> "`Kx" 23:22:35 -!- tgwizard has quit (Remote closed the connection). 23:22:45 unparse(simp(parse("```S``SI`KS`KKx"))) ==> "``xSK" 23:24:40 :) 23:25:18 * oklopol has nothing clever to say 23:25:19 -!- SevenInchBread has joined. 23:25:37 * oklopol leaves feeling embarrassed --> 23:25:54 hmmm... interesting. 23:26:03 Anyone heard of the term "rope" as a datatype? 23:26:22 I just read about it. 23:26:26 <-- 23:26:30 url 23:27:18 It's basically a binary tree of arrays of characters (a tree of strings). 23:27:58 omg! --------------> 23:28:21 so to concatenate ropes you just make a new node, with the two ropes being the branches. 23:29:19 ? 23:32:26 IT apparently makes concatenation operations faster... at the expense of a few extra chunks of memory lying around. 23:36:56 I wonder how to make it reduce things like S(KK)I automatically 23:37:30 (using extensionality) 23:37:51 hmm... well... 23:38:36 let's see... I don't know if ropes would actually make anything faster. It lightens the burden of the concatenation operation... but in doing so it makes it less straightforeward to traverse. 23:38:58 concantenation of strings is only O(n) 23:40:27 well... that adds up when you insert values onto strings continuously. 23:41:42 -!- FabioNET has quit (Client Quit). 23:47:48 -!- wooby has quit. 2007-02-21: 00:25:31 -!- digital_me has joined. 00:40:35 -!- goban has quit (Read error: 110 (Connection timed out)). 01:04:21 -!- digital_me has quit ("Lost terminal"). 01:09:49 -!- wooby has joined. 01:17:50 -!- goban has joined. 01:24:42 -!- crathman has joined. 01:28:51 -!- wooby has quit. 02:00:45 -!- goban has quit (Connection timed out). 02:00:51 -!- goban has joined. 02:06:19 -!- crathman has quit (Read error: 131 (Connection reset by peer)). 02:06:30 -!- crathman_ has joined. 02:06:32 -!- crathman_ has changed nick to crathman. 02:06:44 -!- crathman has quit (Remote closed the connection). 02:44:53 -!- anonfunc has joined. 03:09:53 -!- anonfunc has quit. 03:15:54 -!- anonfunc has joined. 03:44:57 -!- xor has changed nick to bsmntbombdood. 03:59:27 -!- voodooattack has quit. 04:09:06 -!- GreaseMonkey has joined. 04:20:12 monkey too greasy 04:21:58 If you bake it just enough of the grease runs out to leave it tender but not greasy. 04:24:30 -!- Sgeo has joined. 04:24:46 supercoolness: http://bsmntbombdood.mooo.com/ski_repl.py 04:29:11 $ ```Sxyz 04:29:15 ``xz`yz 04:30:04 $ ```SKxy 04:30:04 y 04:31:49 hmmm 04:32:18 I want to make a computer that operates on base-5 04:32:24 a... pentit? 04:32:29 I want to make a pneumatic computer. 04:32:50 Well... I'm getting kind of fed up with bits... :) 04:32:52 Make it base-6 so it can be a sextit. 04:32:58 hahahahaha 04:33:26 I was going for base-5 because of The Law of Fives... but base-6 would actually have the digit 5 in it. 04:33:41 "Law of Fives"? 04:33:44 You could encode more information in less space. 04:33:52 oh sry 04:33:53 no you couldn't 04:33:58 didn't notice there was action here 04:34:05 http://en.wikipedia.org/wiki/Discordianism#The_Law_of_Fives 04:34:58 hey, i know basic "hypnosis" 04:35:09 i dunno what the term for it is though 04:35:13 logic works in binarys 04:35:15 i think it's "autosuggestion" 04:35:18 *bits 04:36:42 well... assuming you use similar methods of storing bits to store sextits... you could get a large number of representable values within a sequence of sextits than you could a sequence of bits. 04:37:20 base-3 is actually fairly feasible... -1, 0, 1 corresponding to the polarity of the volts. 04:37:27 ha ha you said sex-tit 04:48:39 hmm... but you can't reliably represent 5 states with a typical transistor can you? 04:48:51 the voltage can change unexpectedly. 04:58:50 -!- GreaseMonkey has quit ("gtg"). 05:08:04 hmmm... I wonder if I could somehow attach an analog component to my computer and make it a hybrid computer. 05:28:01 -!- Arrogant has joined. 05:35:51 hmmm... are there any analog computers out there that use sound as their medium? 05:35:55 interesting idea. 05:36:23 I'd imagine it would make quite a bit of racket... unless you keep it out of the range of human hearing. 05:36:33 what's the point? 05:36:36 but then you'd annoy quite a few dogs. 05:36:41 Same as the point of a pneumatic computer. 05:36:41 what's the point of anything? 05:36:48 It's pure, unadulterated awesomeness. 05:37:10 hmmmm.. well sound is kind of like pneumatic... but with totally different processes. 05:37:21 vibrating air... air pressure... totally different things. 05:37:53 Heh 05:38:23 you could mix sound waves to do nifty things... 05:38:35 and combine it with pneumatic somehow. 05:39:11 with some hydraulic stuff thrown in just for the awesomeness of sloshing sounds (and a water fountain as an output device) 05:42:42 hmm... a pnuematic computer? That's a wind tunnel. :P 05:43:10 lol 05:54:33 I would use electrical and chemical components. 05:54:37 essentially like the brain. 05:56:16 if you consider the inpreciseness of intelligence... analog computers seem better suited for AI than digital computers. 05:57:01 -!- goban has quit (Remote closed the connection). 05:57:22 -!- goban has joined. 06:15:12 -!- goban has quit (Remote closed the connection). 06:41:44 -!- goban has joined. 07:05:51 -!- goban has quit (Remote closed the connection). 07:06:22 -!- goban has joined. 07:09:05 -!- goban has quit (Remote closed the connection). 07:09:34 -!- goban has joined. 07:14:31 -!- Sukoshi has joined. 07:15:26 If you break every case statement does it specifically match your case of choice through only one jump or is a fall-through case statement faster? 07:15:29 In C. 07:18:14 ... regardless of breaking or anything else, a switch is one jump. 07:18:23 (At max) 07:18:35 Aha. 07:18:37 Cool-z. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:37 hmmm 08:06:56 should esoos ever become complete... it needs an OS-tan. 08:07:26 And even if it doesn't :-P 08:08:33 ...yes 08:08:39 I imagine it being green... 08:08:41 for some reason 08:08:56 -!- ShadowHntr has joined. 08:09:13 or... at least... futanari (hermaphrodite anime pron) 08:11:40 -!- Arrogant has quit ("Leaving"). 08:11:51 -!- EgoBot has quit (Read error: 104 (Connection reset by peer)). 08:12:08 -!- EgoBot has joined. 08:12:10 -!- Sgeo has quit (Read error: 131 (Connection reset by peer)). 08:41:34 -!- SevenInchBread has changed nick to SevenInchPastry. 08:54:41 -!- ShadowHntr has quit ("End of line."). 09:05:23 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 09:05:24 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 09:05:28 -!- oklofok has joined. 09:05:28 -!- Sukoshi has joined. 09:05:28 -!- sekhmet has joined. 09:05:28 -!- NK\ has joined. 09:05:28 -!- GregorR has joined. 09:05:28 -!- SimonRC has joined. 09:05:28 -!- tokigun has joined. 09:05:30 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 09:05:43 -!- GregorR has joined. 09:07:45 -!- Sukoshi has quit (Remote closed the connection). 09:08:13 -!- Sukoshi has joined. 09:41:34 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 09:41:34 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 09:41:34 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 09:41:35 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net). 09:41:35 -!- oklofok has quit (zelazny.freenode.net irc.freenode.net). 09:43:50 -!- oklofok has joined. 09:43:50 -!- sekhmet has joined. 09:43:50 -!- NK\ has joined. 09:43:50 -!- SimonRC has joined. 09:43:50 -!- tokigun has joined. 09:50:47 -!- na[zZz]gjunk has changed nick to nazgjunk. 10:00:38 -!- nazgjunk has changed nick to n[a]zgjunk. 10:11:06 -!- oklopol has joined. 10:11:24 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 11:11:36 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 11:12:23 -!- oklofok has joined. 11:19:13 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)). 13:29:15 -!- jix__ has joined. 13:48:18 -!- goban has quit (Read error: 104 (Connection reset by peer)). 13:48:35 -!- goban has joined. 13:56:00 -!- goban has quit (Read error: 104 (Connection reset by peer)). 13:56:15 -!- goban has joined. 14:15:28 hey 15:30:09 -!- crathman has joined. 15:56:40 :S[s] :: S:`s 15:59:02 -!- goban has quit (Read error: 110 (Connection timed out)). 16:07:10 -!- oerjan has joined. 16:09:44 hi oerjan 16:09:51 hi nooga 16:09:55 back from work? 16:10:39 not really 16:14:28 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 16:16:13 hm 16:16:39 have you invented something new? 16:17:30 i have mostly designed a Malbolge dialect which I am calling "Malbolge Unshackled" 16:17:45 w0 16:17:47 show me 16:18:03 the implementation is far from ready though. 16:18:17 what about the spec? 16:18:23 basically, i was thinking how to make Malbolge Turing complete 16:18:34 still only in my head. 16:18:40 i c 16:18:43 by removing size limits 16:19:08 for Malbolge, this has various problems. 16:21:12 mostly to do with the fact that the tritwise operations (the crazy operation and rotation) are not defined for general integers, but tightly connected with the particular tritwidth (10) of Malbolge 16:22:31 for the crazy operation it is easiest to solve: use 3-adic numbers, where the first trit is considered to repeat indefinitely to the left. 16:22:52 -!- ShadowHntr has joined. 16:23:33 (Since op(0,0) == 1 on trits, this is necessary to make the definition independent of tritwidth) 16:24:03 but rotation is more awkward. 16:24:55 because what should happen to the trit that is shifted off rightward? 16:25:54 hm 16:25:56 rotation is the only way in Malbolge to create values larger in width than those you already have, an essential for Turing completeness. 16:26:12 i c 16:26:22 sorry, but g2g ;/ 16:26:33 bye 16:26:36 bbl 16:50:29 oklofok: What is StringIO? 16:53:49 hm... 16:54:37 sounds like the Writer monad. 16:54:57 a bit. 17:05:32 but doing it properly is hard without duck typing, i guess. 17:07:30 other than that, it is far more common in Haskell to work with strings when possible, so the opposite is easier. 17:17:53 -!- oerjan_ has joined. 17:20:11 -!- oerjan has quit (Nick collision from services.). 17:20:14 -!- oerjan has joined. 17:20:25 what! 17:20:48 -!- oerjan has quit (Remote closed the connection). 17:20:55 -!- oerjan_ has changed nick to oerjan. 17:27:01 -!- SevenInchPastry has quit (Read error: 145 (Connection timed out)). 17:36:32 -!- goban has joined. 17:42:02 -!- Sukoshi has quit (Remote closed the connection). 17:42:39 -!- Sukoshi has joined. 18:00:27 -!- goban has quit (Connection timed out). 18:08:03 -!- goban has joined. 18:25:05 -!- sebbu has joined. 18:49:32 -!- goban has quit (Read error: 104 (Connection reset by peer)). 18:49:41 -!- goban has joined. 19:00:11 -!- crathman has joined. 19:10:18 -!- Arrogant has joined. 19:21:09 -!- fizzie has joined. 19:36:55 -!- sebbu2 has joined. 19:48:12 -!- sebbu has quit (Read error: 60 (Operation timed out)). 20:08:22 oerjan bsmntbombdood used it in his *ii -parser 20:08:27 -!- oklofok has changed nick to oklopol. 20:08:47 Iota? 20:11:23 iota = (char 'i' >> I) <|> (char '*' >> liftM2 App iota iota) 20:11:54 data Iota = I | App Iota Iota 20:12:27 import Text.ParserCombinators.Parsec 20:12:40 except the import has to be first. 20:12:53 -!- n[a]zgjunk has changed nick to nazgjunk. 20:13:38 eh, that I should be return I 20:14:48 App? 20:15:08 * is application isn't it? 20:15:27 i think it is 20:15:59 App is a haskell term? 20:16:13 it's defined in the data statement. 20:16:47 yeah, indeed 20:17:02 i'm not that familiar with haskell's type system :D 20:17:44 well it's a kickass type system 20:18:40 it defines a type Iota with two constructors I and App, the last of which takes two arguments. 20:19:31 both themselves of type Iota. 20:21:32 App and I are then kinda like constructors, i would've asked, but seems it's exactly what you said now that i read it again 20:21:56 right. 20:22:23 -!- sebbu has joined. 20:22:31 i just don't like erasing stuff i've already written 20:22:34 :P 20:23:23 maybe add S and K to the type, then you can use the equations on the wiki page. 20:24:09 step (App I x) = App (App x S) K 20:24:55 i don't know how iota works 20:24:58 step (App (App K x) y) = x 20:25:35 step (App (App (App S x) y) z) = App (App x z) (App y z) 20:25:49 well S and K are the usual combinators. 20:26:55 iota is identity? 20:27:05 step (App x y) = App (step x) y 20:28:00 no, *ix = **xSK 20:28:29 okayh 20:30:03 step x = x 20:30:46 That step definition will loop once the expression is in head normal form, however, which may not be quite what you want. 20:30:58 *loop=change nothing 20:32:25 But anyhow, something like this and a couple of lines more should give an entire Iota interpreter. 20:34:24 way to go haxxell! 20:39:53 OT: http://www.pastebin.ca/366652 20:41:34 -!- sebbu2 has quit (Connection timed out). 20:42:56 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 20:43:57 -!- oklopol has joined. 21:25:03 -!- oerjan has quit ("Good night"). 21:36:28 -!- SevenInchPastry has joined. 21:40:49 -!- SevenInchPastry has quit (Client Quit). 21:55:20 -!- Arrogant has quit ("Leaving"). 22:00:29 -!- goban has quit (Remote closed the connection). 22:00:43 -!- goban has joined. 22:12:01 -!- SevenInchPastry has joined. 22:12:12 -!- SevenInchPastry has changed nick to SevenInchBread. 22:19:17 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:19:32 -!- goban has joined. 22:30:40 GregorR: ? 22:33:41 bsmntbombdood: An email I sent today :P 22:36:07 * bsmntbombdood twonges 22:36:23 ... twonges? 22:36:42 twonges. 22:41:33 ... ... twonges? :P 22:42:16 to twonge or not to twonge? 22:43:00 To twonge, or not to twonge. That is the question. 22:43:30 -!- puzzlet_ has joined. 22:43:44 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)). 22:43:46 * bsmntbombdood twonges lament 22:44:01 * oklopol gets a huge twonge 22:44:33 OK, I think we're done with the word "twonge" X_X 22:44:38 oh man i've only made $60 with adsense 22:44:48 hmmm 22:45:09 sounds good 22:45:10 so... back to esoos... do we have memory paging figured out? 22:45:40 * SevenInchBread wants to represent memory as something quirkier than a ginormous array. :) 22:46:09 -!- goban has quit (Connection timed out). 22:46:22 -!- goban has joined. 22:48:50 linda? 22:49:15 * oklopol 's been reading http://strlen.com/files/lang/aardappel/thesis.pdf 22:59:29 Is Esos still alive? 23:12:45 ...sorta. 23:12:50 no real work on it... but 23:13:10 it's... erm... hmmm... it's in critical condition. 23:13:14 also... 23:13:22 Ah... sounds ... engaging? 23:13:40 omdeed. 23:13:53 Hootay. 23:13:57 also 23:13:59 http://deadbeefbabe.org/paste/3747 23:18:07 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 23:33:45 -!- goban has quit (Connection timed out). 23:34:10 -!- goban has joined. 2007-02-22: 00:09:27 -!- sebbu has quit (Client Quit). 00:29:01 -!- voodooattack has joined. 00:30:33 -!- nazgjunk has quit ("Bi-la Kaifa"). 00:38:47 -!- ShadowHntr has quit ("End of line."). 01:23:09 -!- wooby has joined. 01:24:10 heh. 01:24:35 there must be a bug 01:25:08 http://pastebin.ca/366996 01:25:16 :q or :Q is the command to quit 01:26:32 -!- wooby has quit (Client Quit). 01:26:38 -!- wooby has joined. 01:29:38 weird 01:49:31 -!- Sgeo has joined. 02:23:18 this is pretty sweet. 02:25:42 what is? 02:25:49 Warning: this comic occasionally contains strong language (which may be unsuitable for children), unusual humor (which may be unsuitable for adults), and advanced mathematics (which may be unsuitable for liberal-arts majors). 02:26:45 It's like... a huge concurrent PATH-like language with coroutines and support for files and sockets. 02:29:03 Originally it was so concurrent that each individual pointer could hold only one byte... but that makes it impossible to do filenames, urls, and socket addresses. 02:29:37 so.. I just made little counters and big counters... 02:32:30 It's weird because this could actually be useful. 02:33:02 very useful actually... I wouldn't mind using it. :) 02:36:39 hell, I'll throw in unicode support too... 03:07:40 -!- wooby has quit. 03:07:43 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 03:11:20 -!- pgimeno has joined. 03:29:29 -!- jix__ has quit (Read error: 110 (Connection timed out)). 03:30:00 -!- jix__ has joined. 03:53:55 -!- digital_me has joined. 04:10:30 hmmm... 04:11:21 It's funny to note that unihan probably takes up less storage space than latin text. 04:11:58 It takes more bytes to encode a character... but you have less characters as a whole. 04:24:35 -!- oklopol has quit (Read error: 110 (Connection timed out)). 04:38:06 -!- oklopol has joined. 04:41:44 -!- digital_me has quit ("Lost terminal"). 05:01:36 ooooh. 05:01:38 this gives me ideas. 05:01:48 * SevenInchBread shhhhhhh 05:06:19 so. 05:06:25 I want to turn this into a programming language. 05:07:29 http://en.wikipedia.org/wiki/I_Ching 05:34:33 -!- oerjan has joined. 05:44:28 oerjan: StringIO is a file-like object 05:44:58 yeah, i eventually looked it up. 05:45:22 http://www.euph0r1a.net/mesostomatic/ 05:45:25 simply grand 05:46:01 off to bed I go 05:52:44 on second thought I saw a Stream module in Haskell that was quite similar to StringIO. 05:52:58 damn.. i want one of these http://www.superssd.com/products/tera-ramsan/ :/ 05:54:40 i think it used a type class for which strings and file handles were particular instances. 05:56:12 i guess that one wants to be accompanied by Intel's terachip :) 05:56:30 for full tera-coverage 05:57:56 :p 06:13:02 -!- puzzlet has joined. 06:13:02 -!- puzzlet_ has quit (Read error: 131 (Connection reset by peer)). 06:16:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 06:16:54 -!- goban has joined. 06:23:16 -!- oklofok has joined. 06:24:45 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 07:32:19 I like TK 07:32:36 nifty GUI thingy. 07:34:47 That's almost /ignore-worthy. 07:39:40 -!- sebbu has joined. 07:44:17 well... more specifically... I like Tkinter. 07:44:38 which is just like... Python stuff that turns around and does Tk/Tcl stuff 07:53:22 -!- ShadowHntr has joined. 07:53:35 Is it impolite to write an implementation of someone's language right after they have presented it? 07:54:09 Not to me... 07:54:11 Heww no. 07:54:22 I'd love it if someone implemented all the languages I came up with it. 07:54:48 because i got this idea for how to implement V and started writing. 07:55:32 * SevenInchBread has a nifty PATH-ish concurent language. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:17:48 -!- sebbu2 has joined. 08:37:01 -!- sebbu has quit (Read error: 110 (Connection timed out)). 09:06:47 -!- ShadowHntr has quit ("End of line."). 09:33:14 -!- oerjan has quit ("leaving"). 09:40:34 -!- SevenInchBread_ has joined. 09:42:34 -!- SevenInchBread has quit (Read error: 145 (Connection timed out)). 09:42:46 -!- SevenInchBread_ has changed nick to SevenInchBread. 09:44:49 -!- anonfunc has joined. 09:46:50 -!- nazgjunk has joined. 10:07:46 -!- anonfunc has quit. 10:11:22 -!- pjd has joined. 10:28:48 -!- oklofok has changed nick to oklopol. 11:09:21 -!- oerjan has joined. 11:11:17 -!- nazgjunk has quit ("Bi-la Kaifa"). 11:16:14 -!- oerjan has quit ("leaving"). 11:18:28 -!- Sgeo has quit (Remote closed the connection). 11:21:47 -!- voodooattack has quit. 13:05:25 -!- sebbu2 has changed nick to sebbu. 14:19:05 -!- sebbu has quit ("reboot"). 14:37:06 -!- sebbu has joined. 14:38:47 hi 14:38:49 sup? 15:33:06 -!- ais523 has joined. 15:41:44 -!- ais523 has quit (Remote closed the connection). 15:42:11 -!- ais523 has joined. 15:44:02 !bf http://bf-hacks.org/hacks/underload.b 15:44:06 15:44:12 !ps 15:44:16 1 ais523: ps 15:44:20 !ps off 15:44:22 :- 15:44:24 1 SimonRC: ps 15:44:24 :-P 15:44:33 ;p 15:44:45 I must have got the wrong URL, so it interpreted it as -. 15:44:55 what is V? 15:45:10 !bf http://www.bf-hacks.org/hacks/uload.b 15:45:29 -!- ais523 has quit (Excess Flood). 15:45:34 -!- ais523 has joined. 15:45:53 err... what just happened? 15:46:03 !ps 15:46:06 1 ais523: bf 15:46:07 it killed you 15:46:08 2 ais523: ps 15:46:30 Maybe I should try a program slightly shorter than a kilobyte 15:46:33 or a pastebin 15:47:41 !i 1 http://pastebin.ca/raw/367737 15:47:44 !eof 15:47:54 !ps 15:47:58 1 ais523: bf 15:48:00 2 ais523: ps 15:48:18 I suppose it might take a while to interpet what I've given it 15:48:36 !kill 1 15:48:38 Process 1 killed. 15:49:07 or maybe it was in an infinite loop due to trying to interpret the URL as a program 15:50:23 !daemon ul bf http://pastebin.ca/raw/365170 15:50:35 !ul http://pastebin.ca/raw/367737 15:51:21 !ps 15:51:24 1 ais523: ps 15:51:32 !ps d 15:51:34 1 ais523: ps 15:51:52 !daemon ul bf http://pastebin.ca/raw/365170 15:51:57 !ul (Hello, world!)S 15:52:00 Hello, world! 15:53:52 !daemon ul bf http://pastebin.ca/raw/365170 15:54:03 !ul (/me is trying to send a message starting "/me")S 15:54:06 /me is trying to send a message starting "/me" 15:54:17 doesn't work with EgoBot, it seems 15:55:33 !daemon ul bf http://pastebin.ca/raw/365170 15:56:16 !ul (~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170"))S 15:56:18 ~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170") 15:56:19 !daemon ul bf http://pastebin.ca/raw/365170 15:57:04 !ps 15:57:06 2 SimonRC: ps 15:57:11 !ps d 15:57:14 1 bsmnt_bot: daemon ul bf 15:57:16 2 ais523: ps 15:58:08 I think you need to read about ACTION in the IRC RFC. 15:58:16 that is how /me wors 15:58:18 *works 15:59:16 -!- oerjan has joined. 16:00:13 !ul (a(:^)*S):^ 16:00:16 (a(:^)*S):^ 16:00:25 !ps d 16:00:28 1 oerjan: ps 16:00:33 !help 16:00:36 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 16:00:38 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 16:00:47 !ps 16:00:50 1 oerjan: ps 16:01:18 !daemon ul bf http://pastebin.ca/raw/365170 16:01:28 !ul (~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170"))S 16:01:30 ~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170") 16:01:31 !daemon ul bf http://pastebin.ca/raw/365170 16:01:32 Still takes just one line before dying? 16:01:38 Unfortunately, yes 16:01:49 I haven't got to modifying Keymaker's program any further 16:02:18 I'd have to run it in a debugger to find out what happens to its memory after an Underload program ends 16:02:29 * ais523 searches for an online Brainfuck debugger 16:02:44 * oerjan has one in his favorites list 16:03:07 http://mozaika.com.au/oleg/bfdebug.html 16:04:59 * ais523 found that one before they saw Oerjan's message 16:05:54 * oerjan almost deduces that ais523 is a woman 16:06:30 * ais523 is just too used to using gender-neutral pronouns online 16:06:41 and I also have a gender-neutral name in RL, as it happens 16:07:50 ais523: you appear to be in birmingham uni 16:09:00 yes, I haven't hidden my IP 16:09:24 I haven't even bothered hiding my name 16:09:34 * SimonRC needs a pseudonym 16:10:20 /nick Jeremy_Askew 16:10:24 :-) 16:10:28 whoever he might be 16:15:06 -!- jix__ has changed nick to jix. 16:19:41 !daemon ul bf http://pastebin.ca/raw/367770 16:19:47 !ul (Hello, world!)S 16:20:06 !ps 16:20:08 3 ais523: ps 16:21:09 !ps d 16:21:12 1 bsmnt_bot: daemon ul bf 16:21:14 2 ais523: daemon ul bf 16:21:16 3 ais523: ps 16:21:19 !kill 1 16:21:21 !kill 2 16:21:22 Process 1 killed. 16:21:24 Hello, world! 16:21:26 Process 2 killed. 16:21:27 -!- pjd has quit. 16:21:35 !daemon ul bf http://pastebin.ca/raw/367770 16:21:40 !ul (Hello, world!)S 16:22:04 !kill 1 16:22:06 Process 1 killed. 16:22:08 Hello, world! 16:22:18 The problem is that there isn't a final newline on the output 16:23:19 !daemon ul bf http://pastebin.ca/raw/367774 16:23:24 !ul (Hello, world!)S 16:23:26 Hello, world! 16:23:33 !ul (Hello again!)S 16:23:36 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:23:36 Hello again! 16:23:52 -!- goban has joined. 16:24:04 This ought to work as long as nothing is left on the stack at the end of the program 16:27:42 !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*):^ 16:28:00 !undaemon ul 16:28:02 Process 1 killed. 16:28:12 !daemon ul bf http://pastebin.ca/raw/367774 16:28:23 !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^ 16:28:31 !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^ 16:28:34 ~exec sys.stdout("!ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^") 16:29:08 Python seems not to understand nested quotes, so this quine's going to take a bit of work 16:29:29 but it's hard to see how any language could understand nested " as quotes 16:29:38 that's why I like directed quotes 16:37:11 ais523, how about triple-quoted string? ("""xxx""") 16:37:33 the problem is whatever delimiters are used outside the string will end up inside it 16:37:43 due to the nature of this sort of quine 16:38:00 ais523 you making your first quine? 16:38:09 directed quotes? 16:38:19 but the delimiter is three characters, so you can divide it and safely print it... maybe? 16:38:35 * ais523 has made quines before 16:38:42 And as for directed quotes: 16:39:02 !ul (((*)))^^aaS 16:39:04 ((*)) 16:39:17 !ul (((*)))^^aaaS 16:39:18 (((*))) 16:39:25 I.e. another word for parentheses :) 16:39:39 Parentheses are used as directed quotes in Underload 16:39:45 but Capuirequiem uses [] 16:39:58 and STATA (a nasty non-esoteric language) uses `" "' 16:40:02 I realized (and I think INTERCAL may use it) that alternating " and ' also allows for arbitrary deep nesting 16:40:22 INTERCAL can do it even without alternating in most cases 16:40:32 alternating is only necessary in tricky bits of array markup 16:41:05 strangely enough, the C-INTERCAL compiler had a bug in this regard through most of its history (it was the main bug I fixed for the most recent version) 16:42:14 ..translates c to intercal? 16:42:21 translates INTERCAL to C 16:42:40 okay, i was very close to calling you a lier :) 16:42:42 or to be precise, it translates a dialect of INTERCAL commonly also called C-INTERCAL to C 16:44:44 http://esolangs.org/wiki/C-INTERCAL 16:45:36 hm... I did not quite remember the weirdness. 16:49:24 -!- goban has quit (Connection timed out). 16:49:38 DO .1 <- ,3SUB",2SUB.1".2~.3"".4 16:50:05 the entire statement could be parsed a different way up to the third double-quote 16:50:27 which is no good for a parser which must decide whether the second ears are closing when it reaches them, not later 16:50:56 there's actually a sentence in the manual specifically banning examples like this one, which leads me to believe they must have hit the same problem implementing INTERCAL-72 16:58:28 !ul (()(*))()(~:^:S*a~^a~!~*~(/)S):::::*****^!! 16:58:31 */*/**/***/*****/********/ 16:58:56 !ul (()(*))()(~:^:S*a~^a~!~*~(/)S)::::::::********^!! 16:58:59 */*/**/***/*****/********/*************/*********************/**********************************/ 16:59:05 !ul (Hello, world!)a 16:59:11 print? 16:59:16 !ul (Hello, world!)A 16:59:19 !ul (Hello, world!)S 16:59:23 Hello, world! 16:59:26 :DDDDDDDDDDDDDDDDDDDD 16:59:27 yay 16:59:32 !ul (Hello, world!)aaaaaaaaaaaaaaaaS 16:59:35 ((((((((((((((((Hello, world!)))))))))))))))) 16:59:42 whoopes 16:59:55 !ul (a)::S 16:59:57 a 17:00:00 !ul (a)::SSS 17:00:03 aaa 17:00:05 !ul (a)::SSSS 17:00:07 aaa 17:00:21 !ul (a)~S 17:00:26 Erm, I have no idea what state the interpret will be in now that you've used up more stack elements than it had 17:00:31 !ul (4)(a)~S 17:00:32 !ul (Hello, world!)S 17:00:33 4 17:00:35 Hello, world! 17:01:01 * interpreter 17:01:09 oh :P 17:01:12 !ul (a)(b)*S 17:01:15 ab 17:01:21 !ul (a)(b)~*S 17:01:25 ba 17:01:31 !ul (a):*S 17:01:32 !ul(a):*S 17:01:33 aa 17:01:35 Huh? 17:01:44 Snap! 17:01:48 i seem to remember the language pretty well 17:01:49 yay 17:01:55 !ul (a)aS 17:01:57 (a) 17:02:08 !ul (a)a*S 17:02:09 !ul (a)(a)^S 17:02:11 (a) 17:02:13 (a) 17:02:28 !ul (a)(a)a*S 17:02:31 a(a) 17:02:45 !ul (a)(a)(a)^*S 17:02:47 a(a) 17:03:59 !ul ((a)(b))^*S 17:04:03 ab 17:04:04 !ul (a)a*S <<< shouldn't this output aa or smth? 17:04:07 (a) 17:04:40 Your program: (a)a*S pushes a onto the stack, encloses it in brackets, concatenates it to a nonexistent stack element, and prints it 17:04:54 !ul (a)(a)a*S 17:04:57 a(a) 17:04:58 a == enclose, yeah, i failed 17:05:02 i though double 17:05:04 that's : 17:05:06 indeed 17:05:21 : = two dots = double 17:05:34 i figured that's the reason 17:05:38 you are the author? 17:05:52 Yes. Underload is a subset of a much larger language that I haven't released yet 17:05:59 !ul 1S 17:06:03 because I haven't figured out the details 17:06:06 1 is comment? 17:06:13 '1' doesn't mean anything, so it's an error 17:06:21 all strings have to be quoted in brackets 17:06:23 okay, same thing :P 17:06:24 !ul (1)S 17:06:27 1 17:06:51 What's surprising me at the moment is how errorproof the interpreter's being at the moment 17:07:03 considering that it's written in Brainfuck and does no error checking 17:07:11 :o 17:07:13 wtf 17:07:25 It's Keymaker you'll have to thank for that, not me 17:07:34 I just modified it for EgoBot use 17:07:40 -!- helios24 has quit ("Leaving"). 17:07:54 http://pastebin.ca/raw/367774 17:08:11 based on the original http://www.bf-hacks.org/hacks/uload.b 17:08:54 hmm... why haven't i thought of []-comments 17:09:15 !ul (This is a comment)!(Hello, world!)S 17:09:19 Hello, world! 17:09:29 You can create a comment by enclosing it in brackets and then throwing it away with ! 17:09:45 Oh, I see you were referring to BF's [] comments 17:09:48 yeah 17:10:06 * ais523 didn't think of them in an earlier revision, either, and added them for the latest version 17:10:27 i've always stripped my comment off bf commands 17:10:30 *s 17:11:46 pretty omg our programming tasks, today i had to write a method for iteratively calculating list length on the whiteboard 17:11:55 in java 17:13:45 * ais523 is also learning Java 17:13:58 I have to write an interactive game of Snakes-and-Ladders over a network 17:14:17 which is a bit confusing, as the players have no input into snakes-and-ladders anyway 17:17:02 heh 17:17:36 i'm starting to learn towards functional languages nowadays 17:17:42 * oklopol is becoming lazy 17:18:03 :-P 17:19:12 two years ago i would've laughed at python for the code being 10 times shorter in most tasks... since it's not REAL PROGRAMMING like c 17:19:46 I tend to lean towards pure languages 17:19:47 c/c++ still makes me tick though... java not so much 17:20:06 whether it's pure functional like Unlambda or pure procedural like C 17:20:32 I also like C and C++ 17:20:36 Java has a lot of annoying quirks 17:20:39 or purely imperative like brainfuck! 17:20:41 what about pure multiparadigm like Oz? :) 17:20:45 such as having to use a file-system for quoting 17:21:06 (not that i really know Oz) 17:21:14 * ais523 was going to use brainfuck as an example, but couldn't think of what paradigm it was a pure representative of 17:21:53 By the way, Underload is a pretty pure concatenative language 17:26:51 ais523 was wondering whether EgoBot responded to private messages 17:26:59 apparently it does 17:29:26 ais523: BF is close to a Turing machine. 17:30:01 with lots of states but a limit on which states can go where, and what each state can do 17:30:06 and with only a semi-infinite tape 17:30:17 and lots of possible symbols for each tape cell 17:30:47 semi-infinite tape? 17:31:11 !bf < 17:31:23 that's an illegal program in most BF implementations 17:31:34 but Turing machine tapes are infinite both ways 17:31:42 that is not semi-infinite. 17:31:42 not always 17:32:18 INF - 0 = INF, INF - (-INF) = 2INF = INF 17:32:24 semi- is wrong 17:32:36 it's just different, not semi-infinite 17:32:50 Would you object to the term 'half-line' for a ray in geometry, which is quite common 17:33:06 I suppose 'semi-infinite' means 'infinite half of two ways', or one way 17:33:07 half-linishly infinite 17:33:16 well, maybe :D 17:33:22 i hope it's not an official term 17:34:59 * oerjan thinks his data structure for implementing V's sum tree was moderately clever. :) 17:36:12 * ais523 looks up what Oerjan's data structure was 17:37:43 You have a structure consisting of a binary tree and a linked list of binary trees? 17:38:51 well, i guess you could call it that. It's just a zipped binary tree. 17:39:16 of infinite height both ways. 17:39:54 For Underload's superset language, Overload, I'm using a data structure which is effectively a doubly-linked binary tree 17:40:09 analogous to a doubly-linked list 17:40:29 ITYM "binary tree with upward links". 17:40:50 Yes, except that I have to do some compression 17:40:57 because the trees are also infinite 17:41:09 compression usually helps with infinite stuff. 17:41:53 It's the only language I've ever come across where I had to optimize 99 bottles of beer 17:41:59 to prevent the computer running out of memory 17:42:05 :D 17:43:09 If one is dealing with substitutions of values for variables, sometimes you get an infinite data structure, which is easily compressed as a function for the general case plus ome counterexamples. 17:43:49 All data types were equivalent 17:43:52 like ([('x', "f(z)"), ('z', "g(x)")], id). 17:44:10 ais523: corection: all data types of the same cardinality are equivalent. 17:44:13 so the character '!' was equivalent to the number 34 (because it used incremented ASCII as a character set) 17:44:31 and any data type of greater cardinality can emulate any one of lower cardinality. 17:44:34 extended ascii? 17:44:38 within the HM type system 17:44:42 no, incremented 17:44:49 newline was 11 and space was 33 17:44:49 okay 17:44:54 so that EOF could be 0 17:45:04 yeah, oaky 17:45:04 ouch 17:45:08 heheh 17:45:16 (like an oak?) 17:46:14 oaky could be the name of a tree-based lang 17:46:18 It gets worse; the number 4, for instance, was the string :::***, which is the fourth Church numeral if interpreted as an Underload or Overload program: 17:46:19 heh 17:46:20 hohoo 17:46:24 i have an idea 17:46:38 !ul ((*)S):::***^ 17:46:41 **** 17:46:59 how does this tree-based language work, then? 17:47:05 it 17:47:09 hmm 17:47:12 actually 17:47:19 i have overlapping ideas 17:47:38 i should really make a lang for every idea i get, since they kinda stack up 17:48:05 Overload was invented as a language for writing esolang interpreters in 17:48:19 You can compile both Unlambda and Befunge into it, I think 17:48:30 and because I haven't finished the specification yet, I can just change it until you can 17:48:44 how convenient :D 17:49:03 ah, a lang with self-modification and support for most esolang features 17:49:22 that's easy 17:49:31 The shortest possible quine, apart from the null quine, works by reading the program source and printing it out 17:49:39 It's only three characters long 17:49:47 10 LIST 17:49:54 Q 17:50:07 that's a cheating quine 17:50:11 Q is not 17:50:13 i think 17:50:23 oh it is yeah 17:50:25 indeed 17:50:44 Shortest possible in the language 17:50:45 i thought Q was defined to not cheat :) 17:51:16 just like X is defined to make the language Turing-complete 17:51:19 without saying how? 17:51:22 that would be rather hard to achieve. 17:51:43 It wouldn't be the first time that an esolang was impossible to implement 17:51:45 heh, who came up with the X 17:51:51 oerjan? 17:52:00 i implemented it at least. 17:52:00 IIRC Homespring had a clause to make it uninterpretable 17:52:11 " . " was defined to cause a temporal paradox 17:52:23 oklopol: sup? 17:52:34 nooga: all ot it 17:52:39 *of 17:52:41 oerjan: implemented X? 17:52:47 you have? :) 17:53:02 I think his interpreter added a random number to each character of the program 17:53:05 and then ran it as Perl 17:53:15 xD 17:53:20 yep that's mine. 17:53:23 oh wow, somebody wrote a Fugue compiler 17:53:51 It seems to run on my Hello, World program, but I can't run the output on the computer I'm on 17:54:08 It certainly compiled it into English well enough 17:54:15 and i'm trying to design MACRO SADOL and then write a raytracer in it 17:54:18 So I suppose it could be a Fugue to IRP compiler if needed 17:54:24 ais523: you wrote it? 17:54:44 I didn't write the compiler, just the only Fugue programs I've ever come across 17:55:21 oh wow, that's a nice hello world 17:55:28 The Fugue compiler writer goes by the username of Mrosenau on the wiki 17:55:41 does it compile to Prelude? 17:56:22 Strangely, no. (That's impossible to do exactly, because Fugue can push numbers greater than 9, but obviously there's a fix around that.) 17:56:32 oh, true 17:56:58 But there isn't a Fugue-to-Prelude compiler in there at all, just to Fugue-to-COFF and Fugue-to-pseudo-English 17:57:16 heh 17:57:52 strange, i remember putting example Prelude programs somewhere and now can't find them 17:58:24 g 17:58:26 eh 17:59:16 I wrote a BF-to-Prelude compiler: http://esolangs.org/files/prelude/util/bf2pre.c 17:59:29 It was the first step in creating the Hello, World! program 18:01:15 i remember there was a fairly pretty fibonacci Prelude program using three voices... 18:02:26 i wonder how it sounds 18:02:57 cause two voices is borign :) 18:03:41 what's the term for haskell 'f . g' or 'o' in math 18:03:41 ? 18:03:51 composition 18:03:57 thanks 18:04:20 is there a name for the actual sign? (composition fits though) 18:04:31 or is it the composition sign or smth 18:04:46 it's 'ball' in finnish :PP 18:04:53 http://en.wikipedia.org/wiki/Function_composition 18:04:56 says it's "circle" 18:05:07 oki 18:05:13 http://en.wikipedia.org/wiki/Composition_operator 18:05:33 'operator "o"' 18:05:39 what a great name 18:06:09 It's * in Underload 18:06:29 because composing functions is the same as multiplying numbers: 18:06:53 !ul (::**)(::**)*((+)S)~*^ 18:06:55 + 18:07:04 Fugue needs a composition operator :) 18:07:07 um... 18:07:27 it would...compose 18:07:28 !ul (::**)(::**)*((+)S)~^^ 18:07:32 +++++++++ 18:08:26 ::** is 3, so multiplying two of them gives 9 +'s 18:09:26 Composition in Fugue would be like the CREATE operator in CLC-INTERCAL, though 18:09:49 it would generate new syntax, but the syntax for using it itself would therefore have to be too complicated to be useful 18:11:20 By the way, the burning questions in Prelude design must be answered: exactly which way does - subtract? 18:11:41 -!- nazgjunk has joined. 18:12:13 (So far it's mostly been assumed, at least by me and the defaults in the compiler, that it subtracts the top element from the second.) 18:13:13 eh, whatever the interpreter does 18:13:26 probably the top from the second since that would make sense 18:14:06 U 18:15:49 elif i == '-': 18:15:49 18:15:49 b = stacks[voice].pop() 18:15:49 a = stacks[voice].pop() 18:15:50 stacks[voice].push(a-b) 18:16:51 nooga: a predecessor to V? 18:17:12 okay, i will update the specification and the wiki article 18:17:19 :-P 18:17:24 wtf is V? 18:17:38 http://esolangs.org/wiki/V 18:17:47 lament: Was that you redirecting your name to your user page on the wiki? 18:18:17 yes 18:18:36 having two pages is bizarre 18:21:25 -!- crathman has joined. 18:24:00 well, redirecting to user pages is against policy, graue is pretty strongly against it. 18:24:29 See Esolang_talk:Authors 18:24:29 oh, jeez 18:26:04 http://esoteric.voxelperfect.net/wiki/Nikita_Ayzikovsky 18:26:44 What do you think of the way I've fixed it? 18:27:20 i think graue's on crack 18:27:29 A small amount of information on the wiki page, and a link to the userpage 18:27:35 and i think having _two_ pages about me is a little extreme 18:27:39 Compare http://esolangs.org/wiki/Catatonic_Porpoise 18:27:46 and http://esolangs.org/wiki/User:Graue 18:27:59 yes 18:28:07 two pages, containing the same information 18:28:20 but probably written by different people 18:28:34 okay, i'll redirect User:Lament TO nikita aizikovsky then :) 18:28:58 I think the point is that we can have a page http://esolangs.org/wiki/Donald_R._Woods 18:29:04 even though he doesn't contribute 18:29:30 eh 18:30:02 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 18:30:03 we still can do that regardless of the policy on userpages 18:30:03 http://esolangs/org/wiki/Esolang:Authors explains what some people believe the current policy to be 18:30:34 -!- oklopol has joined. 18:30:45 (I think I agree with lament on this one, but I'm not able to decide Esolang policy by myself) 18:31:55 * lament tries to think of a nice way out of this 18:33:21 I suppose the major difference is that user pages are treated as personal 18:33:36 whereas pages in the article namespace are treated to the rigors of the wiki process 18:34:08 which is why Graue doesn't want people linking to user pages in an unmarked manner and coming across a non-Neutral Point Of View page 18:34:10 i understand the reasoning 18:34:24 it works for wikipedia 18:34:50 in practice, you end up with two almost identical pages 18:35:22 It could end up with different pages in theory, but what esolang enthusiasts are most likely to put on Esolang is a list of languages they've created 18:35:47 and what people are most likely to write about for a person is a list of languages they've created 18:35:48 i guess somebody like Pressey has enough info about them that it makes sense to actually have a page 18:36:01 but somebody like me dosen't 18:36:32 -!- UpTheDownstair has joined. 18:36:48 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 18:37:16 We could always make up some lies about you being a convicted serial killer :) 18:38:07 but we don't have a {{citation needed}} tag to put on them, so they'd have to be deleted 18:40:46 oerjan: what do you mean lies 18:41:07 heh @ http://www.esolangs.org/wiki/Category:Unusable_for_programming 18:41:10 "Nikita Ayzikovsky": 71 google results, so it might be a bit hard to write an article 18:41:30 "ais523": 10100 google results, mostly sites pretending to be Wikipedia or Google Groups 18:41:50 (Strangely, Esolang is second nowadays, behind my Wikipedia user page; it never used to be like that!) 18:42:09 "lament": about 10300000 google results 18:42:13 mostly irrelevant, of course 18:42:16 all about me 18:43:37 wow, these google results leave a horrible impression :) 18:43:40 * SimonRC goes to dinner 18:44:42 Some more statistics: Did you know that http://esolangs.org is the 1684148th most viewed website on the Internet 18:44:53 impressive 18:45:06 and it's visited by 0.000025% of Internet users? 18:46:21 sounds about right 18:46:52 http://alexa.com/data/details/traffic_details?url=esolangs.org 18:50:24 void ab() {char c; putchar('a'); c=getchar(); if(c=='y') ab(); putchar('b');} 18:50:45 It's a program designed to be easy to implement in most languages, but very difficult to express in UML 18:51:07 how do you express programs in UML? 18:51:19 sorrt, I meant void ab() {char c; putchar('a'); c=getchar(); if(c=='y') ab(); putchar('b'); c=getchar(); if(c=='y') ab();} 18:51:21 i thought uml was for object relationships 18:51:34 It is, but you're meant to use it to model the entire system 18:51:52 i've never seen UML used to model program flow 18:52:16 It has diagrams that model the flow of a program, known as sequence diagranms, that look like they're strictly ordered but in fact only place an incomplete ordering on the program 18:52:38 and people keep trying to change the notation for loops because they don't like the official one 18:52:43 heh 18:53:09 They are written in terms of passing messages around, but you can't send a message to the user 18:53:32 You have to communicate to the user by returning from the message and then waiting for the user to send you another one 18:53:41 oh 18:53:49 -!- SevenInchBread has quit ("haaaaaaaaaa"). 18:53:53 so you'd effectively need to write an interpreter rather than a program to do what I've written above 18:53:58 so add a dummy user object 18:54:21 That doesn't help, because it can't communicate with the user either except by having a message sent to it 18:54:55 and sending messages while there's still methods running is impossible to draw, as far as I know 18:55:04 doesn't that approach fail just as badly with real-world programs as with your example? 18:55:23 As far as I can tell, yes, but there are normally ways to work around it 18:55:53 If you think in terms of a Microsoft-like GUI, where the user tells the system to do something, it does it, and then gives feedback, it actually makes some sort of sense 18:56:28 But it's very easy to get confused and draw an impossibilty with the diagram still seeming to make perfect sense 18:56:59 but even microsoft-like GUIs have state 18:57:26 You're allowed to store state in the objects (in fact, you have to), you just can't communicate with the user while there's anything on the call stack 18:57:48 So a hideously recursive function like mine where the stack is the most sensible place to store data is pretty much worst-case 18:58:24 but isn't "waiting for user input" an extremely common hting to do? 18:59:00 even in a GUI, it happens 18:59:09 sometimes 19:00:02 can you do continuation passing style? 19:00:23 can you model a GOTO? :) 19:00:24 lament: More often than it should, in my experience 19:00:44 oerjan: probably, but it would clutter the diagram awfully 19:01:17 lament: No, you can't. It's kind of tricky to even model an IF in a complicated diagram. 19:02:10 -!- ais523 has quit ("#esoteric made me miss my bus yesterday. It was worth it, though."). 19:02:18 o_O 19:02:44 #esoteric made me kill and eat my little brohter. It was worth it, though! 19:03:12 Yum 19:03:49 of course it was worth it, but what has #esoteric to do with it? 19:05:20 the subliminal messages you keep sending me 19:05:44 (Disclaimer: I have no little brothers.) 19:05:57 that brainwash me into becoming a cruel maniac fratricidal antropophage 19:05:57 Oh those 19:06:30 i have no little brothers, either! 19:06:39 none no more! 19:08:40 There is no such thing as a subliminal message. 19:08:53 The gnomes have made that abundantly clear to me. 19:12:26 And now we return to our regularly scheduled programming. 19:14:26 NOOOO!!! NOT THE REGULARLY SCHEDULED PROGRAMMING!! AAARGH 19:16:15 If you stop whining and behave properly you _may_ be allowed to choose your language. Otherwise, we will be winding up the C***L compiler shortly. 19:18:57 -!- goban has joined. 19:19:12 with a random number that is not turing complete 19:19:20 i mean the X thing 19:19:24 oerjan 19:20:21 you will have to make all the 256 programs at once and i'm sure perl isn't flexible enough to allow any of the 256 chars 19:20:35 did you read my wiki post a moment ago? 19:20:42 errrr no :P 19:39:16 -!- UpTheDownstair has changed nick to nazgjunk. 19:45:22 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 19:45:26 -!- oerjan has quit ("Good night"). 20:09:53 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 20:09:54 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 20:09:54 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 20:09:54 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 20:15:37 -!- pgimeno has joined. 20:15:37 -!- Sukoshi has joined. 20:15:37 -!- GregorR has joined. 20:15:37 -!- EgoBot has joined. 21:37:15 -!- Sgeo has joined. 21:41:45 -!- meatmanek has quit (Read error: 54 (Connection reset by peer)). 21:43:24 -!- meatmanek has joined. 21:47:55 -!- ShadowHntr has joined. 22:06:41 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:31:24 -!- sebbu2 has joined. 22:33:04 foo 22:50:41 -!- sebbu has quit (Connection timed out). 23:10:17 -!- digital_me has joined. 23:13:21 -!- sebbu2 has quit (Client Quit). 23:14:17 -!- digital_me has quit (Client Quit). 23:14:37 -!- digital_me has joined. 23:51:22 -!- ShadowHntr has quit ("End of line."). 2007-02-23: 00:05:32 -!- SevenInchBread has joined. 00:06:33 -!- nazgjunk has quit ("Bi-la Kaifa"). 00:13:36 -!- nazgjunk has joined. 00:24:37 -!- digital_me has quit ("Lost terminal"). 00:25:09 ``smart quotes'' 00:26:50 -!- digital_me has joined. 00:32:42 -!- digital_me has quit ("Lost terminal"). 00:34:27 -!- goban has quit (Read error: 104 (Connection reset by peer)). 00:34:49 -!- goban has joined. 00:41:24 -!- digital_me has joined. 00:41:53 -!- digital_me has quit (Client Quit). 01:00:29 -!- Shaunaf has joined. 01:19:13 -!- nazgjunk has quit ("Bi-la Kaifa"). 01:21:58 bsmntbombdood: ITYM "dumb quotes" 01:22:10 They fuck up everything non-microsoft 01:22:25 I know 01:22:27 they suck 01:23:09 In LaTeX/TeX, that syntax makes them look good 01:24:19 Argh! 01:24:29 * SimonRC curses time-decay. 01:25:04 wazzat? 01:25:06 It was not until modern times that time-decay has become detectable, but it is really irritating when you encounter it. 01:25:28 It is the way that time starts to slightly decay as it gets futher into the pase. 01:25:31 *past 01:25:37 huh? 01:25:49 It was not noticeable until electronic media came around. 01:26:24 I am reading posts from the early days of a certain newsgroup (around 1994) and I keep seeing replies written few hours before the things they reply to. 01:27:08 !? 01:27:11 Huh? 01:28:40 Hint: What is the real cause of the noted Usenet phenomenon? 01:35:37 badly set clocks? 01:37:02 no. 01:37:40 Google's older archives come from disparate sources. And these would have received the original messages in a different order to one another. 01:40:01 I was joking about the time decay 01:42:00 i was gonna say... 01:42:18 I googled time decay and I got a bunch of stuff about stocks 01:42:18 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 01:44:56 bsmntbombdood: I nicked the ide but not the name from The Brightonimicon. 01:45:40 -!- oklopol has joined. 03:23:46 fun, there's a band called "Esoteric" 03:24:28 -!- ShadowHntr has joined. 04:12:38 zzzz 04:18:55 -!- Sukoshi has quit (Remote closed the connection). 05:41:06 -!- Sukoshi has joined. 06:36:42 -!- helios24 has joined. 06:57:55 -!- ShadowHntr has quit (Client Quit). 07:09:35 -!- pjd has joined. 07:29:42 YEAH!!! 07:30:28 my noname-lame-language to SADOL2 compiler works !!1 07:32:56 kix ass 07:37:30 http://pastebin.ca/368682 07:37:34 LOOK 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:06:34 No. 08:29:34 nooga, what is that? 08:58:42 -!- SevenInchBread has quit ("haaaaaaaaaa"). 09:02:42 -!- Sgeo has quit ("Leaving"). 09:20:35 ?taht si tahw ,agoon 09:45:05 "[21:16:24] did you read my wiki post a moment ago?" <<< where can this be read, i don't know how the page works :D 10:07:02 -!- helios24 has quit ("Leaving"). 10:32:03 -!- oerjan has joined. 10:37:05 oklopol: http://esoteric.voxelperfect.net/wiki/Talk:CHIQRSX9_Plus 10:37:29 and in general, http://esoteric.voxelperfect.net/wiki/Special:Recentchanges 10:40:36 substitute esolangs.org for the host name if that is what you are reading it as, reading it through two different hostnames leads to a strange reading experience. 10:41:52 i mean, try to pick one of the otherwise equivalent hostnames. 10:43:04 heii 10:43:07 * oerjan has come down with something infectious, so he may not think especially clearly today. 10:43:12 hei nooga 10:44:14 i've got my lame-noname-language to SADOL2 compiler 10:44:20 working 10:44:43 i saw that 10:45:26 i used 3 hours yesterday to get vc++6 to open a file 10:45:32 some day i'll find a better compiler 10:45:39 ;p 10:46:16 fstream rec=fstream("D:\\smth.rec"); 10:46:17 g++ 10:46:45 it's just i need to be able to draw pixels on the screen, i only know one way to do that and it's sdl 10:46:50 and i can 10:46:53 ... 10:46:59 is that supposed to be a recursive definition somehow? 10:47:01 and i can't set up librarys, too hard 10:47:10 oerjan it's a constructor :P 10:47:19 oklopol lol 10:47:22 fstream(...) creates an fstream object 10:47:35 use g++ 10:47:51 yes it was the rec i was wondering about 10:48:32 it's a var name 10:48:57 fstream var creates an fstream object, if you assign the constructor to it, it'll become it 10:49:07 and i'm explaining very well again... 10:49:19 maybe it'd be clearer in java 10:49:25 impossible 10:49:31 Fstream rec = new Fstream("D:\\smth.rec"); 10:49:37 Isn't that usually "fstream rec("d:\\smth.rec")" to avoid creating a silly temporary? 10:49:52 fizzie yeah 10:50:04 hmm, actually, you're right :D 10:50:08 you can't assign stream 10:50:09 *s 10:50:10 eh 10:50:20 okay, might actually be my mistake then 10:50:21 throw away 'new' 10:50:23 use malloc 10:50:29 nooga that was java 10:50:36 no matter 10:50:38 kill java 10:50:39 :D 10:50:39 use C 10:50:53 * nooga is just bored 10:50:53 gotta go! ---------> 10:51:06 no, use raw casts to (void*) from integer constants. 10:51:19 c u 10:51:47 bye 10:51:53 waaa 113 shift-reduce conflicts ;/ 10:53:18 what language are you parsing? 10:53:28 lame-noname 10:54:00 can i see the grammar? 10:54:12 no, i'm in school ;| 10:54:32 oh 10:54:43 i have it in home 10:54:57 well are you having many binary operators? then you need to assign precedences. 10:55:59 i have precedences ;p 10:56:12 then that's probably bad. 10:56:17 yeah 10:56:54 everything is in exp rule 10:57:31 and there are things like exp '[' exp ']' 10:59:04 i guess then both '[' and the rule itself (or ']') needs a precedence 11:00:22 hm, or not. 11:00:40 i'll fix that later 11:01:12 basically only user is me 11:01:32 so there's even no error reporting ;> 11:01:50 basically that's usually the case. 11:02:58 heh 11:03:07 g2g 11:03:09 bbl 11:03:12 bye 11:08:10 -!- nazgjunk has joined. 11:19:16 -!- pjd has left (?). 11:25:22 -!- Sgeo has joined. 11:30:27 -!- goban has quit (Read error: 101 (Network is unreachable)). 11:55:25 -!- goban has joined. 12:16:26 -!- helios24 has joined. 12:19:50 -!- oerjan has quit ("Ayee! The pain!"). 12:23:06 -!- nooga has quit (Read error: 110 (Connection timed out)). 12:54:06 -!- Shaunaf has quit (Read error: 60 (Operation timed out)). 12:58:09 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 12:58:49 -!- nazgjunk has joined. 13:18:46 -!- helios24 has quit ("Leaving"). 13:56:00 -!- Shaunaf has joined. 14:21:52 -!- nooga has joined. 14:21:56 back 14:31:10 eh 14:53:23 -!- oerjan has joined. 14:54:26 http://pastebin.ca/369022 xD 14:56:01 is that <...> some kind of inline SADOL assembler? 14:56:25 <% xxx %> outputs xxx literally 14:56:36 so yes 14:56:40 mhm 14:57:41 i plan to write a raytracer in this shit 14:59:31 are you still getting shift/reduce errors? 15:00:17 it looks to me a bit like a cross between perl and python 15:00:46 mostly python i guess 15:02:09 well i don't see anything in that syntax that should mean it is hard to parse. 15:02:43 well 15:02:46 w8 15:03:58 http://pastebin.ca/369031 it's really lame 15:04:10 i did it last night when my mind was gone ;p 15:06:57 ;p 15:09:51 is '^' exponentiation? then it may be better to have it right associate 15:10:45 -!- UpTheDownstair has joined. 15:11:31 ah, your if is dangling :) 15:11:32 nevermind 15:11:45 or else 15:11:48 it works ;d 15:12:02 well it would shift by default 15:12:18 which is often the right thing. 15:12:34 hm 15:12:42 greedy parsing :) 15:13:53 so what :D 15:14:17 it works somehow, so nevermind 15:16:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:19:30 i don't know why e/e does not work 15:21:26 since i minded anyhow: i don't see any rule where the default precedence would be grossly unintuitive. 15:21:54 maybe there is a SADOL error? 15:21:58 nah 15:23:18 http://pastebin.ca/369057 15:23:56 it's a strange error 15:24:22 oh. so it's the parser. 15:24:31 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 15:25:17 hm 15:25:25 compiled again and it suddenly works ;> 15:25:33 bah :) 15:25:58 mismatched file versions, perhaps. 15:26:24 if you are not using make. 15:27:23 yea, it could be the reason 15:27:30 i've got quite a mess 15:29:55 now i can write a raytracer 15:30:50 hm, i think it would be useful to indent generated code instead of printing it as one big line 15:34:19 I am cleaning up the SADOL web page a little. What is your answer to: 15:34:29 * ''Code'' is a list of ''function calls''. 15:35:19 hmm 15:35:30 is it like i suspect that they aren't? :) 15:35:36 they aren't 15:36:00 because we know that all identifiers are 1 char long 15:36:24 and we now how many arguments to pass every time we call a func 15:37:06 right. the latter is the same as with my Reaper (and the non-esoteric Logo, I think) 15:38:13 a45b67c3123 {a(4,5); b(6,7); c<3>(1,2,3) c<3> means that c will take 3 args } 15:40:07 oh, not quite the same then. 15:41:03 why don't a and b need an ? Is it used only for currying? 15:42:10 well a sort of 15:42:38 arities of a and b are known to be 2 15:43:20 bcs a and b were defined to take 2 args 15:43:30 right. 15:43:59 and c was definefined to take unknown count of arguments, and that count must be specified when calling c 15:44:10 ok 15:44:29 so not currying. 15:45:07 SADOL is not functional in a traditional way 15:45:34 or maybe it's not functional at all 15:46:01 I like to call it 'expression oriented' 15:47:13 can you pass functions as arguments or return them as results? 15:48:05 If it cannot do those, I wouldn't call it functional. 15:48:18 it was included in my spec 15:48:29 but implementation does not cover it 15:48:40 ok 15:48:46 so it's rather imperative but functional wannabe ;p 15:50:51 hehe 15:51:14 suprisingly it's quite nice to code in it 15:53:05 It's sort of like compressed Logo. 15:53:28 well 15:53:32 i hate logo :D 15:54:30 and u can't do such things in logo -> (7:C",228!R!C!"7822,"R:!R!"9822,"C:7(:R",228(7:C",2289"!R!:R",2287"!C!RR!C!"7822,"R:!R!"9822,"C:7( 15:54:49 eh, i guess not. 15:55:09 although i wouldn't know if that extends to more than the syntax. 15:56:21 number -> string conversion, is that like the usual decimal format? 15:56:47 yup 15:57:12 what do u mean more than the syntax? 15:58:44 i mean i cannot read it and so i don't know whether it could be translated easily to Logo or not. 15:59:03 it's a reversed quine 15:59:13 aha 15:59:29 a program that writes out itself but from the end to the begining 15:59:31 i guess that could be difficult in Logo. 16:00:27 it looks almost like a palindrome 16:00:43 but not quite 16:00:52 can the reversed program be run? 16:01:25 never checked :D 16:01:41 what would be cool is if that produced the original program. 16:02:15 i think it could not be run 16:03:03 the end: 9822,"C:7( will be printed as: (7:C",2298 16:03:30 ,2 indicates that there will be 2 args, and these are 2 and 9 16:03:39 8 is not parsed 16:27:51 g2g 16:27:51 bye 16:28:11 bye 16:47:04 -!- oerjan has quit ("Indeed"). 16:53:24 -!- nooga has quit (Read error: 110 (Connection timed out)). 17:12:00 -!- Arrogant has joined. 17:23:18 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:23:26 -!- goban has joined. 17:41:40 -!- sebbu has joined. 18:33:54 Newsquiz FTW! 18:35:17 rarar 18:35:26 zipip 18:44:15 Nonono, _The Newsquiz_ is great comedy from Radio 4. 18:44:24 And it's on now. 18:55:45 i don't think either of us actually meant anything, so "nonono" isn't really accurate :P 19:28:55 -!- goban has quit (Read error: 104 (Connection reset by peer)). 19:29:08 -!- goban has joined. 19:45:02 -!- SevenInchBread has joined. 20:00:52 * SimonRC has the musical of the Very Hungry Catterpillar stuck in his head. 20:02:47 SDL crashes if the exe is given arguments :) 20:02:52 in my compilations that is 20:09:02 -!- sp3tt has quit (Remote closed the connection). 20:09:22 -!- sebbu2 has joined. 20:14:35 -!- sp3tt has joined. 20:17:44 bye 20:18:09 bye 20:28:21 -!- sebbu has quit (Read error: 110 (Connection timed out)). 20:28:21 -!- sebbu2 has changed nick to sebbu. 21:29:10 -!- nazgjunk has joined. 21:29:23 hmmm... 21:29:34 I think I'll use Ogham runes as the preprocessor directives. 21:29:57 and the entire unihan plane will be subroutine names. 21:38:31 Que'? 21:40:34 SevenInchBread, yeah! 21:40:36 ogham is fun. 21:40:43 i only write futhark though. 21:41:07 fiuthark to you too 21:42:57 hmm... 21:43:16 I need one really special character for something... 21:45:20 ah. 21:45:26 U+16E5 21:45:34 ᛥ <--stan 21:46:26 stan shall represent the coroutines main IO stream. :) 21:47:42 Alas I do not seem to have a font with U+16E5 in it. 21:47:59 It 21:48:00 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:48:02 's some room 21:48:05 er... rune 21:48:17 -!- goban has joined. 21:48:17 It kinda looks like a block... with a hole in it. 21:48:25 -!- UpTheDownstair has joined. 21:48:43 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:49:24 ᛥ 21:49:28 woo. 21:49:32 -!- UpTheDownstair has changed nick to nazgjunk. 21:53:04 * SevenInchBread does not actually know how to produce that character... other than by copying and pasting it. 22:00:01 lol 22:00:35 don't you have a hex mode in your client? 22:01:33 i can do it by holding shift+ctrl and type u16E5 22:01:37 *typing 22:06:25 -!- SimonRC_ has joined. 22:06:44 hmm 22:06:49 éfi 22:06:54 well that works fine 22:06:59 éfi 22:07:09 but this looks wrong 22:07:18 it seems something about irssi is not quite right 22:07:28 they both look the same in each window 22:07:44 this one shows individual characters, but 22:07:59 this one shows the proper appearance 22:08:24 hm 22:09:00 I'd rather just have some kind of syntax for typing them in directly. 22:09:05 hmm 22:09:13 like 22:10:24 alright... I've got malaysian characters for process streams... stan for the current processes main IO... malaysian for file/url streams... now what about stream sockets? 22:10:44 datagram sockets can be like... dingbats or something. 22:10:52 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:11:03 -!- goban has joined. 22:11:31 -!- SimonRC_ has left (?). 22:11:39 :-S 22:12:53 "stan" 22:12:54 lovely. 22:13:43 yeah... this is a concurrent fungeoid with a bunch of streams and processes. 22:15:12 you define "counters" (big or little), that move across paths... when a counter hits an intersection it splits off into multiple counters with the contained values copied from the original. 22:15:29 collisions between countrs are operations. 22:16:48 wow creepy. 22:17:27 that sounds a small bit like a Piet-variant i discussed with... you? few weeks ago, anyway. 22:17:51 well.. not counters... that's a lame name. 22:17:54 we'll call them bugs. 22:18:12 big bugs and little bugs.. crawling through tunnels... and... asexually reproducing? 22:18:14 I dunno. 22:18:20 terminology is for wimps. 22:18:46 haha 22:19:22 you'd have to think out a new universe, and use metaphors from there in the terminology 22:19:33 The bugs are indecisive when they reach an intersection in the tunnels... so instead of choosing one, they just clone themselves and go down all the paths. 22:20:59 hmmm... there should be a file format for images that uses the full x-million-something character ordinals of unicode to map pixel info. 22:21:29 hah 22:23:30 hmm... the interpreters debugger should be a GUI that draws the little bugs going down paths... would be fun to watch. 22:26:35 -!- alex-4 has quit ("leaving"). 22:31:10 :-S 22:31:55 1+2+3.1 22:32:08 6.099999999999999998 22:32:26 6.0999999999999996 22:32:45 your rounding errors are worse than mine, it seems 22:33:13 6.344444444444444444444 22:33:16 wow, way off 22:33:17 :P 22:35:03 (number? +nan.0) => #t annoys me every time I think of it. It's Not A Number, yet it is a number. Arrr, the humanity. 22:35:11 heh 22:35:40 True in languages is in fact an illusion. 22:35:45 there is no truth... merely untruth. 22:35:54 there is no false, merely unfalse 22:36:21 There is no nil, merely unanything 22:37:32 is that so? 22:38:59 unfalse 22:40:16 -!- tgwizard has joined. 22:47:00 -!- crathman has joined. 22:57:01 tiz 22:57:07 naz 22:57:19 guh. 22:57:22 ? 22:57:30 naz gunk 23:04:19 I think 23:04:29 I shall use only datagram sockets. 23:04:39 and restrict access to stream sockets in this language. 23:19:42 -!- Arrogant has quit (Read error: 113 (No route to host)). 23:21:30 raw sockets ftw 23:25:28 alrighty... 23:25:40 raw sockets should go under.... 23:26:02 Glagolithic character set? 23:28:47 i don't know what that is. 23:28:54 Ethiopic it is. 23:29:01 for raw sockets. 23:30:22 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]"). 23:41:37 -!- digital_me has joined. 23:43:28 -!- Arrogant has joined. 23:51:15 -!- UpTheDownstair has joined. 23:52:14 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:54:04 -!- UpTheDownstair has changed nick to nazgjunk. 23:58:17 -!- sebbu has quit ("@+"). 2007-02-24: 00:15:20 omg 00:15:24 donuts 00:19:57 the peeple tell me to due bad things 00:25:10 *BOGGLE* http://www.mixedtraffic.net/images/funnies/14067.jpg 01:01:05 yay! got the esopage up! ...but I'm too lazy to type out all the specification 01:15:20 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 01:15:51 -!- nazgjunk has joined. 01:18:34 Scandalous. http://esolangs.org/wiki/BugSophia 01:20:53 -!- nazgjunk has quit ("Bi-la Kaifa"). 01:25:09 * SevenInchBread likes (well-implemented) concurrency. 01:48:16 -!- Arrogant has quit ("Leaving"). 01:52:29 -!- nazgjunk has joined. 01:52:37 ...hmmm... I should equip egobot with a befunge that can read multiline befunge programs. 01:54:14 say !befunge-start command on one line, then put the rest of the program in subsequent lines... and then end with a !befunge-end line. 01:54:25 the bot would just read everything you say. 01:54:34 until !befunge-end 02:00:09 -!- SevenInchBread has quit ("haaaaaaaaaa"). 02:01:54 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 02:02:18 -!- nazgjunk has joined. 02:09:29 -!- SevenInchBread has joined. 02:13:52 hmmm.. 02:14:03 I wonder if you could take advantage of swapping two values in an esolang. 02:14:07 like... 02:14:22 that was the original idea I had for an infinitely visible BF. 02:14:48 if you swap two values with the same value... the net effect is a NOP... 02:14:53 you can use that as a conditional of some sort. 02:23:07 -!- SevenInchBread has quit (Remote closed the connection). 02:27:34 -!- nazgjunk has changed nick to na[zZz]gjunk. 02:36:00 -!- ihope has joined. 02:36:17 HAI IM GREGORR I LIVE IN OREGON AND I WORK FOR INTEL >_O 02:43:49 -!- SevenInchBread has joined. 02:49:09 -!- tgwizard has quit (Remote closed the connection). 02:51:37 -!- nazgjunk has joined. 02:51:38 -!- na[zZz]gjunk has quit (Read error: 104 (Connection reset by peer)). 02:53:11 -!- nazgjunk has changed nick to na[zZz]gjunk. 03:06:32 -!- nazgjunk has joined. 03:06:33 -!- na[zZz]gjunk has quit (Read error: 104 (Connection reset by peer)). 03:07:18 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 03:47:22 ~exec self.ihope = IRCbot("80.32.164.76", "Python", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen() 04:01:12 HAI IHOPE 04:01:26 Hello! 04:01:33 I'm struggling with bsmnt_bot! 04:01:39 why? 04:01:54 Because it isn't working like I want it to and I don't know what to do. 04:02:06 wai? 04:02:45 How do I make the bot execute everything it receives in a PRIVMSG? 04:03:08 exec_chans = ["\S+"] 04:03:39 That won't only execute stuff with an #exec? 04:03:45 replace ["#lobby"] with ["\S+"] 04:03:48 oh, right 04:03:49 Then again, that's what I wanted to do anyway :-P 04:03:57 ...Or not. 04:04:07 well 04:04:09 Um, yeah, so how does it work? 04:04:14 you add a callback to do it 04:05:34 with a regex like r"\S+ PRIVMSG ([^#]\S+) :(.*)" 04:06:09 #exec self.register_raw(r"\S+ PRIVMSG ([^#]\S+) :(.*)", blah)? 04:06:19 yeah 04:06:29 * ihope ponders disconnecting without warning 04:06:39 and call do_exec in your callback 04:06:40 So what would blah be? do_exec? 04:06:47 no 04:07:12 actually, yeah 04:07:54 It's not doing anything. 04:08:05 Hmm... 04:08:40 how do you know? 04:16:31 -!- bsmntbombdood has left (?). 04:16:40 -!- bsmntbombdood has joined. 04:17:43 ~quit 04:17:44 -!- bsmnt_bot has quit. 04:17:48 -!- bsmnt_bot has joined. 04:33:16 -!- ihope has quit (Read error: 110 (Connection timed out)). 05:34:47 -!- digital_me has quit ("Lost terminal"). 05:41:39 -!- digital_me has joined. 05:50:05 -!- pgimeno has quit (Connection reset by peer). 05:50:11 -!- pgimeno_ has joined. 05:50:30 -!- pgimeno_ has changed nick to pgimeno. 06:22:02 zzzzz 06:33:31 -!- digital_me has quit ("Lost terminal"). 06:54:34 -!- oerjan has joined. 07:15:05 hi 07:15:10 ho 07:16:34 -!- anonfunc has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:00:21 -!- sgeo_ has joined. 08:33:37 -!- helios24 has joined. 09:50:10 -!- Sgeo has quit (SendQ exceeded). 10:10:11 haha i just invented lazy evaluation :D 10:10:41 next: fire or the wheel? :) 10:10:48 or maybe sliced bread 10:11:30 thought i should invent a way to use map so that it only needed to evaluate as the values are actually needed... then i had this incredible idea of generalizing this so that NOTHING is done unless needed... 10:12:07 why how absurd. 10:12:13 i wish i'd born in the fifties 10:13:36 do you read Lambda the Ultimate? There was a recent thread on "the golden age" of the sixties and seventies. 10:13:47 nope, what's it? 10:13:57 sounds something i'd like to read 10:14:00 *like 10:14:14 it's a weblog about programming languages, at http://lambda-the-ultimate.org/ 10:15:27 it is often very high-level, though. 10:15:33 -!- sebbu has joined. 10:16:05 high-level? 10:16:05 they encourage links to research articles and the like. 10:16:13 oh 10:16:21 you mean i wouldn't understand it? 10:17:13 well maybe not all of it, but there is somewhat lighter fare on its "discussion forum" 10:18:19 which actually is the majority of threads. 10:18:22 where can i see an article list there? 10:18:29 or how does it work? 10:18:34 i'm not that practical 10:18:45 oh 10:18:59 the front page changes daily and contains the link to the article? 10:19:16 complicated 10:19:38 too much text and links, there should just be a big button 10:19:42 changes immediately with a new main topic, i guess. 10:19:43 in the middle 10:19:56 huh? 10:20:08 a link to the article of the day :D 10:20:20 i get dizzy when there's so much links 10:20:28 i figured it now though 10:20:34 there can be more than one article, and there are several editors. 10:21:16 since i follow it every day, i like to read it from the Recent Posts subpage. Logging in helps then since new articles are marked. 10:21:33 *articles and comments 10:22:19 besides the main page doesn't contain the forum topics. 10:24:40 btw the topic i mentioned at the start is first on the next page. 10:31:47 i understand the article they have now 10:32:37 i think i might start reading daily, i like reading junk, usually just randomly search for that kind of stuff 10:32:53 heh 10:33:28 i happen to know erlang and actors quite well though 10:33:48 but maybe i know everything, i don't know what i don't know 10:33:56 i don't know cobol though, i wanna know it 10:34:03 i'll go now- -- - - -> 10:34:08 time is scarce! 10:34:09 shhh :) 10:34:31 you shut up! 10:36:47 -!- nazgjunk has joined. 10:45:34 -!- kxspxr has joined. 11:37:18 -!- oerjan has quit ("leaving"). 11:40:08 -!- tgwizard has joined. 11:53:08 -!- nazgjunk has changed nick to timonator`. 11:53:18 -!- timonator` has changed nick to nazgjunk. 12:13:50 -!- ihope has joined. 12:14:13 -!- ihope has quit (Client Quit). 13:11:58 -!- anonfunc has quit. 13:25:25 -!- alex89ru has joined. 14:04:09 -!- goban has quit (Remote closed the connection). 14:04:28 -!- goban has joined. 14:10:01 -!- alex89ru has quit (Remote closed the connection). 14:13:26 -!- tokigun has quit (Read error: 110 (Connection timed out)). 15:04:06 -!- goban has quit (Read error: 104 (Connection reset by peer)). 15:04:18 -!- goban has joined. 15:25:55 -!- UpTheDownstair has joined. 15:25:55 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:29:48 -!- oerjan has joined. 15:30:56 what is the word for an explanation why something might be worth considering? 15:40:14 *sigh* i'll try with "rationale" 15:55:44 "because" ;) 15:55:59 wrong word class, sorry. 15:56:19 just joking 15:56:21 anyway it was just for an edit summary 15:56:29 i figured 16:20:07 -!- goban has quit (Remote closed the connection). 16:20:40 -!- goban has joined. 16:25:48 -!- digital_me has joined. 16:30:33 -!- goban has quit (Read error: 104 (Connection reset by peer)). 16:30:49 -!- goban has joined. 17:05:05 -!- Sukoshi has quit (Read error: 104 (Connection reset by peer)). 17:19:13 -!- UpTheDownstair has changed nick to nazgjunk. 17:21:33 -!- sgeo_ has changed nick to Sgeo. 17:23:50 -!- goban has quit (Read error: 104 (Connection reset by peer)). 17:28:36 -!- goban has joined. 17:34:24 -!- wooby has joined. 18:03:53 -!- Sukoshi has joined. 18:41:03 nothing wrong with research papers 18:41:23 ha 18:41:26 "Lowering: A Static Optimization Technique for Transparent Functional Reactivity" 18:41:59 SevenInchBread: http://doi.acm.org/10.1145/142137.142162 18:42:24 "02:11 < SevenInchBread> I wonder if you could take advantage of swapping two values in an esolang." 18:42:51 side effects ftl 18:42:58 um, he has heard of Smetana, hasn't he? :) 18:43:18 and Smatiny 18:43:24 bah! 18:43:37 my ski reducer won't quit when I tell it o 18:44:31 how are you telling it to quit? 18:44:50 by entering the quit command 18:45:37 is it doing threads? 18:45:46 no 18:46:20 oooh i should put it in bsmntbombdood 18:46:26 bot 18:47:22 ~exec import ski_repl 18:47:26 oops 18:47:54 hmm 18:48:02 hopefully you are not using print in it. 18:48:13 i need to fix it a little 18:48:33 or you would hit the stdout problem :) 18:49:01 ~exec import ski_repl 18:49:11 ~exec sys.stdout(ski_repl) 18:49:19 ... 18:49:21 18:49:25 bout time 18:49:40 ~exec sys.stdout(ski_repl.parse("```Sxyz") 18:49:54 ~exec sys.stdout(ski_repl.parse("```Sxyz")) 18:49:55 [[['S', 'x'], 'y'], 'z'] 18:50:18 If you haven't seen it, read the link I just gave about Linear LISP. 18:50:22 LL Rox! 18:51:08 O(1) copy, O(1) equality testing, EQ is the same as EQUAL, and no GC required! 18:51:51 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2)))))) 18:52:05 argh 18:52:05 And there is no sharing, so you can mutate values as much as you like without worrying about other uses of them. REVERSE == NREVERSE. SORT == NSORT. etc 18:52:29 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 18:52:39 ~ski ```Sxyz 18:52:40 -!- bsmnt_bot has quit (Remote closed the connection). 18:52:44 -!- bsmnt_bot has joined. 18:52:46 ??? 18:53:09 i didn't see any errors anywhere 18:53:11 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 18:53:18 ~ski ``Kxy 18:53:19 -!- bsmnt_bot has quit (Remote closed the connection). 18:53:21 -!- bsmnt_bot has joined. 18:53:28 that time i did 18:53:37 oh 18:53:46 PYTHON CLOSURES ARE BROKEN 18:53:49 I HATE PYTHON 18:54:07 Use Haskell then. 18:54:11 ~exec globals()["ski_repl"] = __import__("ski_repl") 18:54:19 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 18:54:24 ouch 18:54:27 ~ski ``Kxy 18:54:27 x 18:54:30 bout time 18:54:37 ~ski ```Sxyz 18:54:38 ``xz`yz 18:54:40 guten 18:54:42 ~ski ``sii``sii 18:54:42 ``sii 18:54:50 ~ski ```sii``sii 18:54:50 ```sii``sii 18:54:57 yep 18:55:08 eh... 18:55:15 ~ski ```SII``SII 18:55:15 ```SII``SII 18:55:25 sometimes it leaves things partially unreduced though 18:55:37 how ... convenient 18:55:48 ~ski ``K``Kxyz 18:55:49 x 18:56:29 * SimonRC tries to remember what the simple infinite loop is. 18:56:39 that's the one i did 18:56:42 SimonRC: ```SII``SII 18:56:57 for example: 18:57:04 ~ski ````S`KKIxy 18:57:05 ``Kxy 18:57:07 :/ 18:58:01 so it is not actually _meant_ to stop prematurely? 18:58:12 -!- kxspxr has quit. 18:58:12 i dunno 18:58:38 don't think there's a way not to 18:59:19 eh, it's called "correct implementation" ;) 19:00:20 let me see that code. 19:02:09 http://bsmntbombdood.mooo.com/ski_repl.py 19:02:44 Gargh! What twat at mozilla decided the put the "quit without confirmation" key right next to the "close tab" key. 19:03:18 :D 19:10:16 i think i know a way to fix that simp. 19:10:51 Simplify simp[0] _before_ checking for the test cases. 19:11:13 *t[0] 19:11:45 hmm 19:12:32 brilliant 19:13:31 except, ```SII`SII crashes it 19:13:45 bsmntbombdood: well, duh 19:13:48 why, isn't that the point? ;) 19:13:53 that's a good sign 19:13:57 Then you need to include a resource limit. 19:14:01 indeed you do 19:14:16 keep track of the number of reductions that take place or something 19:14:18 how? 19:14:24 hmmm 19:15:24 well, have a variable that contains the number of applications that have taken place so far, and increase it whenever you do an application 19:16:50 it should be enough to do it for the S case. 19:17:12 since that is the only one that can increase the expression size. 19:17:30 *not decrease 19:19:00 k 19:19:09 $ ```SII``SII 19:19:10 ```SII`I``SII 19:20:33 ~exec reload(ski_repl) 19:20:46 ~ski ```SII``SII 19:20:55 ```SII``SII 19:21:04 bah 19:21:13 ~exec del ski_repl 19:21:43 ~exec globals()["ski_repl"] = __import__("ski_repl") 19:21:54 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 19:22:00 ~ski ```SII``SII 19:22:01 ```SII`I``SII 19:22:01 ```SII`I``SII 19:22:07 there 19:22:14 ~exec self.raw_regex_queue.pop() 19:22:18 ~ski ```SII``SII 19:22:19 ```SII`I``SII 19:22:33 :/ 19:22:41 problem? 19:22:43 ~ski ````S`KKIxy 19:22:44 x 19:22:48 that works 19:23:02 well, ```SII`I``SII isn't all the way simplified 19:23:23 well i take it you have to stop somewhere? 19:23:27 yeah 19:23:32 but the I 19:24:14 what does your new simp return when the resource limit is exceeded? 19:24:22 its argument 19:24:43 and where is that limit checked? 19:24:51 in the S clause 19:25:29 hm... simplify t[1] before returning even in that case. 19:26:06 brilliant 19:26:09 then only S reductions will be avoided, I think. 19:26:40 ~exec globals()["ski_repl"] = __import__("ski_repl") 19:26:46 ~ski ```SII``SII 19:26:47 ```SII`I``SII 19:27:00 ~exec self.raw_regex_queue.pop() 19:27:03 ~exec globals()["ski_repl"] = __import__("ski_repl") 19:27:09 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 19:27:13 ~ski ```SII``SII 19:27:14 ```SII`I``SII 19:27:18 ? 19:28:09 ~exec del ski_repl 19:28:19 ~exec import ski_repl 19:28:34 ~exec reload(ski_repl) 19:28:42 ~exec globals()["ski_repl"] = __import__("ski_repl") 19:28:49 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 19:28:53 ~ski ```SII``SII 19:28:54 ```SII``SII 19:28:54 ```SII``SII 19:29:05 ~exec self.raw_regex_queue.pop() 19:29:06 * oerjan wonders how much of that is actually necessary 19:29:06 finally 19:29:11 me too 19:31:30 globals are looked up every time they are referenced, not? So you should definitely not need to redo the register_raw. 19:32:10 dunno 19:32:23 i'm beggining to hate python's scoping 19:32:50 it's not perfect for functional programming, i take. 19:40:56 -!- jix__ has joined. 19:44:27 ~exec x = 12 19:45:08 ~exec self.register_raw(".*tell me x.*", lambda m: self.raw("PRIVMSG #esoteric :%s" % x)) 19:45:18 tell me x 19:45:18 -!- bsmnt_bot has quit (Remote closed the connection). 19:45:21 -!- bsmnt_bot has joined. 19:45:32 gah 19:45:36 ~exec self.register_raw(".*tell me x.*", lambda m: self.raw("PRIVMSG #esoteric :%s" % x)) 19:45:49 ~exec x = 12 19:46:16 ~exec self.raw_regex_queue[-1][1].func_globals = locals() 19:46:24 wtf 19:46:50 lame 20:09:37 -!- sebbu2 has joined. 20:10:08 -!- jix__ has quit (Read error: 104 (Connection reset by peer)). 20:14:25 -!- kxspxr has joined. 20:15:07 -!- kxspxr has quit (Client Quit). 20:28:37 -!- sebbu has quit (Connection timed out). 20:29:35 ooh, esoteric: http://home.pipeline.com/~hbaker1/sigplannotices/COMFY.TXT 20:32:15 -!- jix__ has joined. 20:38:33 appears to be seriously intended, on first look. If that is Vaughan Pratt mentioned, I think I remember him for writing about "Chu Spaces" as models of linear logic. 20:39:39 although this seems much earlier, if those 60's references are a guide. 20:40:54 On the other hand, you could say it was in the Golden Age, when you could get research funding for being esoteric :) 21:08:29 -!- calamari has joined. 21:28:28 Heeeeeeeeeeeeeeeeeeeeeey calamari, you speak Java ... ^^ 21:29:05 hi GregorR 21:29:19 my Java might be a little rusty now 21:29:23 >_> 21:29:30 <_< 21:29:35 but we can speak JCL if you'd like 21:30:08 JCL? The infamous IBM language? 21:30:13 http://groups.google.com/group/nestedvm/browse_thread/thread/f11cc0b0e9a9b584 < I need sys_select in NestedVM to port Java. 21:30:14 yeah 21:30:15 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:30:16 Erm 21:30:19 To port DirectNet. 21:30:29 But reading that code just makes my head swim :( 21:30:30 -!- goban has joined. 21:33:38 why are you porting a perfectly good c++ program to java? seems rather cruel 21:34:10 I'm taking c++ this semester 21:34:20 pretty neat class 21:37:11 lack of GC sucks 21:37:24 it makes the object's allocation policies into part of its interface 21:38:08 Hah 21:38:14 SimonRC: Blah blah blah don't care. 21:38:23 calamari: I'm just trying to make it usable from Java so I can make an applet of it. 21:38:40 SimonRC: Blah blah blah it's not built in, get yourself Boehm GC and shaddap ^^ 21:39:09 and you're sure you need select? 21:39:23 I don't think I've needed that for any of my java irc stuff 21:39:39 calamari: IRC only had one socket, no? 21:39:47 yes 21:39:54 calamari: DirectNet has X sockets. 21:40:01 calamari: Where X is a number often greater than 1. 21:40:04 and threads is bad? 21:40:22 well, I guess threads don't really scale well 21:40:26 I stopped using threads in DN a long time ago ... and NestedVM doesn't have threads support. 21:40:31 so I see your point 21:41:24 unfortunately my knowledge of nio is nil, sorry 21:41:39 let me look it up tho 21:41:56 I don't want you to go out of your way, I just thought this whole junk may be easier than I thought ;) 21:43:02 or you could write some kind of browser plugin to support c++ programs ;) 21:43:35 then the user would hate you when they go to a site and it wipes their system due to lack of security 21:43:40 so scratch that 21:44:36 :P 21:44:51 GregorR: btw where do you work? 21:45:00 don't say microsoft 21:45:00 At 21:45:02 Segmentation fault 21:45:10 (core dumped) 21:45:18 need a job? 21:45:18 Sorry, tried to dereference a NULL pointer. 21:45:25 Somewhat, not desperately. 21:45:31 graduated? 21:45:33 No 21:45:50 I still have 1.5 years 'til I have an undergrad degree. 21:45:55 IBM has it's embedded Linux operations in Oregon 21:46:11 thought you might enjoy something like that 21:46:18 I definitely would. 21:46:21 But couldn't get the job :P 21:46:24 why not 21:46:28 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 21:46:40 I could put in a good word for you 21:46:41 Well, lesse ... I have no degree. 21:46:44 P 21:46:46 *:P 21:46:52 you could be a co-op first, not a problem 21:46:59 that's what I'm doing now 21:47:11 Co-op first, deathmatch later. (Sorry, free association.) 21:47:18 haha 21:47:40 Hmmmmmmmmmmmmmm 21:47:42 Tempting. 21:47:49 It's kinda nice because once you graduate you are pretty much guaranteed a job as long as you do a good job 21:48:01 Well, I intend on going to grad school. 21:48:12 haha, sucker! 21:48:21 I'm considering professorship *shrugs* 21:48:31 they have tuition reimbursement 21:48:39 Hm+ 21:48:53 those who can, do.. those who can't, teach 21:49:17 Ouch :P 21:51:25 anyhow, if you'd like me to forward it on to a guy I know in that dept.. send me your resume jeffryj at us ibm com 21:52:04 Boehm GC has a few points of suckitude: If there is a fake pointer to the head of a list, and that list is continually created at the tail by one routine and destroyed at the head by another, then memory usage will grow indefinitely, as the fake pointer prevents *any* of the list from being collected. 21:52:18 Plus compiler optimisations can seriously fuck it up. 21:56:28 can't wait to build my computer.. want to try out linux amd64 22:01:29 hmm, ubuntu came out in 2004 so it looks like I've been using linux for about 2 1/2 years 22:15:54 * SimonRC finds out that the Inform library is even cruftier than he remembered. 22:16:10 -!- goban has quit (Connection timed out). 22:16:13 the main parsing routine is a sight to behold 22:16:19 -!- goban has joined. 22:17:14 1200 lines of code, repeatedly re-using the half-a-dozen local variables to which it is restricted. 22:17:24 Dozens of GOTOs 22:17:35 and a map at the beginning to help you understand it all. 22:19:05 The fact that it has to handle english grammar, loads of exceptions, and must call and pay attention to a vast set of hooks doesn't help either. 22:21:02 oh, yeah, and it's written in a language mostly less powerful than C. 22:21:28 fun 22:22:01 -!- goban has quit (Read error: 104 (Connection reset by peer)). 22:22:03 GC is messed up 22:22:14 It's impossible to do right 22:27:27 is this intended to be a general statement? :) 22:32:29 what? 22:32:56 about GC 22:33:03 yeah 22:43:11 -!- goban has joined. 22:49:03 I was reading mccarthy's gc from the lisp paper 22:49:06 it made me cry 22:50:47 what about it? not that i know/remember the details, but it is hardly the state of the art. 22:51:00 it's so slow 22:51:13 it iterates through the entire memory like 4 times each run 22:53:43 that's sort of like crying because Turing machines are slow... :) 22:54:13 not really 22:56:26 -!- SevenInchBread has quit ("haaaaaaaaaa"). 23:21:16 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 2007-02-25: 00:17:18 -!- sebbu2 has quit (Client Quit). 00:24:02 -!- UpTheDownstair has joined. 00:24:20 -!- UpTheDownstair has quit (Client Quit). 00:24:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 00:25:46 bsmntbombdood: bah. 00:25:52 Modern GC isn't slow. 00:26:19 oh? 00:26:35 A program using GC that is written for use with GC will generally be about as fast as one with explicit allocation. 00:26:57 Remember, the programmer can only do static analysis of a program, but the RTS can do dynamic analysis. 00:27:22 GC is sometimes faster than explicit allocation and sometimes not. 00:28:44 -!- nazgjunk has joined. 00:30:20 -!- kxspxr has joined. 00:31:04 copying collectors are particularly good at improving locality 00:50:33 ~ski ``Kxy 00:50:41 ~exec import ski_repl 00:50:59 ~exec globals()["ski_repl"] = __import__("ski_repl") 00:51:10 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 00:51:21 ~ski ``Kxy 00:51:21 x 00:53:45 ~exec replace = lambda t,a,b: (t == a and b) or [replace(t[0], a, b), replace(t[1], a, b)] 00:54:58 hmm 00:55:20 ~exec sys.stdout(replace([[1,2],[3,4]], 1, 42)) 00:55:31 crap 00:55:39 scoping got messed up 00:55:54 ~exec pprint.pprint(locals(), sys.stdout) 00:55:55 {'replace': at 0xb7c046bc>, 00:55:55 'self': <__main__.IRCbot instance at 0xb7c0308c>, 00:55:55 'ski_repl': , 00:55:56 'x': 12} 00:55:59 -!- ihope has joined. 00:56:07 ~exec sys.stdout(replace) 00:56:07 at 0xb7c046bc> 00:56:17 wtf? 00:56:26 ~exec replace(1,1,2) 00:56:37 ~exec sys.stdout(replace(1,1,2)) 00:56:38 2 00:56:50 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:57:00 w.t.f 00:57:28 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:57:33 time to go all combinatory logic on his ass 00:57:41 I think you need to define replace. 00:57:48 ...wait... 00:57:48 ~exec U = lambda f: f(f) 00:57:52 i did 00:58:04 I see. 00:58:22 ~exec sys.stdout(replace(1,1,2)) 00:58:23 2 00:58:28 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:58:48 ~exec replace = U(lambda f: lambda t,a,b: (t == a and b) or [f(f)(t[0], a, b), f(f)(t[1], a, b)]) 00:59:07 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 01:06:02 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 01:09:08 -!- ihope has joined. 01:17:29 oh, oops 01:17:32 that was stupid 01:22:23 k 01:22:59 ~exec replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:23:28 ~exec sys.stdout(replace([[1,2],[3,1]], 1, 42)) 01:23:29 [[42, 2], [3, 42]] 01:23:33 guten 01:25:27 ~exec iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:25:38 ~exec sys.stdout(iota_comb) 01:25:40 [['S', [['S', 'I'], ['K', 'S']]], ['K', 'K']] 01:26:56 ~exec un_iota = lambda x: replace(x, iota_comb, "i") 01:27:17 Unlambda parser? 01:28:10 more like Lazy K 01:28:19 ~exec sys.stdout(ski_repl.parse("C")) 01:28:20 C 01:28:22 ~exec iota = lambda x: ski_repl.unparse(un_iota(ski_repl.simp(replace(ski_repl.parse(x), "i", iota_comb)))) 01:28:24 How nice. 01:28:31 ~exec sys.stdout(ski_repl.parse("`CK")) 01:28:32 ['C', 'K'] 01:28:57 yeah, it can parse unlambda 01:29:02 ~exec sys.stdout("C".(ski_repl.parse)) 01:29:14 Well, that clearly didn't work. 01:29:18 ~exec sys.stdout("C".ski_repl.parse) 01:29:20 somehow i doubt that :) 01:29:22 wow, what language is that valid in? 01:29:33 ~exec sys.stdout("C".parse.ski_repl) 01:29:40 Indeed. 01:29:52 ~exec sys.stdout(iota("`ii")) 01:30:04 ~exec foo = sys.stdout; ski_repl.parse("C").foo 01:30:16 Indeed, it... hmm. 01:30:20 Sir, you are crazed 01:30:28 ~exec sys.stdout(ski_repl.parse("`.i`.Hi")) 01:30:29 ['.', 'i'] 01:30:39 oerjan: except for that :) 01:30:40 Okay, doesn't work. 01:30:41 nah, it can't parse Unlambda ;) 01:31:43 ~exec un_iota([]) 01:31:53 oh come on 01:32:02 Problem: If you decide to be cryogenically preserved for 1000 years, future generations may not think you are worth keeping or restoring to life. Solution: Attach a sign saying "COBOL Programmer". This will ensure your safety. 01:32:06 closure are super screwed :( 01:32:33 that one is just too old :) 01:32:34 so, this scoping doesn't work 01:32:46 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:33:00 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:33:25 ~exec iota = lambda x: ski_repl.unparse(self.un_iota(ski_repl.simp(self.replace(ski_repl.parse(x), "i", self.iota_comb)))) 01:33:38 ~exec sys.stdout(iota("`ii")) 01:33:48 ?! 01:33:59 * ihope ponders Unlambda input combinators 01:34:02 ~exec sys.stdout(self) 01:34:03 <__main__.IRCbot instance at 0xb7c0308c> 01:34:10 ok borked 01:34:40 AHA! 01:35:14 You need a combinator that applies its argument to ?x, where x is the current character. 01:35:31 ~quit 01:35:31 -!- bsmnt_bot has quit. 01:35:35 -!- bsmnt_bot has joined. 01:35:40 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:35:44 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:35:56 ~exec import ski_repl 01:36:00 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:36:08 ~exec iota = lambda x: ski_repl.unparse(self.un_iota(ski_repl.simp(self.replace(ski_repl.parse(x), "i", self.iota_comb)))) 01:36:18 ~exec sys.stdout(iota("`ii")) 01:36:40 ~exec globals()["ski_repl"] = __import__("ski_repl") 01:36:43 ~exec sys.stdout(iota("`ii")) 01:37:11 ~exec self.replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:37:21 ~exec U = lambda f: f(f) 01:37:23 ~exec self.replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:37:29 ~exec sys.stdout(iota("`ii")) 01:37:45 sigh 01:38:54 ~quit 01:38:56 -!- bsmnt_bot has quit (Client Quit). 01:39:01 -!- bsmnt_bot has joined. 01:39:39 ~exec globals()["ski_repl"] = __import__("ski_repl") 01:39:53 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:40:03 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:40:27 ~exec self.ski_repl = __import__("ski_repl") 01:40:34 ~exec self.iota_comb = self.ski_repl.parse("``S``SI`KS`KK") 01:40:48 ~exec self.un_iota(self.iota_comb) 01:40:59 ~exec self.un_iota = lambda x: self.replace(x, self.iota_comb, "i") 01:41:01 ~exec self.un_iota(self.iota_comb) 01:42:14 ~exec self.U = lambda f: f(f) 01:42:35 ~exec self.replace = self.U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:42:47 ~exec self.un_iota(self.iota_comb) 01:43:02 ~exec sys.stdout(self.un_iota(self.iota_comb)) 01:44:46 -!- bsmnt_bot has quit (Remote closed the connection). 01:44:51 -!- bsmnt_bot has joined. 01:46:25 -!- bsmnt_bot has quit (Remote closed the connection). 01:46:30 -!- bsmnt_bot has joined. 01:50:26 ~exec sys.stdout(self.iota("`ii")) 01:50:27 ``SK`KK 01:50:29 there. 01:50:54 bout time 01:52:03 ~exec sys.stdout(self.iota("`i`i`ii")) 01:52:04 K 01:52:16 ~exec sys.stdout(self.iota("`i`i`i`ii")) 01:52:18 S 01:52:22 it works! 01:53:05 ~exec sys.stdout(self.iota("`i`i`i`i`ii")) 01:53:07 ``SSK 01:55:22 -!- bsmnt_bot has quit. 01:55:25 -!- bsmnt_bot has joined. 01:56:55 ~exec sys.stdout(self.iota("`i`i`ii")) 01:57:16 oh come on 01:58:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 01:58:39 -!- nazgjunk has joined. 02:01:36 -!- AfterDeath has joined. 02:02:48 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 02:02:57 -!- UpTheDownstair has joined. 02:03:46 yes, AfterDeath? 02:03:55 bsmntbombdood: ? 02:05:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 02:06:03 -!- nazgjunk has joined. 02:06:50 ~ps 02:06:51 None 02:12:35 wow. my Malbolge Unshackled interpreter works. 02:12:59 and more surprisingly, it actually manages to run the Malbolge cat program. 02:13:52 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 02:14:20 Unshackled? 02:14:38 i made a dialect. 02:14:56 Is it less ugly? 02:15:03 essentially, with automatically growing memory size 02:15:15 Fun. 02:15:40 no, i've tried to keep as close to the spirit as possible. 02:16:24 so, turing complete malbolge 02:16:25 only some subtle changes to make values practically unbounded. 02:16:29 i hope so. 02:17:00 but i didn't expect the changes to be subtle enough to make the cat program work. :) 02:18:21 this must be an evil omen :D 02:24:00 -!- nazgjunk has joined. 02:24:20 now uploaded: http://oerjan.nvg.org/esoteric/Unshackled.hs 02:24:46 not haskell! 02:24:56 of course Haskell :) 02:26:17 how else could I properly juggle the combined infinite Trie and linked list of Trits? :) 02:27:16 Trie? 02:27:22 You could do it in Unlambda. 02:27:25 of course a more efficient implementation might be possible. 02:27:40 bsmntbombdood: fancy spelling of "tree", isn't it? 02:27:42 i suppose. 02:27:55 Also, can I call you and your bot bb and b_? :-P 02:28:59 not quite. A trie is a special kind of tree, in which every key has a specific place in the tree, known at the outset. 02:30:15 e.g. the trinary number 021 would be at the first child of the second child of the zeroth child of the root. 02:30:54 *ternary 02:35:33 -!- nazgjunk has quit ("Bi-la Kaifa"). 02:50:18 -!- kxspxr has quit. 03:34:11 -!- ihope has quit (Connection timed out). 03:42:56 -!- ihope has joined. 03:48:11 -!- LeaLeaLea has joined. 03:48:16 HELLO. 03:48:30 hello 03:48:51 .. It has been ages. Good evening ladies and gentlemen. I invite each and every one of you for a walk on the promenade. Step not into the grassy knolls or you shall surely be engulfed by lava. 03:49:54 oh boy. 03:51:14 -!- SevenInchBread has joined. 03:51:52 SevenInchBread. 03:51:53 :( 03:52:06 Fancy meeting you here. 03:52:21 FANCY TIS 03:52:32 What say we grab a cuppa, old bean? 03:53:07 ...I'm uncertain 03:53:13 of how to react 03:53:15 to that 03:53:26 * LeaLeaLea grabs a cuppa. 03:53:37 * SevenInchBread squeezes the cuppa firmly. 03:53:50 mmm... quite smooth. 03:53:55 Mmm. 03:56:31 ~quit 03:56:32 -!- bsmnt_bot has quit. 03:56:36 -!- bsmnt_bot has joined. 03:56:42 ~exec sys.stdout(self) 03:56:42 <__main__.IRCbot instance at 0xb7ca208c> 03:56:57 ~exec x = lambda: self 03:57:07 ~exec sys.stdout(x) 03:57:08 at 0xb7ca3614> 03:57:12 ~exec sys.stdout(x()) 03:57:20 damnit 03:57:46 ~exec x = lambda: y 03:57:53 ~exec y = 42 03:57:56 ~exec sys.stdout(x()) 03:58:01 oh come on 03:58:33 ~quit 03:58:34 -!- bsmnt_bot has quit (Client Quit). 03:58:36 -!- bsmnt_bot has joined. 03:58:42 ~exec x = lambda: self 03:58:42 ~exec for x in xrange(100): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 03:58:43 -!- bsmnt_bot has quit (Excess Flood). 03:58:46 -!- bsmnt_bot has joined. 03:58:46 :) 03:58:50 ~exec x = lambda: self 03:58:54 ~exec sys.stdout(x()) 03:59:04 ~exec self.x = lambda: self 03:59:07 ~exec sys.stdout(self.x()) 03:59:17 wtf. 03:59:26 ~exec for x in xrange(10): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 03:59:26 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:28 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:30 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:30 closures. are. broken. 03:59:32 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:33 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:36 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:39 ~kill 0 03:59:40 Proccess 0 does not exist 03:59:46 :) 04:00:21 this is getting annoying 04:00:31 ~exec types 04:00:32 I blame it on threading. 04:00:36 nope 04:01:05 ~exec self.x 04:01:17 ~exec self.x.func_code 04:01:25 ~exec print "Lol... inconsistent print statement too..." 04:01:43 basically... you've fucked up the environment with threading and shit. :) 04:01:51 ~exec types.FunctionType(self.x.func_code, globals(), closure=locals()) 04:02:04 try new.function 04:02:06 ~exec self.x = lambda: bot 04:02:16 ~exec sys.stdout(self.x()) 04:02:17 <__main__.IRCbot instance at 0xb7c9608c> 04:02:18 ~exec sys.stdout(self) 04:02:19 <__main__.IRCbot instance at 0xb7c9608c> 04:02:58 ~exec types.FunctionType(self.x.func_code, globals()) 04:03:01 ~exec types.FunctionType(self.x.func_code, globals())() 04:03:17 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())()) 04:03:18 <__main__.IRCbot instance at 0xb7c9608c> 04:03:23 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())) 04:03:24 at 0xb7c976f4> 04:03:29 hmmm 04:03:38 ~exec sys.stdout(self.x()) 04:03:39 <__main__.IRCbot instance at 0xb7c9608c> 04:03:52 oh ihope messed me up 04:04:02 ~exec self.x = lambda: self 04:04:02 ~exec for x in xrange(5): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:08 SevenInchBread: stop doing that 04:04:11 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())) 04:04:12 -!- anonfunc has joined. 04:04:12 at 0xb7c9a6bc> 04:04:15 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())()) 04:04:15 I like messing people up. 04:04:17 :-P 04:04:25 ~exec sys.stdout(types.FunctionType(self.x.func_code, locals())()) 04:04:25 <__main__.IRCbot instance at 0xb7c9608c> 04:04:29 hmmmm! 04:04:32 Sorry. Didn't mean to do that. 04:05:26 ~exec for x in xrange(5): self.raw("PRIVMSG LeaLeaLea :YOUR HOSES IS RUNNING!") 04:05:59 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.10/2007021601]"). 04:06:08 oh damn, still banned from #python 04:06:21 You're banned form #python? 04:06:23 yeah 04:07:03 What for? 04:07:11 saying "lol" 04:07:24 Really? 04:07:28 yeah 04:08:10 I need to figure out how to make cell objects 04:08:43 to make closures manually 04:09:15 If you really want to get in, change your nickname and username. 04:09:57 what's the ban on? 04:10:00 -!- bsmntbombdood has changed nick to xor\. 04:10:03 -!- xor\ has changed nick to xor. 04:10:38 apparently, just the nick 04:11:02 "bsmntbombdood!*@*" and "*!n=gavin@*." 04:11:22 Why there's a period I don't know. 04:12:28 well, passing in the locals as the globals to create the function works 04:18:50 ah ha 04:18:56 imma jenus 04:22:40 -!- SevenInchBread has quit ("haaaaaaaaaa"). 04:24:31 ~exec self.foo = __import__("foo") 04:24:57 ~exec self.foo = __import__("foo") 04:25:22 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:09 ~exec globals()["types"] = __import__("types") 04:26:11 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:28 ~exec self.foo = __import__("foo") 04:26:31 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:57 ~exec reload(self.foo) 04:27:01 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:27:12 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())) 04:27:13 at 0xb7c9a79c> 04:27:18 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())()) 04:27:25 penis 04:27:33 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals) 04:27:34 {'IRCbot': , 'inspect': , '__builtins__': , '__file__': '/bot/ircbot.py', 'args': {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d'], 'owner': 04:27:34 'bsmntbombdood!\\S*gavin@\\S*'}, 'IRCFileWrapper': , 'sys': , 'thread_info': , 'pickle': , '__name__': '__main__', 'exec_global_tracer': , 'types': usr/lib/python2.4/types.pyc'>, 'copy': , 'socket': , 'thread': , 'traceback': , 'os': , 'pprint': .4/pprint.pyc'>, 'bot': <__main__.IRCbot instance at 0xb7c9608c>, 'marshal': , 're': , 'time': , 'threading': , 'SysWrapper': , 'exec_loca 04:27:42 ~kill 0 04:27:45 l_tracer': , '__doc__': None, 'math': } 04:27:54 oops 04:28:02 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals["self"]) 04:30:08 or not 04:37:05 or yes! 04:37:38 ~exec reload(self.foo) 04:37:54 ~exec sys.stdout(lambda: self, locals(), globals())) 04:38:17 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())) 04:38:18 at 0xb7c9a87c> 04:38:24 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())()) 04:38:24 <__main__.IRCbot instance at 0xb7c9608c> 04:38:28 sweet! 04:38:44 ~exec (lambda: self)() 04:38:53 that's why it's needed 04:51:35 :/ 04:59:35 made a wiki page on Malbolge Unshackled, explaining the differences (but not the commonalities) 05:01:51 -!- mike_the_person has joined. 05:03:36 <>:#,_e0g,@j5:" 05:04:20 ~quit 05:04:34 ~exec self.raw("QUIT") 05:04:35 -!- bsmnt_bot has quit. 05:04:39 -!- bsmnt_bot has joined. 05:04:44 ~exec this is an error 05:04:56 darn 05:05:32 -!- mike_the_person has quit (Client Quit). 05:06:11 ~exec self.raw("QUIT") 05:06:12 -!- bsmnt_bot has quit (Client Quit). 05:06:15 -!- bsmnt_bot has joined. 05:06:17 ~exec this is an error 05:06:31 oh duh 05:06:55 ~exec self.raw("QUIT") 05:06:56 -!- bsmnt_bot has quit (Client Quit). 05:06:59 -!- bsmnt_bot has joined. 05:07:02 ~exec this is an error 05:07:55 ~exec self.raw("QUIT") 05:07:56 -!- bsmnt_bot has quit (Client Quit). 05:07:59 -!- bsmnt_bot has joined. 05:08:01 ~exec this is an error 05:08:53 ~exec self.raw("QUIT") 05:08:54 -!- bsmnt_bot has quit (Client Quit). 05:08:57 -!- bsmnt_bot has joined. 05:08:59 ~exec this is an error 05:09:00 SyntaxError: unexpected EOF while parsing 05:09:05 finally 05:09:16 ihope: there 05:09:34 Pretty nice. 05:09:58 But why's there a space before it now? 05:10:12 there always has been 05:10:31 i'll take it off... 05:10:57 Doesn't look like there always has been to me. 05:11:17 NameError: name 'raw' is not defined 05:11:25 No space, and that was over three hours ago. 05:11:33 hmmm 05:11:54 that's odd 05:12:03 ~exec self.raw("QUIT") 05:12:04 -!- bsmnt_bot has quit (Client Quit). 05:12:07 -!- bsmnt_bot has joined. 05:12:13 ~exec this is an error 05:12:14 SyntaxError: unexpected EOF while parsing 05:12:26 weird 05:14:03 -!- xor has changed nick to bsmntbombdood. 05:14:06 ~quit 05:14:07 -!- bsmnt_bot has quit (Client Quit). 05:14:10 -!- bsmnt_bot has joined. 05:14:14 ~exec this is an error 05:14:15 SyntaxError: unexpected EOF while parsing 05:14:28 thar 05:15:04 -!- oerjan has quit ("Gooed knight"). 06:07:46 -!- calamari has quit ("Leaving"). 06:48:39 -!- digital_me has quit ("goodnight"). 06:54:51 -!- ihope has quit (Connection timed out). 07:20:51 -!- wooby has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:34:11 -!- tokigun has joined. 08:57:40 -!- tokigun has quit ("wait a moment please."). 08:58:38 -!- tokigun has joined. 09:05:24 -!- anonfunc has quit. 09:20:43 Anyone here do/have done amateur radio? 09:32:07 -!- anonfunc has joined. 09:39:11 -!- Sgeo has quit ("Leaving"). 09:55:08 -!- sebbu has joined. 10:34:14 -!- anonfunc has quit. 10:50:04 I predict my question will be forgotten in a few more hours and another haphazard conversation will begin and be yet more forgotten. 11:05:16 properties of or prevent me from answering 11:42:22 -!- nooga has joined. 11:42:25 hi 11:47:07 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 12:01:37 -!- pgimeno has joined. 12:01:40 * nooga has found a bug in sadol interpreter 12:14:29 -!- tgwizard has joined. 12:33:07 -!- oerjan has joined. 12:35:12 Sukoshi: No. 12:36:19 nooga: There is always one more bug. (TM) 12:41:26 -!- Dominic_ has joined. 12:45:47 -!- UpTheDownstair has joined. 12:46:46 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 12:50:20 -!- nazgjunk has joined. 12:51:02 -!- Dominic_ has quit (Read error: 104 (Connection reset by peer)). 12:55:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:56:25 -!- nazgjunk has joined. 13:04:55 -!- UpTheDownstair has joined. 13:05:14 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:18:24 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 13:18:43 -!- nazgjunk has joined. 13:41:33 -!- UpTheDownstair has joined. 13:41:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:49:13 -!- UpTheDownstair has changed nick to nazgjunk. 14:01:22 -!- sebbu2 has joined. 14:20:41 -!- sebbu has quit (Connection timed out). 14:45:42 darn, i just realized what my last edit looks like in the Recent Changes list :D 15:01:28 -!- ihope has joined. 15:07:16 -!- jix__ has joined. 15:30:30 -!- ihope has quit (Read error: 104 (Connection reset by peer)). 15:30:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:31:11 -!- nazgjunk has joined. 15:54:50 * oerjan is starting to suspect that the cat program working is due to an interpreter bug. 15:57:13 on the positive side, that provided a good test that everything that _should_ be identical to Malbolge is working. 16:08:23 -!- SevenInchBread has joined. 16:10:10 -!- UpTheDownstair has joined. 16:12:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:17:39 -!- UpTheDownstair has changed nick to nazgjunk. 16:17:50 -!- jix__ has changed nick to jix. 16:25:14 -!- nazgjunk has quit ("Leaving"). 16:31:57 -!- oerjan has quit ("Out to eat"). 16:32:16 -!- nazgjunk has joined. 17:06:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:06:37 -!- UpTheDownstair has joined. 17:10:36 -!- nazgjunk has joined. 17:10:46 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 17:23:06 -!- Arrogant has joined. 17:52:38 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:59:29 ~exec 1/0 17:59:30 ZeroDivisionError: integer division or modulo by zero 18:01:29 ~exec raise "iAmBored", "Error" 18:01:30 iAmBored: Error 18:02:26 -!- nazgjunk has joined. 18:03:46 ~exec sys.stdout = StringIO(); sys.stdout.write("foo") 18:04:09 ~exec sys.stdout = StringIO(); sys.stdout.write("foo"); print sys.stdout.getvalue() 18:04:14 foo 18:07:26 ~raise StringIO() 18:07:32 ~exec raise StringIO() 18:07:33 TypeError: exceptions must be classes, instances, or strings (deprecated), not cStringIO.StringO 18:07:40 ~exec raise StringIO 18:07:40 TypeError: exceptions must be classes, instances, or strings (deprecated), not builtin_function_or_method 18:07:45 booble 18:08:43 ~raise IRCbot 18:08:52 ~exec raise IRCbot 18:08:53 TypeError: __init__() takes at least 5 arguments (1 given) 18:09:04 ~exec raise IRCbot, 1,2,3,4 18:09:05 SyntaxError: invalid syntax 18:09:36 ~exec self.foo = sys.stdout 18:09:48 hi 18:36:53 -!- wooby has joined. 18:41:47 -!- Arrogant has quit ("Leaving"). 19:35:20 -!- oklopol has quit (Read error: 110 (Connection timed out)). 19:38:17 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:38:51 -!- nazgjunk has joined. 19:50:53 -!- oerjan has joined. 19:54:51 -!- tgwizard has quit (Remote closed the connection). 19:56:19 the goo 19:56:41 that ba, and the ugl 19:56:45 *the 19:57:07 ~exec raise "Hi oerjan" 19:57:07 Hi oerjan 19:57:15 hi bsmnt_bot 19:57:30 thought that error message would be more interesting 19:58:18 ~exec raise Exception, "oerjan is here" 19:58:19 Exception: oerjan is here 19:59:34 bsmnt_bot: you have a lousy memory if you think that is exceptional :) 20:00:48 ~exec exec "class BoredError(Exception): pass\n\nself.bored = BoredError" 20:00:56 ~exec raise self.bored 20:00:57 BoredError 20:02:07 ~exec exec "try:\n raise self.bored\nexcept Exception: \nraise \"not allowed to be bored\"\n" 20:02:08 IndentationError: expected an indented block (line 4) 20:02:25 ;D 20:02:28 ~exec exec "try:\n raise self.bored\nexcept Exception:\n raise \"not allowed to be bored\"\n" 20:02:29 not allowed to be bored 20:02:41 back to the risk game 20:03:41 -!- tgwizard has joined. 20:29:07 I lost :( 20:33:16 -!- sebbu has joined. 20:33:31 europe fails 20:33:42 never! 20:35:52 almost always 20:36:46 you can never hold europe 20:39:10 -!- oklopol has joined. 20:40:11 too many neighbors 20:41:06 i don't remember, can you cross between asia and america? 20:41:22 yeah kamchatca-alaska or something like that 20:50:34 -!- digital_me has joined. 20:50:36 -!- tgwizard has quit (Connection timed out). 20:51:55 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 20:56:07 * bsmntbombdood reads about tries 20:56:56 * bsmntbombdood implements it in C 20:57:21 or not 20:58:35 oh, so each node has $byte_length branches 20:59:23 $byte_length? 21:00:15 for a byte, that sounds like 8 but should be 256, I think 21:00:47 yeah 21:01:15 that's what I meant 21:19:15 don't you just love segfaults? 21:20:41 use a language with proper types :) 21:21:46 well, it works 21:22:29 although i suppose i _could_ make the crash function in my interpreter segfault if I used the unsafePerformIO loophole. 21:22:50 for now it just runs out of memory. 21:23:07 with a segfault you at least get a core dump 21:23:18 quitting with an error message doesn't tell you anything 21:26:10 not sure what to do when a key isn't found :/ 21:31:56 return a default, possibly inserting it first. 21:32:09 bsmntbombdood.mooo.com/trie.c 21:32:27 thunks are ugly :/ 21:36:07 MUCH simpler implementation than a hash table 21:36:10 I like it. 21:37:06 and any data can be used as a key, without a hash function 21:39:41 insertion/extraction is O(keylen) 21:44:07 hi 21:45:38 hi 21:45:55 know anything about lsof 21:46:39 lsof(8)? 21:47:45 yeah 21:48:20 rm is giving me "text file busy" but lsof is listing nothing when I say lsof 21:49:50 I want an algorithm to play risk 21:52:17 I would like to be Hu*Ki bimorph but it ain't going to happen. 21:52:32 maybe that should be Ki*Hu 21:53:06 ??? 21:53:22 Hu=Human? Ki=? 21:53:35 or something else? 21:55:28 yes# 21:55:40 Hu is indeed human. 21:55:47 waitamo, 21:55:56 how did you know what "bimorph" meant/ 21:56:21 bi=2, morph=morph 21:56:23 i guessed, from bi- and -morph 21:56:41 Darn, i am not used to people being able to do that. 21:56:49 what's ki? 21:56:56 (i.e. analyse things by their classical roots) 21:57:04 heh 21:57:12 Who doesn't do that? 21:57:19 normal people 21:57:21 muggles 21:57:28 besides any PL enthusiast should know about polymorphism 21:58:15 oklopol: (Well, I do not have a good summarry, but I have explained it in bits in various places, and archived all the discussions: http://fof.durge.org/~sc/Kigdatsi/ ) 21:58:41 oh 21:58:43 i've read that 21:58:44 oh, your own conworld. 21:58:50 yup 21:58:58 oerjan: where di you learn that word 21:59:11 which word? 21:59:31 newer stuff and dynamic documents are dumped here: http://toast.durge.org/~sc/Kigdatsi/ (the server is also {compsoc,bylands}.dur.ac.uk) 21:59:36 oerjan: conworld 21:59:39 i used to subscribe to the conlang list 21:59:45 ah, ok 21:59:45 wazzat? 21:59:47 small world 21:59:59 bsmntbombdood: see spinnoff.com/zbb 22:00:26 besides i think it was mentioned in the files of yours i looked at 22:01:14 ah, ok 22:03:02 oh man 22:03:10 storing those 3 entrys takes 11308 bytes 22:03:16 the world is even smaller, both at conlang and at esolangs i've met people from my local gamer's club :) 22:03:34 bsmntbombdood: what are you using these tries for? 22:03:46 nothing 22:05:10 for prefix-free keys each new key takes O(keylen) more storage O.o 22:05:17 on the other hand i used a trie in my newest interpreter, which is how the subject came up i think 22:05:27 yeah 22:06:15 O(keylen - common_prefixlen) more 22:06:32 ISTR tries have crap constants 22:06:59 bsmntbombdood: there is an optimization to make tries smaller. 22:07:00 you might want a briefer node format 22:07:19 like an array of (byte, pointer) pairs 22:07:23 for memory O(n) = 1024*n I think 22:07:42 basically, if there is only one leaf in a subtree, you save it directly. 22:07:46 sounds right, for size-4 pointers 22:07:53 at the top of that subtree. 22:07:59 oerjan: also a good idea 22:08:28 SimonRC: huh? 22:08:56 and you may also split bytes into say 2 nybbles, to make each node only have 16 subnodes. 22:09:13 well, you have an array of pointers for each node, and there are 256 pointers in each node, and each pointer is 4 bytes 22:09:20 oerjan: yup 22:09:25 yeah 22:10:10 manipulating nibbles isn't very nice 22:10:37 it isn't very hard either. 22:10:54 (b >> 4), b & 15 22:11:10 yeah 22:11:14 -!- Sgeo has joined. 22:11:29 How would that make the storage less though? 22:12:36 oh 22:13:00 sounds like you got it 22:13:29 i guess it is a tradeoff between space and search speed. 22:13:29 then it's O(n) = 2*16*n 22:15:23 *4 for pointer size 22:16:22 oh right 22:18:10 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:19:57 Segmentation fault (core dumped) 22:20:02 sigh 22:20:13 solution: use a real language 22:21:58 C is just about as real as it gets 22:22:30 In that case, use a language with a real typesystem. 22:22:38 OST s/real // 22:23:11 How does a typesystem prevent segfaults? 22:23:24 pointers means segfaults 22:23:33 by making it impossible to dereference a null pointer. 22:23:58 That just turns it into some other type of abort. 22:24:00 By guaranteeing that a pointer always points at something. 22:24:06 It would have to raise some kind of equivelent error 22:24:08 or do array indexing out of bounds 22:24:15 (hint: GC may be involved) 22:24:31 Everybody go look up D and shaddap. 22:24:34 sure, but that error may be at compile time 22:24:35 http://www.digitalmars.com/d/ 22:24:46 D loses 22:24:49 GregorR: ITYM http://www.haskell.org/ 22:24:53 :-P 22:25:05 also Ocaml if you think haskell is too weird. 22:25:54 Nah, you miss out on the cool shit like typeclasses and circular definitions. 22:26:15 http://www.beigerecords.com/cory/pizza_party/ 22:26:19 yes, but on the other hand you get module functors. 22:26:29 What could be more fun than creating a graph by defining the contents of a mp in terms of lookups on the map? 22:26:38 oerjan: what are they? 22:26:57 essentially, functions from modules to modules. 22:26:58 bsmntbombdood: seen it before 22:27:02 oerjan: hmm. 22:27:09 ITYM http://schemers.org/ 22:29:38 * SimonRC beats you all: http://e-pig.org/ 22:30:01 Each program contains a correctnes proof embedded in its types. 22:30:14 No infinite loops, ever. 22:31:05 and not Turing-complete, nanana 22:31:30 The developers find that you can write all sensible programs in it. 22:31:45 i was half joking :) 22:32:57 probably. I mean how many times do you need to run an algorithm that you don't know halts... 22:33:18 * bsmntbombdood can't figure out what's wrong :( 22:33:49 have you changed trie.c since you posted the link? 22:33:59 oh duh 22:34:11 or not 22:34:24 no 22:34:41 get trie_nibble.c 22:35:47 ooops :P 22:35:55 ? 22:36:01 i'm stupid 22:36:22 I masked with 0xFF instead of 0xF 22:36:40 -!- tgwizard has joined. 22:37:02 now it works 22:37:30 and uses much less storage 22:37:42 1836 compared to 14392 22:38:47 O(n) ~ n*400 22:39:59 now for bits... 22:40:50 bits? 22:41:31 i think bits is worse than 2-bits, which is only twice as good as nybbles. 22:41:40 idunno 22:42:42 because bits need 2 children but twice the depth of 2-bits which need 4. 22:42:57 yeah 22:44:20 and 4*2 is half of 16. 22:45:47 I wonder why the constant factor is ~400 and not 128 like it should be 22:46:09 hm? 22:46:17 for nibbles 22:46:39 16*2*4 = 128, you mean? 22:46:46 yeah 22:47:40 oh 22:47:55 its 128*keylen 22:48:13 brilliant :) 22:48:42 i was starting to worry you had some serious over-padding there :) 22:48:56 -!- UpTheDownstair has joined. 22:49:31 except - that only applies without sharing. 22:49:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:49:46 all my keys were prefix free 22:50:04 right, so just the top node 22:52:16 a minor point - you don't need a data section for the half-byte nodes 22:53:04 mm 22:53:52 -!- Arrogant has joined. 22:54:09 not worth it 22:55:24 you could do it fairly cheap by putting the data section last, and just adjusting the malloc size 22:55:44 i think 22:57:31 -!- UpTheDownstair has changed nick to nazgjunk. 22:58:41 not sure if that's standard 22:59:56 Ah, I was wrong, epigram can do general recursion (and is hence Turing-Complete) if you permit yourself to use (gen :: (forall (P :: *) => (P -> P) -> P) i.e. to assume that anything you can prove from itself is true. 23:00:03 which is a bit dodgy 23:00:53 I didn't know programming languages could get any more mathy 23:01:36 epigram essentially crosses the line to a theorem prover 23:03:12 -!- GregorR has quit (SendQ exceeded). 23:03:24 -!- GregorR has joined. 23:03:51 given the Curry-Howard correspondence between type systems and logic, that essentially has to happen when the type system gets complex enough 23:05:25 In later versions of Haskell, the type system is so powerful that it is itself Turing-complete. 23:05:56 with a few command-line switches 23:06:04 e.g. --allow-undecidable-types 23:06:51 on the other hand, the same has been said of C++. 23:07:25 which shows that sanity is not a requirement. :) 23:07:42 hm, does that mean the _type system_ of C++ is an esolang? 23:08:34 (disclaimer: regarding C++ i am speaking solely from prejudice, having never used it ;) 23:09:49 this leads to the obvious question: could we make a language whose type system is based on brainfuck? 23:10:28 typefuck 23:11:48 it seems static import means the exact opposite in java and D 23:11:55 i find that clever 23:32:55 -!- UpTheDownstair has joined. 23:33:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:34:03 -!- UpTheDownstair has changed nick to nazgjunk. 23:46:16 mathmatical logic ftl 23:46:38 * oerjan bops bsmntbombdood on the head 23:47:16 no me understando 23:50:46 * bsmntbombdood is reading the Curry–Howard wikipedia article 23:52:34 zzzz 23:52:41 http://upload.wikimedia.org/math/4/1/c/41c9dae376e6427b316ac0396b990d63.png 23:52:44 O.o 2007-02-26: 00:04:33 yeah, fun 00:05:31 huh. 00:05:44 * nazgjunk wtf's, audibly, and then goes to sleep. 00:07:14 mathmaticians come up with all kinds of crazy notations 00:09:56 -!- crathman has joined. 00:11:57 That notation is the fundament for understanding the rules of many of the new kinds of logic, such as linear logic. 00:15:32 -!- sebbu2 has joined. 00:16:48 -!- nazgjunk has quit (Nick collision from services.). 00:27:14 -!- Sgeo has quit ("Leaving"). 00:28:34 -!- Sgeo has joined. 00:33:45 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 00:34:18 -!- sebbu2 has quit (Client Quit). 00:34:34 -!- sebbu has quit (Read error: 110 (Connection timed out)). 00:37:42 -!- oerjan has quit ("Eek"). 01:24:39 -!- Arrogant has quit ("Leaving"). 01:49:23 -!- crathman has quit (Read error: 110 (Connection timed out)). 01:50:31 -!- wooby has quit. 01:53:01 -!- anonfunc has joined. 01:57:57 -!- goban has quit (Read error: 104 (Connection reset by peer)). 01:58:08 -!- goban has joined. 02:00:47 ahahah 02:00:50 >>> 'ABC' < 'C' < 'Pascal' < 'Python' 02:00:51 True 02:03:05 >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' 02:03:06 True 02:05:51 but it's not greater than SOPHIA. 02:17:22 -!- crathman_ has joined. 02:29:10 >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' < 'Zilog Z80 assembler' 02:29:10 True 02:29:19 I find Python's opinions a bit suspicious. 02:35:17 -!- crathman_ has quit (Read error: 110 (Connection timed out)). 02:35:49 -!- digital_me has quit ("Lost terminal"). 02:39:23 -!- digital_me has joined. 04:04:22 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:43:54 -!- Sgeo has quit ("Leaving"). 05:26:41 -!- ShadowHntr has joined. 05:46:29 -!- digital_me has quit ("Lost terminal"). 07:19:42 -!- nooga has quit (Read error: 110 (Connection timed out)). 07:31:17 -!- nooga has joined. 07:53:31 -!- ShadowHntr has quit (Read error: 60 (Operation timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:55:42 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 08:56:09 -!- Sukoshi has joined. 09:11:19 -!- sebbu has joined. 09:14:33 No. 11:11:15 -!- tgwizard has joined. 11:55:01 Sukoshi: no what? 12:08:12 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 12:08:14 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 12:08:14 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 12:08:22 -!- bsmntbombdood has quit (Remote closed the connection). 12:09:10 -!- bsmntbombdood has joined. 12:09:10 -!- tgwizard has joined. 12:09:10 -!- anonfunc has joined. 12:09:10 -!- bsmnt_bot has joined. 12:09:10 -!- AfterDeath has joined. 12:09:10 -!- helios24 has joined. 12:09:10 -!- sp3tt has joined. 12:09:10 -!- Shaunaf has joined. 12:09:10 -!- meatmanek has joined. 12:09:10 -!- puzzlet has joined. 12:09:10 -!- fizzie has joined. 12:09:10 -!- cmeme has joined. 13:02:14 -!- csaba has joined. 13:02:23 Hello 13:03:09 I'm thinking of writing a visual simulator of a Turing machine. I'm interested if you have any ideas what should I include into it? I mean, besides the basic machine. 13:23:52 -!- csaba has quit (" HydraIRC -> http://www.hydrairc.com <- IRC with a difference"). 13:49:18 -!- ais523 has joined. 13:49:32 !ps d 13:49:36 1 ais523: daemon ul bf 13:49:38 2 ais523: ps 13:49:56 !ul (Is the Underload interpreter daemon still running after all this time?)S 13:49:59 Is the Underload interpreter daemon still running after all this time? 13:53:08 !help 13:53:09 Now what's happened to EgoBot? 13:53:09 !kill 1 13:53:14 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- bsmntbombdood has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net). 13:53:17 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 13:53:17 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- nooga has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- goban has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 13:53:19 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 13:53:44 -!- sebbu has joined. 13:53:44 -!- Sukoshi has joined. 13:53:44 -!- nooga has joined. 13:53:44 -!- goban has joined. 13:53:44 -!- GregorR has joined. 13:53:44 -!- tokigun has joined. 13:53:44 -!- EgoBot has joined. 13:53:47 -!- bsmntbombdood has joined. 13:53:47 -!- tgwizard has joined. 13:53:47 -!- anonfunc has joined. 13:53:47 -!- bsmnt_bot has joined. 13:53:47 -!- AfterDeath has joined. 13:53:47 -!- helios24 has joined. 13:53:47 -!- sp3tt has joined. 13:53:47 -!- Shaunaf has joined. 13:53:47 -!- meatmanek has joined. 13:53:47 -!- puzzlet has joined. 13:53:47 -!- fizzie has joined. 13:53:47 -!- cmeme has joined. 13:53:50 -!- oklopol has joined. 13:53:50 -!- pgimeno has joined. 13:53:50 -!- sekhmet has joined. 13:53:50 -!- NK\ has joined. 13:53:50 -!- SimonRC has joined. 13:53:56 !help 13:54:00 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 13:54:02 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 13:54:07 !ps d 13:54:10 1 ais523: daemon ul bf 13:54:12 2 ais523: ps 13:55:06 !daemon deadfish funge93 http://pastebin.ca/raw/373003 13:55:22 !deadfish iiissoo 13:55:24 >> 13:55:26 >> 13:56:09 That seemed to work (it sent the end of the message privately), but it could probably do without the prompts and newlines 13:58:41 !undaemon deadfish 13:58:44 Process 2 killed. 13:59:14 !deadfish funge93 http://pastebin.ca/raw/373012 13:59:16 Huh? 13:59:24 !daemon deadfish funge93 http://pastebin.ca/raw/373012 13:59:32 !deadfish iiisso 14:00:35 !undaemon deadfish 14:00:38 Process 2 killed. 14:00:40 !daemon deadfish funge93 http://pastebin.ca/raw/373016 14:00:44 !deadfish iiisso 14:00:48 81 14:01:02 !deadfish dddddddo 14:01:04 74 14:02:42 !undaemon deadfish 14:02:44 Process 2 killed. 14:02:46 !daemon deadfish funge93 http://pastebin.ca/raw/373016 14:03:12 Deadfish has no sensible way to set its single memory value to 0 14:03:29 It doesn't have any loops or other flow control, either, so the benefits of implementing it are dubious 14:18:37 -!- UpTheDownstair has joined. 14:20:04 -!- UpTheDownstair has changed nick to nazgjunk. 14:21:33 !ul (~exec sys.stdout("!deadfish iisso"))S 14:21:36 ~exec sys.stdout("!deadfish iisso") 14:21:37 !deadfish iisso 14:21:40 16 14:22:51 It would be nice if all EgoBot's interpreters were written in esoteric programming languages 14:23:13 although that would lead to some sort of infinite regress, probably, unless it ran on a machine with Brainfuck machine code or something like that 14:28:16 that would be pretty awesome 14:30:08 The Underload interpreter is written in brainfuck, and the Deadfish interpreter is written in Befunge-93, so that's two already 15:09:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:09:28 -!- UpTheDownstair has joined. 15:09:42 -!- UpTheDownstair has changed nick to nazgjunk. 15:59:11 -!- oerjan has joined. 16:01:51 hm... 16:01:56 >>>True 16:02:01 hm... 16:10:00 Oerjan, your comments lack context to me 16:11:03 ~exec self.register_raw(~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:11:04 SyntaxError: invalid syntax 16:11:06 darn 16:11:29 ~exec self.register_raw(~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1)))))) 16:11:29 SyntaxError: invalid syntax 16:11:44 whoops 16:11:53 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:11:59 >>>1+2 16:12:00 -!- bsmnt_bot has quit (Remote closed the connection). 16:12:04 -!- bsmnt_bot has joined. 16:12:21 apparently not correct. 16:12:47 ~sys.stdout(repr(1+2)) 16:12:57 ~exec sys.stdout(repr(1+2)) 16:12:58 3 16:13:14 ~exec sys.stdout(repr(eval("1+2"))) 16:13:14 3 16:13:38 wait... 16:15:30 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:15:36 ~exec sys.stdout(repr(eval("1+2"))) 16:15:37 3 16:15:41 >>> 1+2 16:15:42 -!- bsmnt_bot has quit (Remote closed the connection). 16:15:44 -!- bsmnt_bot has joined. 16:16:12 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(y.group(1))) 16:16:16 >>>test 16:16:17 #esoteric 16:16:41 ~exec self.raw_regex_queue.pop() 16:17:31 strange. must be that darn scope again. 16:17:45 eh wait 16:18:00 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2))))) 16:18:05 >>>1+2 16:18:06 3 16:18:08 finally 16:18:27 >>> "Pascal" < "Python" 16:18:27 True 16:18:39 >>>"Test" 16:18:40 'Test' 16:19:41 Maybe it would be possible to do something similar to that to get an Underload/Python quine going 16:20:30 ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2))) 16:20:35 >>>"C++" < "Everything" 16:20:35 %%Hello, world! 16:20:35 True 16:20:55 I don't really know much Python 16:22:06 >>>"Does this work for me too?" 16:22:07 'Does this work for me too?' 16:22:33 >>>sys.stdout("Nested printing") 16:22:33 Nested printing 16:22:34 None 16:23:14 >>>y 16:23:15 <_sre.SRE_Match object at 0xb7c6b0f8> 16:23:26 >>>y.group(2) 16:23:27 'y.group(2)' 16:23:35 >>>x 16:23:36 ':ais523!n=chatzill@chillingi.eee.bham.ac.uk PRIVMSG #esoteric :>>>x' 16:23:49 that was strange 16:24:22 >>>eval(y.group(2)) 16:24:23 -!- bsmnt_bot has quit (Remote closed the connection). 16:24:24 oh wait, it wasn't :) 16:24:25 -!- bsmnt_bot has joined. 16:24:30 it was nearly a quine 16:24:47 I suppose I shouldn't have done that, really, but I wanted to see how it would handle the eval loop 16:25:00 >>>'Is this still working?' 16:25:08 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2))))) 16:25:26 >>>"'this string contains single quotes'" 16:25:27 "'this string contains single quotes'" 16:25:41 >>>"'single"+'"double' 16:25:42 '\'single"double' 16:26:09 >>>'>>>'+y.group(2) 16:26:10 ">>>'>>>'+y.group(2)" 16:26:44 that would be a quine-by-cheating if it weren't for the repr() 16:26:55 right 16:27:22 I wanted it to give approximately the same output as the Python repl loop 16:28:18 I wonder why my non-repr'd and eval'd version above didn't work? 16:28:44 maybe it's because I can't count parentheses 16:28:54 which one? 16:29:05 "~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2)))" 16:29:28 no, I did count correctly 16:29:40 perhaps % has a regexp meaning 16:30:05 I hope not, my Underload interpreter in a new regexp-based language Thutu that I'm creating relies on it being meaningless 16:30:14 but I could always change to some other character instead 16:30:27 wait... 16:30:29 ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2))) 16:30:32 << you mispled S+ as S_ in there 16:30:50 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2))) 16:30:52 damn typos 16:30:54 << testing 16:31:17 that may have been the original problem too 16:31:37 << !ul (a(<< << !ul (a(<< << !ul (a(<< wow 16:31:50 << !ul (a(<< << !ul (a(<< << !ul (a(<< << !ul (a(<< << ~quit 16:32:06 !ul (a(<< << !ul (a(<< << !ul (a(<< << !ul (a(<< !undaemon ul 16:32:22 << !ul (a(<< Process 1 killed. 16:32:26 Huh? 16:33:39 you might be able to do it just with ~exec sys.stdout(...) as well 16:34:13 !daemon ul bf http://pastebin.ca/raw/36774 16:34:49 I tried that a while ago, but the problem was that Underload needs a literal double-quote so it can pass it to Python, and Python has trouble with double-quotes inside strings 16:35:21 i.e. whatever representation you use for the string delimiter, it can't be used inside the string without backslashing it 16:35:32 right. 16:35:33 !undaemon ul 16:35:36 ~yy 16:35:37 !daemon ul bf http://pastebin.ca/raw/367774 16:35:38 Process 1 killed. 16:35:58 I have no idea what random code I fed EgoBot by mistake there... 16:36:01 wow :) 16:36:12 apparently it did _something_ 16:36:28 that's not difficult in BF if you have enough dots in the program 16:36:48 but it's interesting that it came up with characters that aren't near the end of the ASCII scale 16:36:59 something in Lisp. 16:37:33 there are plenty of - in Lisp. 16:37:51 and much fewer dots. 16:38:18 of course, I never quite got used to using - as part of a variable name 16:38:48 my only real Lisping to date has been writing an Unlambda-using-lambda-notation to Unlambda-using-```ski-notation compiler in Emacs-Lisp 16:40:30 all the loops are essentially [] 16:41:42 my guess is the first of them is infinite, since there is only one > in the program, which comes later. 16:41:48 (and no <) 16:42:44 yes, the program's essentially ------(lots more minuses and some dots)----[] from a BF point of view, which is pointless 16:45:44 ais523 did get the right page this time 16:46:26 !help 16:46:30 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 16:46:32 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 16:47:15 !irp Say "Hello, world!", please! 16:47:25 !daemon deadfish funge93 http://pastebin.ca/raw/373003 16:47:28 Hello, world! 16:47:59 yes, there was a call for Deadfish interpreters other than the reference one, so I wrote one in Befunge-93 16:48:06 My first Befunge-93 program, as it happens 16:48:33 i thought that the poster was carelessly vague on the language :) 16:48:48 but 373016 is the EgoBot-ised version that doesn't give prompts and which doesn't print newlines except when outputting 16:49:04 Y'know, I could add a sensible interpreter if you asked me to :P 16:49:07 I even preserved the bugs in the reference interpreter 16:49:23 !irp Tell GregorR that EgoBot does IRP now. 16:49:38 Well that worked great X-P 16:49:42 GregorR, I now do IRP 16:49:49 O_O 16:49:50 hah. 16:49:58 Oh 16:49:59 Pff 16:50:08 For a quarter of a second, you'd fooled me. 16:50:22 With my own damn bot X-P 16:50:46 I got it to do Underload and Deadfish without cheating, though 16:51:03 (using Keymaker's BF code for the Underload and my Befunge-93 code for the Deadfish) 16:51:18 Its daemon support isn't particularly reliable *shrugs* 16:53:29 once you get used to the requirements for newlines in strategic places, though, it's not too hard to use 16:53:52 !deadfish o 16:53:56 16 16:54:04 !deadfish so 16:54:06 0 16:54:27 According to the Deadfish reference interpreter, the value becomes 0 whenever it was previously exactly -1 or exactly 256 16:54:50 but squaring makes it possible to jump past 256, and then it's very tedious to take it back down again 16:57:28 well... 16:57:57 squaring is module size(int), isn't it? 16:58:00 *modulo 16:58:08 i mean *maxint 16:58:17 i mean, argh! 16:58:31 presumably, but I don't know what maxint for the Befunge-93 interpreter is 16:58:36 It shouldn't be too hard to find out 16:58:41 !deadfish iiio 16:58:44 3 16:58:49 !deadfish so 16:58:52 9 16:58:53 !deadfish so 16:58:56 81 16:58:57 !deadfish so 16:59:00 6561 16:59:01 !deadfish so 16:59:04 43046721 16:59:06 !deadfish so 16:59:08 -501334399 16:59:17 that can't be right 16:59:28 so that's probably an indication of maxint's value 16:59:28 lessee.. 17:00:51 32 bits 17:01:21 because 43046721 squared is 6954FE21E3E81 in hex 17:01:42 and -501334399 is (infinite number of F's) E21E3E81 17:02:09 Of course, it could be anywhere from 29 bits to 36 with that information, but 32's a good guess 17:03:27 !undaemon deadfish 17:03:28 Process 2 killed. 17:03:42 !daemon deadfish funge93 http://pastebin.ca/raw/373016 17:04:21 !ps d 17:04:24 1 ais523: daemon ul bf 17:04:26 2 ais523: daemon deadfish funge93 17:04:28 3 ais523: daemon irp bf 17:04:30 4 ais523: ps 17:04:34 !kill 3 17:04:36 Process 3 killed. 17:05:52 this means that once you have assured the number is even, you can get it back to 0 by 5 squarings. 17:06:04 of course 17:06:10 !deadfish iiio 17:06:12 3 17:06:15 !deadfish ssso 17:06:18 6561 17:06:26 !deadfish isssso 17:06:28 83951616 17:06:35 !deadfish so 17:06:38 0 17:06:40 -!- jix__ has joined. 17:08:43 in general, 5 squarings, 1 increment, then 5 more squarings. 17:09:03 and you will have either 0 or 1. 17:09:23 which incidentally gives an actual algorithm for testing evenness 17:09:30 I wonder if there's a way to get it onto 0 guaranteed, using the special behaviour of 256 and/or -1? 17:09:43 Of course, sssssisssssd will get it to 0 guaranteed 17:09:45 oh right. 17:10:14 wait a moment... 17:10:33 does -1 have a square root? that could mess things up a bit 17:11:25 256 is less important in this case, since you want to reach 0 anyhow 17:11:26 no; -1 equals 2^(even number)-1 equals (some number)^2-1 equals (some number plus 1)(some number minus 1) 17:11:50 and you can't have either bracket being a square, because they're one away from a square 17:11:58 -!- jix__ has changed nick to jix. 17:12:00 and they can't share an odd factor because they differ by 2 17:13:31 you know, with an extra register and some sort of flow control Deadfish could actually become a useful language 17:14:58 I wonder what my JOIN message looks like from bsmnt_bot's point of view? 17:15:49 basically i think it is :ais523... JOIN #esoteric 17:16:04 ~exec self.register_raw(r".*JOIN.*", lambda x,y: sys.stdout(x)) 17:16:08 -!- ais523 has left (?). 17:16:17 -!- ais523 has joined. 17:16:18 :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric 17:16:21 possibly JOIN :#esoteric, since they are equivalent 17:16:22 :oerjan!n=oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :possibly JOIN :#esoteric, since they are equivalent 17:16:30 which it was 17:16:58 maybe we could get a bsmnt_bot welcoming service going 17:17:09 ~exec self.raw_regex_queue.pop() 17:17:38 I was just looking for that command in the logs when you typed it... 17:17:42 seems trivial. 17:18:30 i had it in my own history. 17:19:27 ~exec self.register_raw(r":([^!]*)[^ ]* JOIN.*", lambda x,y: sys.stdout(y.group(1))) 17:19:33 -!- ais523 has left (?). 17:19:41 -!- ais523 has joined. 17:19:42 ais523 17:20:01 ~exec self.raw_regex_queue.pop() 17:20:19 ~exec self.register_raw(r":([^!]*)[^ ]* JOIN.*", lambda x,y: sys.stdout("Hello, "+y.group(1)+"!")) 17:20:40 that should do for now 17:21:01 I need to add the fast-loading low-fanciness logs to the wiki 17:21:28 the tunes one, you mean 17:21:44 that's the one 17:21:56 yeah, the others have recently become nearly unbearably slow 17:23:26 Something intermediate would have been nice. 17:23:44 -!- kxspxr has joined. 17:23:44 Hello, kxspxr! 17:23:58 -!- kxspxr has quit (Client Quit). 17:24:17 I think bsmnt_bot frightened them off, probably 17:24:17 hm, this _could_ become annoying after netsplits. 17:24:43 but then bsmnt_bot would probably just get kicked temporarily for flooding 17:24:58 just like happens to EgoBot if you feed it an infinite loop that outputs something by mistake 17:25:04 except that i think it does its own throttling 17:25:41 EgoBot throttles too, but I think it has problems with huge lines 17:25:45 but bsmnt_bot isn't throttled 17:25:49 as far as I remember 17:26:04 ~exec sys.stdout("a\nb\nc\nd\ne\nf\ng\nh") 17:26:05 a 17:26:05 b 17:26:05 c 17:26:06 d 17:26:06 e 17:26:07 f 17:26:09 g 17:26:10 h 17:26:12 i thought i remembered bsmntbombdood saying he put throttling on sys.stdout 17:26:21 oh, the throttle only kicks in after 4 lines 17:26:21 in fact i think we discussed how to do it 17:26:26 which is why I hadn't noticed it before 17:27:03 on the other hand the IRC network may do its own throttling in border cases 17:27:45 i don't know but it's suggested by the original RFC 17:29:05 btw i am not sure your argument that -1 has no square root mod 2^n holds 17:29:33 no, it's an argument that -1 has no square root mod 4^n 17:29:36 which applies in this case 17:29:43 ok 17:29:53 well i still don 17:30:05 't get the argument. 17:30:32 4^n-1 = (2^n-1)(2^n+1) 17:30:44 both brackets are odd, and so have no even factors 17:30:52 they can't both be square numbers because they differ by 2 17:31:06 and because they differ by 2, they can't share an odd factor 17:31:15 but the square could be a*4^n-1 17:31:31 of course, I missed that 17:39:29 anyway, even if -1 is hit in the sequence it isn't a problem 17:39:35 -!- anonfunc has quit. 17:39:41 because you still end up with 0 or 1 before the final d 17:40:28 right 17:41:24 on the other hand Haskell does not give me square roots of -1 for any power of 2 that I've tested 17:41:29 of course, relying on overflow for sssss removes any chance of a Turing-complete system unless you have an infinite number of registers 17:42:38 could use a strange number ring. 17:42:55 in which 2^32 = 0, but there are infinitely many odd numbers 17:43:30 you could define any number that's a multiple of 2^32 to be 0 17:43:41 much the same way as 256 is defined to be 0 in Deadfish 17:44:02 hm... 17:44:51 well, since the language already has that strangeness. 17:44:58 the reference interpreter defines the data type to be 'unsigned int' from C 17:45:08 does it? 17:45:24 it's on the wiki. I wonder if this makes the test against -1 redundant? 17:45:34 or if the -1 is converted to unsigned before the test? 17:45:48 one way or the other there has to be a conversion 17:46:12 of course, 'unsigned int' is allowed by the C specification to be as big as the implementation wants, as long as it's at least 16 bits 17:46:21 so we may as well make it infinite 17:46:53 if we make it infinite we need to modify d 17:47:05 put the -1 test there instead. 17:47:26 and simultaneously deal with the signed-vs-unsigned problem 17:47:38 -!- sebbu2 has joined. 17:47:39 Hello, sebbu2! 17:49:09 10 LET 256 = 0 17:49:22 20 LET -1 = 0 17:49:25 i have a vague idea that there are no square roots of -1 for proper prime powers 17:49:46 let me look up the mobius function 17:50:00 ah, Forte 17:50:18 one of my few esolangs I never wrote an interpreter for 17:50:29 i have considered doing it 17:50:37 but never got around to it 17:52:11 of course, Forte is limited to nonnegative integers 17:52:41 it is? 17:52:54 apparently. I had to read the spec again though to make sure 17:53:12 how is - defined then? 17:54:17 the spec doesn't make it very clear. It doesn't even define +, *, or /, now I've looked (it defines 'division', sort of, but doesn't explain the relationship to the / operator) 17:54:22 I'll go and fix it now 17:55:41 OK, - is now officially undefined if it would lead to a negative result 17:56:58 or it would be if the wiki hadn't crashed the instant I tried to save 17:57:23 * ais523 tries again 17:57:26 it worked this time 17:58:01 i hope it wasn't because i immediately tried to load the page 17:58:34 the justification for Forte resembles the justification for Smetana :) 18:00:43 I actually tried programming in it; programs are mostly short commands, with huge gaps in numbering now and then, and with the occasional huge command that renumbers itself and all the others in the loop 18:00:56 that's why there's a colon line-break provision 18:01:26 I suspect that in larger programs it would be more efficient to use a loop to iterate through each command in a loop and renumber it 18:04:03 -!- UpTheDownstair has joined. 18:04:04 Hello, UpTheDownstair! 18:04:13 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 18:07:05 -!- sebbu has quit (Connection timed out). 18:09:48 I think I'll change your edit into a table. 18:12:22 Yes, that looks better. 18:14:45 -!- NK\ has changed nick to NK`. 18:19:22 -!- ais523 has quit. 18:41:05 * SimonRC goes to dinner. 18:42:58 * oerjan finds a suspicious absense of information about square roots mod n when n is a prime power 18:44:44 oh wait. 18:44:55 * oerjan slaps head 18:45:13 if there are none mod 4 then there cannot be any mod 4n either. 18:47:21 -!- calamari has joined. 18:47:22 Hello, calamari! 18:47:39 wow, a greet bot :) 18:47:41 hi 18:47:53 C++ > calamari :( 18:48:33 >>> "C++" > "Calamari" 18:48:34 False 18:48:45 bsmnt_bot doesn't agree 18:48:52 cool, I have a chance then 18:50:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 18:51:01 error: request for member 'allocate' in 'MyObject::pool', which is of non-class type 'Pool*' 18:51:21 -!- goban has joined. 18:51:22 Hello, goban! 18:51:31 I think Java is messing me up hehe 18:54:36 ahh, I was using . when I should have been using -> 18:59:36 -!- crathman has joined. 18:59:36 Hello, crathman! 19:00:12 oerjan: is bsmnt_bot yours? 19:02:30 no, it's bsmntbombdood's 19:02:54 but me and ais523 played a bit with it 19:04:03 he is responsible for the greetings. 19:08:46 -!- goban has quit (Connection timed out). 19:08:59 -!- goban has joined. 19:08:59 Hello, goban! 19:18:54 -!- goban has quit (Read error: 54 (Connection reset by peer)). 19:19:09 -!- goban has joined. 19:19:09 Hello, goban! 19:21:24 oerjan: yeah, sys.stdout is throttled, but not for multiple calls 19:21:53 oh 19:22:11 >>> 1+1 19:22:11 2 19:22:15 fun :) 19:22:34 >>> def f(x): return x 19:22:34 -!- bsmnt_bot has quit (Remote closed the connection). 19:22:37 -!- bsmnt_bot has joined. 19:22:41 ahem 19:22:43 yep. 19:22:50 eval only does expressions 19:22:51 it does only expressions. 19:23:02 stupid python 19:23:07 hmm... 19:23:19 can exec return the result? 19:23:29 I was thinking about a repl for it 19:23:35 no:( 19:23:43 exec is a statement 19:25:01 hmph. so neither eval nor exec will work as repl for statements. 19:25:17 you have to do analysis of the code 19:25:31 exec statements, eval expressions 19:26:41 just as well to have two different commands then. But you should do something about bsmnt_bot crashing on syntax errors. 19:27:15 i mean, shouldn't a do_exec be isolated? 19:27:21 it is 19:27:28 but you're not using do_exec 19:27:44 i'm not? hm. 19:27:56 nope 19:28:08 when callbacks all executed, exceptions aren't caught 19:28:15 lessee... 19:28:19 you used plain "eval" in the callback 19:33:43 hmm 19:33:48 ~exec sys=0 19:34:02 ~exec print __names__ 19:34:02 NameError: name '__names__' is not defined 19:34:08 ~exec print __globals__ 19:34:09 NameError: name '__globals__' is not defined 19:34:26 hmm 19:34:44 ~exec print type(sys0 19:34:45 SyntaxError: unexpected EOF while parsing 19:34:48 ~exec print type(sys) 19:34:53 hmm 19:34:58 ~exec print type(type) 19:34:59 ~exec exec "def protected(f): try:\n return f()\n\except:\n pass\n\nself.protected = protected" 19:34:59 SyntaxError: invalid syntax 19:35:26 ~exec sys.stdout(type(type)) 19:35:27 19:35:39 print doesn't work 19:36:11 ~exec sys.exit() 19:36:24 do callbacks run in threads or just do_exec's 19:36:32 oerjan: neither 19:36:38 callbacks run in the main thread 19:36:49 ~exec sys.stdout("hello") 19:36:50 hello 19:37:12 eh, so do_exec's don't run in threads either? 19:37:18 ~exec sys.stdout(sys.version) 19:37:19 2.4.3 (#1, Oct 25 2006, 21:45:16) 19:37:19 [GCC 4.1.1 (Gentoo 4.1.1)] 19:37:24 do_exec starts a thread 19:37:32 ~exec exec " 19:37:32 SyntaxError: EOL while scanning single-quoted string 19:37:34 erm 19:37:34 that's what i thought. 19:37:43 ~exec exec " 19:37:44 SyntaxError: EOL while scanning single-quoted string 19:37:46 ~exec exec " 19:37:51 SyntaxError: EOL while scanning single-quoted string 19:38:06 ~exec sys.stdout(sys.path) 19:38:09 so protected should do so as well, otherwise a repl based on it may lock up the bot. 19:38:11 ['/bot', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/Numeric', '/usr/lib/python2.4/site-packages/dbus'] 19:38:24 ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected" 19:38:38 can you define functions? 19:38:51 (and call them later) 19:38:51 hackishly 19:39:13 ~exec self.protected(lambda: raise "foo") 19:39:14 SyntaxError: invalid syntax 19:39:15 sure, but you need to use exec with strings and \n escapes 19:39:23 bloody hell 19:39:29 ~exec sys.__dict__ 19:39:44 ~exec print sys.__dict__ 19:39:48 :-S 19:39:52 ~~exec sys.stdout(locals()) 19:39:54 ~exec sys.stdout(locals()) 19:39:55 {'message': ':lament!n=lament@S010600110999ad06.vc.shawcable.net PRIVMSG #esoteric :~exec sys.stdout(locals())', 'r': <_sre.SRE_Match object at 0xb7c4a0f8>, 'command': 'sys.stdout(locals())', 'self': <__main__.IRCbot instance at 0xb7c4b14c>} 19:40:25 ~exec sys.stdout(self.__dict__) 19:40:25 {'commands_running_lock': , 'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'commands_running': [('sys.stdout(self.__dict__)', 1172518674.4520161, ({'thread_info': , 'exec_global_tracer': , 'pprint': , 're 19:40:26 ': , 'SysWrapper': , 'exec_local_tracer': , '__doc__': None, 'math': , 'IRCbot': , 'args': {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan 19:40:26 ': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d'], 'owner': 'bsmntbombdood!\\S*gavin@\\S*'}, '__builtins__': , '__file__': '/bot/ircbot.py', 'inspect': , 'IRCFileWrapper': , 'sys': baad idea 19:40:46 -!- goban has quit (Connection timed out). 19:40:49 although that shouldn't have flooded 19:41:21 -!- goban has joined. 19:41:29 there may be something about long lines and flooding 19:42:01 yeah 19:42:03 ~exec print "a" 19:42:04 ~exec self.owner = 'lament!\\S*lament@\\S*' 19:42:24 ~exec sys.stdout(self.owner) 19:42:25 lament!\S*lament@\S* 19:42:28 worked :) 19:42:32 lament: won't do anything 19:42:36 you rascal you 19:42:59 why not? 19:43:03 regexes are generated when the bot is initialized 19:43:07 not dynamically 19:43:19 and self.owner is never looked up again? 19:43:20 anyway, you can do everything from ~exec 19:43:25 lament: never 19:43:32 sounds...useful 19:43:50 read the codez 19:44:30 ~exec open('lament', 'w').write('hello') 19:44:31 IOError: [Errno 13] Permission denied: 'lament' 19:45:10 no write access anywhere 19:45:16 exce[t 19:45:26 ~exec sys.stdout(os.listdir(".")) 19:45:27 ['bin', 'bot', 'etc', 'lib', 'usr'] 19:45:31 ~exec sys.stdout(os.listdir("/bot")) 19:45:32 ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'start.sh', 'better.sh', 'ircbot.py'] 19:45:42 /bot/test.pickle 19:45:46 is writable 19:45:55 mm 19:47:32 ~exec os.remove('/bot/test.pickle') and os.mkdir('/bot/test.pickle') and open('/bot/test.pickle/lament', 'w').write('hello') 19:47:33 OSError: [Errno 13] Permission denied: '/bot/test.pickle' 19:48:22 that's not immensely clever. 19:48:41 well, now nothing is writable. 19:49:00 heh 19:49:12 oerjan: shhh, that's only until we get root 19:49:19 ~exec sys.stdout=0 19:49:24 ~exec sys.stderr=0 19:49:33 ~exec del sys 19:49:34 NameError: name 'sys' is not defined 19:49:36 hehehe 19:49:39 ! 19:49:42 Huh? 19:49:51 SimonRC: that will only effect it for the current exec 19:49:54 -!- NK` has changed nick to NK`divx. 19:49:56 bah 19:51:37 i r clevar! 19:55:19 ~exec sys.stdout(os.popen('ls').read()) 19:56:06 ls isn't in the chroot 19:56:10 ~exec sys.stdout(sys.__dict__) 19:56:11 {'_SysWrapper__sys': , 'stderr': <__main__.IRCFileWrapper instance at 0xb7c2f62c>, 'stdout': <__main__.IRCFileWrapper instance at 0xb7c2f5ec>} 19:56:15 hmm 19:57:00 ~exec [i.clear() for i in sys.__dict__] 19:57:01 AttributeError: 'str' object has no attribute 'clear' 19:57:12 clear? 19:57:17 ~exec [i.__dict__.clear() for i in sys.__dict__] 19:57:18 AttributeError: 'str' object has no attribute '__dict__' 19:57:23 sigh 19:57:31 ~exec sys.__dict__.clear() 19:57:34 you can't do anything to sys 19:57:35 -!- bsmnt_bot has quit (Remote closed the connection). 19:57:38 -!- bsmnt_bot has joined. 19:57:38 it gets replaced 19:57:49 * SimonRC tries it again 19:57:50 ~exec sys.__dict__.clear() 19:58:02 hmm, didn't quit this time 19:58:09 -!- bsmnt_bot has quit (Remote closed the connection). 19:58:11 -!- bsmnt_bot has joined. 19:58:12 interesting 19:58:15 I know 19:58:17 oh, now it did 19:58:35 -!- goban has quit (Connection timed out). 19:58:42 -!- goban has joined. 19:59:02 there's a method, __getattr__, that gets called when a attribute on a object that's not there is looked up 19:59:32 if gettattr gets an attribute from it's self that isn't there, it recurses forever 19:59:46 heh 20:00:00 hmm http://www.angryfacts.com/ 20:01:01 ok fixed 20:01:39 and back to class i go 20:04:24 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 20:36:28 -!- ShadowHntr has joined. 21:07:17 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:07:43 -!- goban has joined. 21:17:53 -!- UpTheDownstair has changed nick to nazgjunk. 21:26:59 -!- goban has quit (Connection reset by peer). 21:27:02 -!- goban has joined. 21:45:07 -!- goban has quit (Remote closed the connection). 21:45:17 -!- goban has joined. 21:52:36 -!- ShadowHntr has quit (Client Quit). 21:52:37 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:03:27 -!- sebbu has joined. 22:07:56 -!- goban has quit (Connection reset by peer). 22:08:01 -!- goban has joined. 22:16:59 -!- goban has quit (Operation timed out). 22:22:22 -!- sebbu2 has quit (Connection timed out). 22:27:55 -!- goban has joined. 22:30:02 ~exec self.protected(lambda: 1/0) 22:30:02 AttributeError: IRCbot instance has no attribute 'protected' 22:30:27 ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected" 22:30:33 ~exec self.protected(lambda: 1/0) 22:30:41 fun 23:01:56 -!- digital_me has joined. 23:02:05 ~exec print "I wanna play too :<" 23:03:09 * bsmntbombdood needs to fix print 23:04:33 oh yeah 23:05:02 ~exec sys.stdout("Does this work?") 23:05:03 Does this work? 23:05:08 :DDDDD 23:05:10 yayayay! 23:05:23 ~exec sys.stdout([i+1 for i in range(3)]) 23:05:24 [1, 2, 3] 23:05:39 ~exec sys.stdout((i for i in range 3)) 23:05:40 SyntaxError: invalid syntax 23:05:44 orly 23:05:52 ~exec sys.stdout((1,2,3,4)) 23:05:52 (1, 2, 3, 4) 23:06:00 omg i'm so pro at python 23:06:33 indeed 23:07:27 oh man 23:07:36 #scheme just had a great esolang idea 23:07:49 a lazy non-pure language 23:07:57 ~exec sys.stdout(map((lambda a : a+"."),["a","b","c","d"])) 23:07:58 ['a.', 'b.', 'c.', 'd.'] 23:08:10 what would that mean? 23:08:27 non-pure... non-imperative? 23:08:35 i'm a bit lost on terms from time to time 23:08:48 non-pure is imperative 23:08:54 yeah 23:08:57 i meant that 23:09:06 of course, side effects would have to be _required_ to be sufficiently esoteric 23:09:55 i've been thinking about this esolang where functions have every arithmetic operation defined 23:10:11 and somehow the programmer would be forced to use that feature of course 23:10:29 what? 23:11:03 a lang where functions are _really_ first-class citizens 23:11:22 that is of course already done with math 23:11:34 you mean like all functional languages? 23:11:49 no 23:12:38 hmm 23:12:40 then what? 23:12:44 instance Num a => Num (b -> a) 23:12:52 can you do arithmetic for functions in haskell by default? 23:13:01 for any two functions? 23:13:10 nope, you need the instance i mentioned :) 23:13:22 mmmmmmm yeah :P 23:13:42 you mean like f+g = \x.f(x) + g(x)? 23:14:15 usually it means that 23:14:32 but i wouldn't use the same basic arithmetic operations 23:14:49 more a textual conversion 23:14:56 so it wouldn't make sence like that 23:15:19 (define (f+ f g) (lambda (x) (+ (f x) (g x)))? 23:15:35 -!- sebbu2 has joined. 23:15:39 :D 23:15:51 i find that the same thing you did with haskell 23:16:13 you think too functional, i've already shifted to stacks 23:16:25 much more esoteric when you shuffle stack operations 23:16:34 like zip 23:17:03 "shifted" 23:17:13 i love my vocabulary 23:18:30 hmm, functions are a set of imperative commands that work on a stack, a function is executed, then used a "crazy" operation on, then executed again, repeated until in normal form 23:18:43 functionalbolge 23:18:51 but with a better name 23:19:14 normal form might mean there is no function anymore 23:20:11 now there could be anyther stack, which is full of other functions that wait for their turn, functions can rely on themselves after the crazy operation or can call another function to be executed after they are in normal form or "dead" 23:20:58 the crazy operation in malbolge is boring since it seems so random, i think it should be more logical, but craziers 23:21:00 *-s 23:21:53 hmm... maybe i think about this at school tomorrow 23:22:04 this isn't a good time 23:22:28 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 23:22:41 ~exec fooo 23:22:41 NameError: name 'fooo' is not defined 23:23:02 -!- nazgjunk has joined. 23:23:25 ~exec foo="self.stdout(\"okokokoko\")" 23:23:32 ~exec exec(foo) 23:23:33 NameError: name 'foo' is not defined 23:23:36 :< 23:23:58 ~exec self.dict(foo)="self.stdout(\"okokokoko\")" 23:23:59 SyntaxError: can't assign to function call (, line 1) 23:24:07 ~exec self.dict[foo]="self.stdout(\"okokokoko\")" 23:24:08 AttributeError: IRCbot instance has no attribute 'dict' 23:24:17 ~exec self.__dict__[foo]="self.stdout(\"okokokoko\")" 23:24:18 NameError: name 'foo' is not defined 23:24:24 ~exec self.__dict__["foo"]="self.stdout(\"okokokoko\")" 23:24:29 ~exec exec(foo) 23:24:30 NameError: name 'foo' is not defined 23:24:40 ~exec exec(self.__dict__["foo"]) 23:24:40 AttributeError: IRCbot instance has no attribute 'stdout' 23:24:59 ~exec self.__dict__["foo"]="sys.stdout(\"okokokoko\")" 23:25:04 ~exec exec(self.__dict__["foo"]) 23:25:05 okokokoko 23:25:08 :DDDD 23:25:19 me so proud 23:28:50 ~exec self.__dict__["oko"]=[] 23:29:00 ~exec sys.stdout(self.__dict__["oko"]) 23:29:01 [] 23:29:08 ~exec self.__dict__["oko"].append("sdfg") 23:29:09 ~exec sys.stdout(self.__dict__["oko"]) 23:29:10 ['sdfg'] 23:35:07 -!- sebbu has quit (Read error: 110 (Connection timed out)). 23:37:11 self.__dict__["B"].append("def brainfuck(code):") 23:37:11 self.__dict__["B"].append(" cntr=0") 23:37:11 self.__dict__["B"].append(" i=0") 23:37:11 self.__dict__["B"].append(" memi=0") 23:37:11 self.__dict__["B"].append(" mem=[]") 23:37:11 self.__dict__["B"].append(" for i in range(30000):") 23:37:13 self.__dict__["B"].append(" mem.append(0)") 23:37:15 self.__dict__["B"].append(" i=0") 23:37:17 darn. 23:37:22 execs 23:37:35 ~exec self.__dict__["B"]=[] 23:38:29 ~exec self.__dict__["B"].append("def brainfuck(code):") 23:38:29 ~exec self.__dict__["B"].append(" cntr=0") 23:38:29 ~exec self.__dict__["B"].append(" i=0") 23:38:29 ~exec self.__dict__["B"].append(" memi=0") 23:38:29 ~exec self.__dict__["B"].append(" mem=[]") 23:38:30 ~exec self.__dict__["B"].append(" for i in range(30000):") 23:38:31 ~exec self.__dict__["B"].append(" mem.append(0)") 23:38:34 ~exec self.__dict__["B"].append(" i=0") 23:38:44 ~exec sys.stdout(self.__dict__["B"]) 23:38:45 ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0'] 23:39:07 ~exec self.__dict__["B"].append(" while i ~exec self.__dict__["B"].append(" if code[i]==\'+\':") 23:39:07 ~exec self.__dict__["B"].append(" mem[memi]+=1") 23:39:07 ~exec self.__dict__["B"].append(" elif code[i]==\'-\':") 23:39:07 ~exec self.__dict__["B"].append(" mem[memi]-=1") 23:39:07 ~exec self.__dict__["B"].append(" elif code[i]==\'>\':") 23:39:09 ~exec self.__dict__["B"].append(" memi+=1") 23:39:11 ~exec self.__dict__["B"].append(" elif code[i]==\'<\':") 23:39:14 ~exec self.__dict__["B"].append(" memi-=1") 23:39:28 ~exec self.__dict__["B"].append(" elif code[i]==\'.\':") 23:39:28 ~exec self.__dict__["B"].append(" sys.stdout(chr(mem[memi]))") 23:39:28 ~exec self.__dict__["B"].append(" #elif code[i]==\',\':") 23:39:28 ~exec self.__dict__["B"].append(" #mem[memi]=input()") 23:39:28 ~exec self.__dict__["B"].append(" elif code[i]==\'[\':") 23:39:28 ~exec self.__dict__["B"].append(" if mem[memi]==0:") 23:39:31 ~exec self.__dict__["B"].append(" i+=1") 23:39:33 ~exec self.__dict__["B"].append(" opens=1") 23:39:35 ~exec sys.stdout(self.__dict__["B"]) 23:39:36 ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0', ' while i':", ' memi+=1', " elif code[i]=='<':", ' 23:39:36 memi-=1', " elif code[i]=='.':", ' sys.stdout(chr(mem[memi]))', " #elif code[i]==',':", ' #mem[memi]=input()', " elif code[i]=='[':", ' if mem[memi]==0:', ' i+=1', ' opens=1'] 23:39:48 ~exec self.__dict__["B"].append(" while opens!=0:") 23:39:48 ~exec self.__dict__["B"].append(" if code[i]==\'[\':") 23:39:48 ~exec self.__dict__["B"].append(" opens+=1") 23:39:48 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:39:58 hmm 23:40:06 soon either i get kickbanned or the bot dies... 23:40:10 well, let's continue 23:40:11 ~exec self.__dict__["B"].append(" opens-=1") 23:40:11 ~exec self.__dict__["B"].append(" i+=1") 23:40:11 ~exec self.__dict__["B"].append(" i-=1") 23:40:11 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:40:11 ~exec self.__dict__["B"].append(" if mem[memi]!=0:") 23:40:12 ~exec self.__dict__["B"].append(" i-=1") 23:40:23 ~exec self.__dict__["B"].append(" opens=1") 23:40:23 ~exec aelf.__dict__["B"].append(" while opens!=0:") 23:40:23 ~exec self.__dict__["B"].append(" if code[i]==\'[\':") 23:40:23 ~exec self.__dict__["B"].append(" opens-=1") 23:40:23 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:40:24 NameError: name 'aelf' is not defined 23:40:24 ~exec self.__dict__["B"].append(" opens+=1") 23:40:27 ~exec self.__dict__["B"].append(" i-=1") 23:40:29 ~exec self.__dict__["B"].append(" i+=1") 23:40:30 ~exec self.__dict__["B"].append(" i+=1") 23:40:37 ...? aha 23:40:39 lol 23:41:17 ~exec self.__dict__["B"] = reduce(lambda a,b : a+"\n"+b, self.__dict__["B"]) 23:41:36 ~exec brainfuck("+++++++.") 23:41:36 looking for "\n".join ? 23:41:36 NameError: name 'brainfuck' is not defined 23:41:39 :P 23:41:43 i have no idea :DD 23:42:05 can i dump B as a function somehow? 23:42:16 i don't really know how that works, just testing :P 23:42:18 ~exec exec "\n".join(self.B) + "self.brainfuck = brainfuck" 23:42:19 SyntaxError: invalid syntax 23:42:42 oh, yeah, that's a nice syntax 23:42:46 import string? 23:42:49 i dunno 23:43:06 exec 23:43:17 ~exec "\n".join(self.B) + "self.brainfuck = brainfuck" 23:43:18 ? 23:43:30 ~exec brainfuck("+++.") 23:43:31 NameError: name 'brainfuck' is not defined 23:44:01 bsmntbombdood, help me! :D 23:44:18 you have to execute it 23:44:27 with exec() ? 23:44:33 yeah 23:44:38 it's a function, how do i do that? :o 23:44:46 eval 23:45:05 exec 23:45:06 ~exec eval("brainfuck(+++.)") 23:45:07 SyntaxError: invalid syntax 23:45:11 no... 23:45:16 ~exec exec("brainfuck(+++.)") 23:45:17 SyntaxError: invalid syntax 23:45:17 then? 23:45:20 :P 23:45:33 execute the function code 23:45:40 you have a syntax error in it 23:45:48 might be 23:45:51 actually 23:46:03 i just took a random thingie 23:46:41 it works 23:47:05 ~exec exec(self.__dict__["B"]) 23:47:06 SyntaxError: invalid syntax 23:47:18 ~exec eval(self.__dict__["B"]) 23:47:19 SyntaxError: invalid syntax 23:47:28 i see... 23:47:37 might be a copy paste error 23:47:42 :PP 23:47:45 that'd be fun! 23:48:14 the tabs might now work 23:49:02 look in #bsmnt_bot_errors to see where the errors are 23:49:09 good idea 23:49:29 ~exec exec(self.__dict__["B"]) 23:49:29 SyntaxError: invalid syntax 23:52:33 actually 23:52:53 i might've found my problem, now that i actually looked at the spot in the code where the error was 23:54:14 -!- sebbu2 has quit (Client Quit). 23:54:52 -!- bsmnt_bot has quit (Excess Flood). 23:54:56 -!- bsmnt_bot has joined. 23:56:39 maybe i'll make a bit shorter an interpreter... 2007-02-27: 00:11:16 meh 00:11:36 to sleep, 24 lines is the best i can do without remaking it ---> 00:14:37 -!- nazgjunk has quit ("Leaving"). 00:29:25 -!- nooga has quit (Read error: 110 (Connection timed out)). 00:36:56 -!- oerjan has quit ("Sleep!"). 00:41:09 -!- cmeme has quit ("Client terminated by server"). 00:41:36 -!- cmeme has joined. 00:41:37 -!- nooga has joined. 00:49:20 -!- Shaunaf has left (?). 01:34:25 -!- crathman has joined. 01:36:36 -!- ShadowHntr has joined. 01:54:18 -!- crathman_ has joined. 01:58:13 -!- crathman_ has quit (Client Quit). 02:11:42 -!- crathman has quit (Read error: 110 (Connection timed out)). 02:17:24 -!- bsmntbombdood has changed nick to dbsmntbombdoo. 02:17:47 -!- dbsmntbombdoo has changed nick to odbsmntbombdo. 02:18:15 -!- odbsmntbombdo has changed nick to oodbsmntbombd. 02:19:19 -!- oodbsmntbombd has changed nick to doodbsmntbomb. 02:19:40 -!- doodbsmntbomb has changed nick to bdoodbsmntbom. 02:48:24 -!- bdoodbsmntbom has changed nick to bsmntbombdood. 03:25:10 -!- tgwizard has quit (Remote closed the connection). 03:25:37 -!- Sukoshi has quit (Remote closed the connection). 03:50:15 -!- Sukoshi has joined. 03:56:34 -!- wooby has joined. 04:22:40 -!- ShadowHntr has quit (Client Quit). 04:39:54 -!- RodgerTheGreat has joined. 04:40:02 what are the haps my friends? 04:40:18 not a thing, how goes it RodgerTheGreat 04:40:24 not bad 04:40:59 I have a little backburner project for a boolean logic/ queue based language that's progressing pretty nicely 04:41:23 I ought to have a finished interpreter in a week or two depending on how much free time I end up having. 04:55:48 -!- wooby has quit. 05:02:44 -!- wooby has joined. 05:14:01 -!- ShadowHntr has joined. 05:16:56 No. 05:17:35 ? 05:17:46 hi, Sukoshi- how's it going? 05:18:52 No. 05:18:59 :P 05:19:11 Taking a break after a hectic spring vacation of 70+ pages of homework. 05:19:43 And a Chip-8 emulator in a semi-finished state. 05:19:59 ooh, cool! Chip-8 = fun! 05:20:08 Heh. 05:20:13 It's C though. 05:20:23 I'm too tired to bug hunt now. 05:20:24 -!- digital_me has quit ("Lost terminal"). 05:21:08 haha 05:22:28 a friend of mine built a chip-8 emulator a while ago- his major stumbling block was how sprite collision worked. As soon as I explained the whole XOR register-flag-on-flip thing, he managed to get PONG pretty much working 05:27:42 Sprite collision? 05:28:23 You mean, if there's an already written-to portion of the screen? 05:28:47 yeah 05:29:10 Well, the docs say ``if 1, then flip to 0, if 0, then flip to 1. Use XOR'' 05:29:12 it's actually a really clever way of allowing for "collision" with virtually no code 05:29:35 I know next-to-nothing about game programming. 05:29:39 But I know about processors :P 05:29:51 yeah, and whenever you write a 1 to a pixel that's already 1, there's a register that's set to "flag" a collision 05:30:21 I dabble a bit in game programming... http://rodger.nonlogic.org/games/Neon2 05:30:38 Yeah, VF. 05:30:59 I thought of a very nice approach to emulating the registers without making a huge case table to decide on the register based on the opcode. 05:31:59 I setup a u_int_8 v[0x10]; and then, say we have an opcode 8xnn called opc, v[(opc & 0x0F00) >> 8] = opc & 0x00FF; 05:33:23 hunh 05:34:00 ? 05:35:53 interesting 05:36:06 Aha. 05:36:14 Yeah, I was too lazy to create an opcode. 05:36:17 *opcode parser 05:36:24 **opcode parser proper 05:36:25 Gah. 05:36:35 lol 05:36:45 Plus I wanted this to be as light as I could. Only two opcodes actually use arithmetic operations. 05:36:57 And no subtraction. 05:37:15 *as light as it could. 05:37:39 I'll bet your compiler makes little purring sounds when you feed it your code 05:37:44 ;D 05:37:55 Bit-twiddling is my specialty. It always has. 05:38:04 Darn BCD code made me use arithmetic. Grr. I art angry. 05:38:27 RodgerTheGreat: awesome 05:47:22 zzzzzzz 05:47:44 t? 06:01:46 this is hilarious: http://static.flickr.com/107/291066616_75d02b4dba_o.jpg 06:04:20 of course, this will always be a classic: http://b.armory.com/~relsqui/pictures/misc/stuff.gif 06:07:57 well, good night, folks. 06:09:00 No. 06:09:04 Have a BAD night. 06:09:05 BAAAD. 06:09:58 :'< 06:10:21 * RodgerTheGreat curls into the fetal position 06:15:00 -!- calamari has quit ("Leaving"). 06:15:30 -!- wooby has quit. 06:15:46 Hahahahaha! 06:44:04 -!- ShadowHntr has quit ("End of line."). 07:28:39 -!- meatmanek has quit (Connection timed out). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:39:13 -!- meatmanek has joined. 09:06:21 -!- goban has quit (Remote closed the connection). 09:06:54 -!- goban has joined. 09:11:32 -!- sebbu has joined. 09:13:27 -!- goban has quit (zelazny.freenode.net irc.freenode.net). 09:13:27 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 09:13:27 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 09:13:27 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 09:13:27 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 09:20:27 -!- goban has joined. 09:23:51 -!- oerjan has joined. 09:30:43 -!- Sukoshi has joined. 09:35:04 -!- GregorR has joined. 09:35:04 -!- tokigun has joined. 09:35:04 -!- EgoBot has joined. 09:46:10 -!- sebbu2 has joined. 09:53:52 -!- sebbu has quit (Read error: 60 (Operation timed out)). 10:08:37 -!- kxspxr has joined. 10:38:12 -!- kxspxr has quit. 12:18:22 -!- oerjan has quit ("leaving"). 12:56:29 -!- Ricky has joined. 12:58:20 -!- Ricky has left (?). 13:15:34 -!- Qaz has joined. 13:16:24 -!- Qaz has quit (Client Quit). 14:12:54 -!- nazgjunk has joined. 14:20:05 -!- sebbu2 has quit (Client Quit). 14:22:00 -!- Qaz has joined. 14:22:43 -!- Qaz has left (?). 14:34:34 -!- sebbu has joined. 14:54:38 -!- goban has quit (Remote closed the connection). 14:55:03 -!- goban has joined. 15:16:29 -!- nazgjunk has quit (Read error: 131 (Connection reset by peer)). 15:16:44 -!- nazgjunk has joined. 15:39:43 -!- goban has quit (Connection timed out). 16:40:32 -!- oerjan has joined. 16:54:16 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:54:49 -!- nazgjunk has joined. 16:58:49 good morning, everyone 17:04:02 well hi RodgerTheGreat 17:04:24 nice to meet you, nazgjunk 17:05:33 * nazgjunk looks up a polite reply in his dictionary of earth 17:30:33 -!- jix__ has joined. 17:49:26 -!- nazgjunk has quit (zelazny.freenode.net irc.freenode.net). 17:49:26 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 17:49:26 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 17:49:26 -!- NK`divx has quit (zelazny.freenode.net irc.freenode.net). 17:49:26 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 17:49:26 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 17:49:46 -!- nazgjunk has joined. 17:49:46 -!- oklopol has joined. 17:49:46 -!- pgimeno has joined. 17:49:46 -!- sekhmet has joined. 17:49:46 -!- NK`divx has joined. 17:49:46 -!- SimonRC has joined. 17:57:04 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 17:57:04 -!- NK`divx has quit (zelazny.freenode.net irc.freenode.net). 17:57:04 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 17:57:04 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 17:57:04 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 17:57:04 -!- nazgjunk has quit (zelazny.freenode.net irc.freenode.net). 17:58:12 -!- nazgjunk has joined. 17:58:12 -!- oklopol has joined. 17:58:12 -!- pgimeno has joined. 17:58:12 -!- sekhmet has joined. 17:58:12 -!- NK`divx has joined. 17:58:12 -!- SimonRC has joined. 18:41:30 -!- lament has quit (Read error: 110 (Connection timed out)). 19:17:51 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:18:08 -!- UpTheDownstair has joined. 19:18:26 -!- UpTheDownstair has changed nick to nazgjunk. 19:41:33 * SimonRC lols http://www.irregularwebcomic.net/comic.php?current=109 19:51:41 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 19:51:41 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 19:51:41 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 19:53:39 -!- GregorR has joined. 19:53:39 -!- tokigun has joined. 19:53:39 -!- EgoBot has joined. 21:21:33 -!- sebbu2 has joined. 21:40:33 -!- sebbu has quit (Connection timed out). 21:46:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 21:48:11 -!- nazgjunk has joined. 21:58:31 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:20:21 python's inheritance... how do i access a parent? class b(a): ... self.a.? ... ? 22:20:35 super() 22:20:37 i think 22:21:16 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:21:34 or perhaps not, maybe you just use the name. 22:21:54 self is how you access the object itself 22:22:13 super seems to convert type -> parent of type 22:22:18 which doesn't help self 22:22:48 not that i necessarily need inheritance, i've never really liked it 22:22:57 just wondering, since it seems i'm using it :\ 22:23:01 you can always look up things in a parent class if you know its name. 22:23:26 -!- nazgjunk has joined. 22:23:31 yeah, but i'd like to get the underlying parent object itself off the self 22:23:42 there is none i think 22:23:59 python is not prototype based. 22:24:26 the object contains a reference to the class, but there is no object corresponding to the super-class. 22:24:44 hmm... i'll go around that i guess then 22:24:45 just a reference from the class to its super-classes. 22:25:34 are you maybe asking how to call a constructor? 22:27:40 mm 22:27:52 i have copy() in my superclass 22:28:14 now my child class has copy too, i'd like to call the upper level copy there 22:28:37 right. do superclass(self,...) 22:29:14 any method call x.method(...) is equivalent to class.method(x,...) 22:29:50 *do superclass.copy(self,...) 22:30:14 global name superclass is not defined 22:30:48 by superclass i mean an expression giving you the superclass you want. 22:31:21 which might most simply be its name. 22:31:30 ah, yeah :P 22:31:32 indeed 22:34:03 can i promote a to easily it's child class b if b only adds functionality? 22:34:14 swap easily, to 22:34:33 what do you mean? 22:35:14 in the copy constructor i make the upper level copy... i need, however, return from copy() an instance of the child class 22:35:25 and the upper level copy() returns the parent 22:35:27 oh. 22:35:28 of course 22:36:13 right that is specific problem with copy. 22:36:40 mm maybe 22:37:15 the simplest might be to just change the class of the object, i think it is possible in python. 22:37:45 prolly, i'm just not familiar with that kind of twiddling 22:38:08 i'm not familiar with anything when it comes to python actually :P 22:38:45 i've learned the language by writing small functions for one-time use and read a quick tutorial 22:39:09 i think possibly the __class__ attribute can simply be set. 22:39:48 haha xD 22:39:51 it worked 22:39:52 :P 22:40:51 hmm... now the hard part 22:40:57 the part i have to do myself :\ 22:49:06 argh! http://www.irregularwebcomic.net/118.html 22:52:06 -!- ShadowHntr has joined. 22:57:07 i constantly run out of windows... 22:58:07 doesn't that hurt? 22:58:13 :D 22:58:34 sounds like the right hobby for me 22:58:37 whiiiii... pof 22:58:40 whiiiiiiiiiii... pof 22:58:43 anyway 22:58:50 i have 70 windows open 22:58:56 and i can't open more -_______- 22:59:42 are all those different programs or maybe you should get something with tabs? 23:00:22 not all of them are different programs 23:00:58 i mean, 70 processes, i only have 25 windows open 23:01:09 oh 23:01:49 but maybe 40 channels in irc, 100 seems a weird limit since this machine, from what i've heard, is not that bad 23:02:26 hmm, i made no sence there 23:02:30 but doesn't matter 23:03:20 i don't like tabs 23:03:24 i can't find anything 23:10:27 -!- Qaz has joined. 23:11:11 -!- Qaz has left (?). 23:13:21 -!- UnrelatedToQaz has joined. 23:14:06 that's better 23:15:54 -!- UnrelatedToQaz has left (?). 23:39:08 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:46:52 -!- wooby has joined. 2007-02-28: 00:17:56 -!- Sgeo has joined. 01:12:18 -!- sebbu2 has quit ("@+"). 02:35:54 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 02:51:20 -!- pgimeno has joined. 02:59:58 -!- digital_me has joined. 03:09:26 -!- bsmntbom1dood has joined. 03:11:15 -!- bsmntbom1dood has quit (Client Quit). 03:45:09 -!- oerjan has quit ("leaving"). 03:51:37 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 05:22:02 -!- digital_me has quit ("Lost terminal"). 05:36:02 good night, everyone 05:37:06 -!- RodgerTheGreat has quit. 05:39:09 -!- RodgerTheGreat has joined. 06:11:08 -!- Sgeo has quit (Remote closed the connection). 06:19:42 -!- ShadowHntr has quit ("End of line."). 07:05:21 -!- Sukoshi has joined. 07:26:53 -!- ShadowHntr has joined. 07:29:08 n 07:47:05 -!- maverickbna has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:01:36 -!- manveru has joined. 08:03:53 -!- ShadowHntr has quit (Read error: 110 (Connection timed out)). 08:05:46 -!- maverickbna has changed nick to ShadowHntr. 08:17:00 -!- ShadowHntr has quit ("End of line."). 09:49:57 -!- sebbu has joined. 09:58:09 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net). 09:58:09 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 09:58:09 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 09:58:09 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 09:58:09 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 09:58:09 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 09:58:42 -!- sebbu has joined. 09:58:42 -!- Sukoshi has joined. 09:58:42 -!- pgimeno has joined. 09:58:42 -!- GregorR has joined. 09:58:42 -!- tokigun has joined. 09:58:42 -!- EgoBot has joined. 09:59:23 -!- GregorR has quit (Connection reset by peer). 09:59:34 -!- GregorR has joined. 10:08:49 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 10:08:49 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 10:08:49 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 10:08:49 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 10:08:49 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 10:08:49 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net). 10:09:18 -!- GregorR has joined. 10:09:18 -!- sebbu has joined. 10:09:18 -!- Sukoshi has joined. 10:09:18 -!- pgimeno has joined. 10:09:18 -!- tokigun has joined. 10:09:18 -!- EgoBot has joined. 10:10:55 -!- GregorR_ has joined. 10:10:55 -!- GregorR has quit (Read error: 104 (Connection reset by peer)). 10:12:58 -!- jix__ has joined. 10:14:22 -!- jix__ has changed nick to jix. 10:33:32 -!- nazgjunk has joined. 11:13:11 -!- anonfunc has joined. 11:13:47 -!- anonfunc has quit (Client Quit). 11:13:51 -!- anonfunc has joined. 11:55:42 -!- NK`divx has changed nick to NK`. 12:18:21 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:27:31 -!- oerjan has joined. 12:28:51 -!- nazgjunk has joined. 12:33:51 -!- oklopol has quit (Read error: 104 (Connection reset by peer)). 12:34:28 -!- oklofok has joined. 13:06:45 -!- ais523 has joined. 13:06:58 !ps d 13:07:01 1 ais523: daemon ul bf 13:07:03 2 ais523: daemon deadfish funge93 13:07:05 3 ais523: ps 13:07:18 -!- ais523 has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - Pastebin: http://pastebin.ca/. 13:16:24 -!- UpTheDownstair has joined. 13:17:04 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 13:17:41 -!- UpTheDownstair has joined. 13:18:51 ais523: you correction needs a correction 13:19:07 why, what have I done wrong this time? 13:19:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:19:21 there is a line number 100110 :) 13:19:32 *your 13:19:34 that's correct, I had to pick an arbitary high number 13:19:39 oh. 13:20:12 I suppose using 112 would have made more sense, to avoid clashes with the rest of the program 13:20:37 BTW, a simple proof that -1 is not a square number modulo 2^n (n>=2): all square numbers are 0 or 1 mod 4 13:20:54 i realized that later that evening :) 13:21:11 in a d'oh! moment :) 13:22:05 strangely enough, there does not otherwise seem to be a theory of square residues modulo numbers that have a prime factor more than once. 13:22:19 that i could find by googling, anyhow. 13:22:40 -!- nazgjunk has joined. 13:24:33 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:24:37 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 13:25:00 -!- nazgjunk has joined. 13:37:28 I've just finished writing a new language (although presumably refinements will be needed later) 13:37:38 aha 13:37:48 It's a bit like Thue, but deterministic, with flow control, and regexp-based 13:38:18 I've already written Hello, World!, an Underload interpreter, and a BF interpreter without I/O (although the language has I/O itself) 13:39:33 hm... 13:39:44 btw i am slowly writing a Forte interpreter 13:40:07 I've been thinking about one too 13:40:27 Anyway, here's the new language reference interpreter: http://pastebin.ca/375628 13:40:41 If it had arithmetic, it might be a good language to write Forte in 13:41:03 well i am using Haskell, as usual. 13:41:08 (If arithmetic isn't too hard to implement (I've already done +), it might be a good language to write Forte in anyway) 13:42:32 Hello, World! is a one-liner: /^=1$/Hello, world!=n=x=9/ 13:43:16 -!- jix__ has joined. 13:43:22 btw i am adding some BASIC-like debugging commands - RUN LIST BREAK STEP 13:43:44 does LIST list using the numbers in the source program, or does it use reassigned integers? 13:44:08 reassigned. 13:44:20 or at least that is the intention. 13:44:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:44:49 in fact the interpreter will not keep track of the original numbers. 13:45:06 (other than looking up _from_ them, of course) 13:48:50 I need a better INPUT command in Forte 13:49:14 because in all situations there's an input that causes undefined behaviour, and even removing that clause there'll be any number of inputs that cause havoc 13:49:20 sort of like gets() in C 13:49:39 string input could work. 13:50:10 or... 13:50:34 you could have INPUT be a function. 13:50:50 so you could modify with arithmetic before storing. 13:51:01 if input is a char at a time rather than a number, then it'll be limited to the range 0-255 13:51:18 but that will still end up confusing characters. 13:51:26 so programs could make use of the fact by never modifying those numbers (probably a good idea anyway) 13:51:51 the numbers could still be assigned to other numbers, as long as the other numbers were not then modified themselves 13:52:06 no. 13:52:41 1000 INPUTCHAR 900 13:52:48 1010 PRINT 900 13:52:55 shouldn't be a problem, for instance 13:53:04 hm... maybe 13:54:01 but you could not handle unbounded input length. or could you? 13:54:16 you'd just have to use an infinite number of input variables 13:54:32 which means they would have to be calculated. 13:54:39 at least. 13:54:39 you have to use an infinite number of line labels anyway, so it's not too much of an extra stretch 13:55:00 you mean an infinite length program? 13:55:00 the command would have to be INPUTCHAR expression 13:55:25 no, just the way that you have to keep increasing the line labels up arbitrarily high to keep a loop going (from within the program) 13:55:45 i suppose. 13:56:05 ok, INPUTCHAR expression it is, then. 13:56:19 I'll go and add the INPUTCHAR command, then (what would it be called in BASIC? GET, wasn't it?) 13:56:44 maybe. i suppose it varies by dialect. 13:56:49 and if we have GET we may as well have PUT to make it marginally easier to write a BF interpreter 13:57:31 (The Underload-to-BF compiler has to dump an ASCII table into the program, because there isn't an output-by-char-code command in Underload, and Forte would end up the same way otherwise) 13:58:04 reminds me of Unlambda too 13:58:26 so GET expr but PUT number? 13:59:11 PUT expr (and INPUT expr) would be more symmetrical 13:59:27 I wonder if that would be worth making programs easier-to-write for 13:59:34 in that case, why not LET expr=expr? 13:59:58 that would lose the link with BASIC, but why not 14:00:05 the language is hard enough to write in anyway 14:00:41 -!- jix has quit (Read error: 110 (Connection timed out)). 14:03:04 Updated. 14:15:35 -!- nazgjunk has joined. 15:01:24 -!- nazgjunk has quit ("Leaving"). 15:22:40 -!- crathman has joined. 15:43:40 Damn, I just discovered that the IOCCC was open 15:43:50 and that it ends midnight today UTC 15:44:00 Luckily I had a program ready... 15:48:45 hm... better put in LOAD and SAVE... 16:03:29 -!- anonfunc has quit. 16:11:39 -!- oerjan has quit ("In seach of food"). 16:31:32 -!- GregorR_ has changed nick to GregorR. 17:46:59 -!- tgwizard has joined. 18:46:40 -!- ais523 has quit ("This space intentionally fails to be blank"). 18:58:56 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 19:24:10 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)). 19:31:45 -!- oklofok has quit (Read error: 104 (Connection reset by peer)). 19:39:57 -!- UnrelatedToQaz has joined. 19:40:44 -!- oklopol has joined. 19:41:56 Hullo. 19:42:29 -!- UnrelatedToQaz has quit (Client Quit). 19:54:59 -!- oerjan has joined. 20:45:48 -!- crathman has joined. 20:59:16 -!- nazgjunk has joined. 21:29:15 -!- oerjan has quit (Read error: 104 (Connection reset by peer)). 21:32:36 -!- oerjan has joined. 21:38:54 -!- oerjan has quit ("Lost terminal"). 21:48:50 -!- UpTheDownstair has joined. 21:51:23 -!- UpTheDownstair has quit (Read error: 131 (Connection reset by peer)). 21:51:45 -!- UpTheDownstair has joined. 21:52:23 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:02:49 -!- RodgerTheGreat has joined. 22:03:17 -!- GregorR has changed nick to _D6Gregor1RFeZi. 22:03:44 -!- UpTheDownstair has changed nick to nazgjunk. 22:09:57 -!- nazgjunk has quit ("Leaving"). 22:14:58 -!- sebbu2 has joined. 22:15:35 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:21:57 -!- nazgjunk has joined. 22:33:56 -!- sebbu has quit (Connection timed out). 23:00:56 -!- digital_me has joined. 23:06:22 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 23:22:04 -!- sebbu2 has quit ("@+"). 23:34:39 -!- nazgjunk has quit ("Leaving"). 23:57:37 -!- oerjan has joined. 23:58:34 -!- anonfunc has joined.