00:54:25 <bsmntbombdood> (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:31:39 <SimonRC> bsmntbombdood: you mean: "fibbs = 0:1:zipWith (+) fibbs (tail fibbs)"
01:37:27 -!- ihope has joined.
01:37:31 <SevenInchBread> hmm... is there anything more to the bitmap file format other than simply being a grid of bytes?
01:37:45 <ihope> 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 <ihope-m> (I had to leave to change, you know.)
01:38:10 <SimonRC> SevenInchBread: a grid of 32-bit words?
01:38:28 <SimonRC> we have enough bitmap-based langas already
01:38:38 <SimonRC> How about an SVG-based one?
01:39:50 <SevenInchBread> the program is a series of black lines on a white background..
01:40:53 <SevenInchBread> where a pointer of some sort travels through the whitespace, constrained by black pixel walls, with other color pixels being instructions.
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.
12:53:03 -!- ihope-m_ has joined.
13:11:26 -!- ihope-m has quit (Read error: 110 (Connection timed out)).
13:18:21 <SimonRC> "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 <SimonRC> Word doesn't recognise "uninitialised".
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: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 <SimonRC> dear scholes i keep typn of for or n stuf plz fix kthxby
15:42:17 <SimonRC> oops, that should have been "sholes"
15:42:19 <SimonRC> 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:50:33 <SimonRC> You discovered the newsgroup alt.fan.dragons?
21:51:52 <SevenInchBread> AST = eval("'" + LispCode.replace("'", "\'").replace("(", "'('").replace(")", "')'").replace(" ",","))
21:53:26 <SevenInchBread> Takes a raw string of Lisp code and makes an AST (I think)...
21:54:23 <SevenInchBread> 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:20:28 -!- SevenInchBread has joined.
22:25:38 <oklofok> 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: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:28:28 <SevenInchBread> for performing a series of actions as though I had typed it in on a keyboard.
23:28:57 -!- wooby has joined.
23:33:51 -!- ihope-m_ has changed nick to ihope.
23:41:34 -!- tgwizard has quit (Connection timed out).
23:58:00 -!- ShadowHntr has joined.
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)).
02:04:42 <bsmntbombdood> not quite turing complete yet, because there's no way to recurse
02:11:21 <SevenInchBread> http://i83.photobucket.com/albums/j316/adamadamadamamiadam/harharhar.jpg
02:30:56 -!- digital_me has joined.
02:31:15 <SevenInchBread> 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:33:00 <SevenInchBread> you could always make a "macroless" Lisp that sticks to the purity of Lisp syntax.
02:33:40 <SevenInchBread> (define) would just be a function that accepts a list of symbols and an arbitrary number of quored expressions.
02:34:05 <SevenInchBread> actually... for pure lisp, I would just implement a lambda and a set function.
02:34:32 <SevenInchBread> lambda following the rules above... but without a name.
02:37:06 <SevenInchBread> or... you can make lambda special syntax... since traditionally lambda isn't a "real" function.
02:37:38 -!- digital_me has quit ("Lost terminal").
02:38:34 <SevenInchBread> I can read it, I'm just not familiar with all the function names and such.
02:41:11 <SevenInchBread> lambda can be special syntax... why should it be a function anyways?
02:42:43 <SevenInchBread> " is syntax... what's the harm in simply having a ' for symbols and a \ for lambda?
02:45:24 <SevenInchBread> you can do anything Lisp can do as long as you have symbols and lambda
02:47:26 <bsmntbombdood> define as (set! env (cons (cons (cadr exp) (eval (caddr exp) env)) env)) doesn't work
02:50:18 <SevenInchBread> or is setl prettified macro version... like setq in common lisp?
02:51:58 <bsmntbombdood> so I say the begin is (last (map (lambda (e) (eval e env)) (cdr exp))))
02:52:01 <SevenInchBread> but basically, cond can be replaced with a function that accepts an arbitrary number of quoted expressions.
02:52:23 <bsmntbombdood> the thing that gets defined in the first arg of BEGIN is lost in the second arg
02:52:55 <SevenInchBread> macros are (kinda sorta) syntax sugar for a function that takes quotes... in most cases.
02:54:05 <SevenInchBread> well, I never said you can emulate Common Lisp without macros... you can however, emulate Lisp with quotes and lambda. :D
02:57:03 <SevenInchBread> and strictly symbol-to-value assignment... no function.
02:58:07 <bsmntbombdood> or just use the Y combinator for recursion like i did
02:59:39 <SevenInchBread> looks cooler, and it's a lot easier to press without messing up for me.
03:00:59 <SevenInchBread> I kinda wish keyboards used a separate key for begin quotes and end quotes.
03:03:02 -!- ShadowHntr has joined.
03:04:40 <SevenInchBread> A list of cons isn't really a fast symbol table though... not that you're striving for optimization at the moment.
03:13:43 <bsmntbombdood> 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 <SevenInchBread> basically... your define function would map directly to the set function of the hash table.
03:24:27 <bsmntbombdood> but one eval shouldn't be effected by the previous
03:24:31 <SevenInchBread> for evaluating a symbol, the thunk for the get hash value function cab be the symbol itself
03:25:21 <SevenInchBread> the default value returned if the hash table doesn't contain what you're looking for.
03:26:18 <SevenInchBread> I kinda think errors are messy... but so far its the best solution I've found.
03:26:36 <SevenInchBread> I like the idea of a system that can still run smoothly without the concept of an error.
03:27:57 -!- GregorR has quit ("leaving").
03:29:46 <SevenInchBread> Humans have a very nice system for balancing out faults...a homeostatic system is definetely possible.
03:30:03 <SevenInchBread> depends on where they mistype... of course you can't stop syntax errors...
03:31:45 <SevenInchBread> 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 <bsmntbombdood> so now the users ends up with a list instead of what he wanted and has no ide what went wrong
03:33:33 -!- GregorR has joined.
03:34:03 <SevenInchBread> it's possible that lisp simply isn't cut out for being homeostatic however.
03:35:15 <SevenInchBread> Aside from syntax errors (mismatched brackets), a brainfuck program can never go wrong.
03:57:03 -!- SevenInchBread has quit (Read error: 110 (Connection timed out)).
04:15:38 -!- KyussWren has joined.
04:16:05 <KyussWren> http://i50.photobucket.com/albums/f325/ozewa/rules.jpg
04:16:28 <KyussWren> I am attempting to find an algorithum that works for resolving that conflict for two players.
04:19:53 <KyussWren> I had it on paper months ago, but I lost it =(
04:21:56 -!- GreaseMonkey has joined.
05:34:40 <GreaseMonkey> http://greasemonkey.nonlogic.org/miniscr-ra001.tar.gz
05:51:55 <oklopol> where A and B increase when going clockwise
05:56:58 <oklopol> 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 <oklopol> 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 <oklopol> all the victories automatically
06:01:30 <oklopol> i'm not even gonna start to correct my tautologies and typos :P
06:11:27 <oklopol> 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:43:15 -!- GreaseMonkey has quit ("Police, Don't Feature Euroipods").
11:15:50 <SimonRC> lol: http://newsbiscuit.com/article/dyslexic-child-was-stupid-as-well
12:53:16 -!- ihope_ has joined.
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.
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:17:24 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
23:23:20 <GreaseMonkey> listen: http://uncyclopedia.org/wiki/UnTunes:I_Like_Cats_%28The_Other_White_Meat%29
23:27:30 <bsmntbombdood> `(define ,(caadr exp) (lambda ,(cdadr exp) ,(caddr exp)))
23:28:49 <bsmntbombdood> that's the code to convert (define (f x) ...) to (define f (lambda (x) ...))
23:36:13 -!- nazgjunk has joined.
23:59:12 -!- lament has quit (Remote closed the connection).
23:59:15 -!- lament has joined.
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").
01:03:13 <GreaseMonkey> import "ircutils" def x def lament set lament getuser "#esoteric" "lament" if lament for x 0 99 shoot lament
01:03:22 <GreaseMonkey> import "ircutils" def x def lament set lament getuser "#esoteric" "lament" if #lament for x 0 99 shoot #lament
01:09:41 <GreaseMonkey> 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
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: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 <Keymaker> alright, i finally finished the underload interpreter in brainfuck that i started last week, today.
18:08:03 <Keymaker> it's quite slow, but should work with all the valid programs. :)
18:08:04 <Keymaker> 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:33:18 -!- digital_me has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/0000000000]").
20:33:34 <oklofok> [22:25:27] <Zappis> 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 <oklofok> 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 <ihope_> You know, the big problem with esoteric programming languages is that they must have support for assembly language in there somewhere.
22:37:28 <ihope_> ...I mean programming languages must in order to be used very seriously.
22:38:00 <ihope_> 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:52:53 <ihope_> I guess what I'm saying is esoteric programming languages shouldn't try to offer any more I/O than the basics.
23:02:17 <ihope_> There are graphical esoteric programming languages and such out there.
23:06:25 <oklopol> i don't see what you meant with the assembly thingie but maybe that doesn't matter :)
23:11:18 -!- calamari has joined.
23:23:39 <SevenInchBread> hmmm... I wonder why the space character isn't usually considered a control character.
23:26:12 <ihope_> Because it acts like a printable character in every way, except that it's entirely "white".
23:26:24 <ihope_> 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).
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:50:59 <SevenInchBread> 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 <SevenInchBread> And have two "goals", which are special points that output a single character to a specific players buffer.
04:52:23 <SevenInchBread> the winner is the one who completes whatever the task was and outputs it to their buffer.
05:16:18 -!- GreaseMonkey has joined.
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:44:48 <RodgerTheGreat> is anyone aware of an existing queue-based language? (as opposed to a stack-based language)
16:45:57 <ihope> There are probably many.
16:46:04 <ihope> I know there's at least one.
16:46:45 <ihope> http://esoteric.voxelperfect.net/wiki/Category:Queue-based
16:46:45 <RodgerTheGreat> I'm working on an interpreter for one, and I wanted to see if I could learn from anyone else's implementation
16:52:02 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
16:52:25 <RodgerTheGreat> http://esoteric.voxelperfect.net/wiki/Wiki_Cyclic_Tag <- wow- I didn't realize that anyone had actually accomplished this
16:58:37 -!- nazgjunk has joined.
17:53:28 <ihope> I think I have an interpreter for that somewhere in a user subpage on Wikipedia.
17:55:21 <ihope> 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 <ihope> Just wondering what would happen.
19:07:54 <oerjan> BTW the IRC command is PASS.
19:11:25 <oerjan> for password authentication
19:11:50 <oerjan> if i have understood the RFC correctly.
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.
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: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.
04:00:58 * bsmntbombdood has done an interesting experiment in dynamic typing and psuedo operator overloading in C
04:16:59 * GreaseMonkey is trying to get some good 3D working under Allegro
04:17:19 <GreaseMonkey> 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:44 <GreaseMonkey> MY MINISCRIPT INTERPRETER *SUCKS* UNDER WINDOWS!!!!!!!!!!!!!!!!!!!!!!
04:32:22 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
04:39:42 <GreaseMonkey> V3D_f is not enough... it doesn't give rotations
04:47:50 -!- Arrogant has joined.
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:16:17 -!- Coder[BP] has quit ("Leaving").
13:16:31 -!- RodgerTheGreat has joined.
13:20:51 <oklopol> whew he's gone we can start talking again
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 <oerjan> This reminds me of ZenMud, a joke MUD in which the purpose was to be totally silent as long as possible...
16:58:54 <oerjan> Of course you young grasshoppers may not even know what a MUD is ;-)
16:59:32 <oerjan> Except the one of you who I remember was writing one...
17:13:51 <oerjan> In a bad shape I take?
17:14:13 <SimonRC> well, I have lots of work to do
17:15:54 <oerjan> Hope it pays off one way or the other :)
17:25:19 <SimonRC> Hmm. Apparently functions are bad: http://www.untwistedvortex.com/2006/07/29/defeating-functionitis/
17:25:26 <SimonRC> but we here all knew that already
17:37:59 -!- ais523 has joined.
17:46:50 <oerjan> That seems to apply only to languages which cannot do any function inlining.
17:48:36 <SimonRC> And in which function calls are a large part of the latency.
17:49:07 <SimonRC> 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 <SimonRC> The world's largest man-made non-nuclear explosion.
18:06:50 -!- ais523 has quit.
18:15:44 -!- nazgjunk has changed nick to n[a]zgjunk.
18:18:35 -!- sebbu has joined.
18:29:00 <oerjan> No reported casualties != no-one was killed, especially in the Soviet Union.
18:29:49 <GregorR> On the other hand, "100 casualties" != any deaths necessarily.
18:31:31 <oerjan> "In an act of unfounded capitalist aggression, hundred of our brave Siberian workers were smeared with oil and became horribly dirty."
18:33:13 <oerjan> Just what popped into my mind after GregorR's statement :)
18:51:33 -!- ShadowHntr has joined.
19:56:22 -!- RodgerTheGreat has quit.
20:48:11 -!- RodgerTheGreat has joined.
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:43:15 -!- nazgjunk has changed nick to na[zZz]gjunk.
23:25:16 * SimonRC tries to read a scientific paper
23:25:23 <SimonRC> it's a bit tricky to understand
23:25:29 <SimonRC> "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:32:46 -!- RodgerTheGreat has joined.
23:36:31 <fizzie> 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.)
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:31:53 <lament> fizzie: theoretical model of masculine and feminine verbal behaviour?
00:34:15 -!- pikhq has joined.
00:34:36 <fizzie> That sounds as a likely translation, considering the English title.
00:45:56 -!- Sgeo has joined.
00:52:17 <SimonRC> ooh, ouch http://www.youtube.com/watch?v=vkzKaUbfwfU&NR
00:52:25 <SimonRC> 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
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:39:41 <GreaseMonkey> ++++++++[>+++++++++>++++<<-]>.---.+++++++..+++.>+[.]
07:41:59 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
07:50:59 <oerjan> 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:12:59 <oerjan> What happened to the collective attempt to translate that Japanese paper?
08:19:15 <oerjan> 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 <oerjan> Then one could write an implementation that did not need a memory limit.
08:23:08 <oerjan> 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:16 <pgimeno> I didn't participate directly in that, actually
11:24:46 <pgimeno> 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 <pgimeno> that was my conclusion, except for one or two chapters I didn't translate
11:28:42 <pgimeno> 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").
16:18:22 -!- nazgjunk has joined.
16:40:54 <ihope> ~exec time.sleep(1)
16:41:21 <ihope> ~exec while 1: time.sleep(10); self.raw("PRIVMSG #esoteric :Tick")
16:42:08 <ihope> ~exec self.raw("QUIT")
16:42:08 -!- bsmnt_bot has quit.
16:42:12 -!- bsmnt_bot has joined.
16:42:17 <ihope> ~exec while 1: time.sleep(1); self.raw("PRIVMSG #esoteric :Tick")
16:42:40 <ihope> ~exec self.raw("QUIT")
16:42:54 -!- bsmnt_bot has quit (Client Quit).
16:42:56 -!- bsmnt_bot has joined.
16:43:29 <ihope> ~exec x = 60; while 1: time.sleep(x); x = x/2; self.raw("PRIVMSG #esoteric :Tick")
16:43:51 <ihope> ~exec self.exec_execer
16:44:01 <ihope> ~exec self.exec_execer()
16:44:39 <ihope> ~exec self.exec_execer("self.raw('PRIVMSG #esoteric :foo')", "self.raw('PRIVMSG #esoteric :bar')")
16:45:19 <ihope> ~exec self.exec_execer(2, 3)
16:46:15 <ihope> ~exec sys.stdout(self.exec_execer)
16:46:15 <bsmnt_bot> <bound method IRCbot.exec_execer of <__main__.IRCbot instance at 0xb7ca306c>>
16:52:24 <ihope> ~exec exec("self.raw('PRIVMSG #esoteric :Foo')")
16:53:30 <ihope> ~exec exec("x = 60\nwhile 1:\n time.sleep(x)\n x = x/2\n self.raw('PRIVMSG #esoteric :Tick')")
16:53:40 <ihope> If I'm lucky, that'll go boom in 2 minutes.
16:55:27 -!- bsmnt_bot has quit (Excess Flood).
16:55:28 -!- bsmnt_bot has joined.
16:55:44 <ihope> ~exec exec("x = 10\nwhile 1:\n time.sleep(x)\n x = 9x/10\n self.raw('PRIVMSG #esoteric :Tick')")
16:55:53 <ihope> ~exec exec("x = 10\nwhile 1:\n time.sleep(x)\n x = 9*x/10\n self.raw('PRIVMSG #esoteric :Tick')")
16:56:35 <ihope> Ahh, the suspense...
16:56:46 -!- bsmnt_bot has quit (Excess Flood).
16:56:48 -!- bsmnt_bot has joined.
16:57:36 <ihope> ~exec exec("x = 5\nwhile 1:\n time.sleep(x)\n x = 99*x/100\n self.raw('PRIVMSG #esoteric :%d' % x)")
16:57:52 -!- bsmnt_bot has quit (Excess Flood).
16:57:55 -!- bsmnt_bot has joined.
16:58:02 <ihope> That I didn't expect.
16:58:29 <ihope> ~exec exec("x = 5.0\nwhile 1:\n time.sleep(x)\n x = 99*x/100\n self.raw('PRIVMSG #esoteric :%f' % x)")
16:59:27 <ihope> Very fun, I'm sure.
17:01:17 <ihope> This is a little spammy, isn't it?
17:01:32 <ihope> ~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:42 -!- bsmnt_bot has quit (Excess Flood).
17:01:45 -!- bsmnt_bot has joined.
17:02:05 <ihope> ~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 <ihope> Now hopefully nobody will notice until it's too late.
17:02:21 <ihope> Or something like that, anyway.
17:12:26 <ihope> Also, I resemble this remark: "16:28:32 <SimonRC> 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 <SimonRC> ihope: dude, that was, like, ages ago
17:32:32 <ihope> I just now noticed it.
17:32:45 <SimonRC> why were you reading such old logs
17:33:10 <ihope> 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:04:20 <SimonRC> I think I just found the most useless use of $1M: http://www.geostationarybananaovertexas.com/
18:11:57 <GregorR> You of course mean "brilliant"
18:17:25 <ihope> You know, the whatchamacallit is really pretty pointless.
18:17:45 <ihope> ~exec exec("x = 900.0\nwhile 1:\n time.sleep(x)\n x = x/2\n self.raw('PRIVMSG #esoteric :%f' % x)")
18:18:08 <ihope> ...Wait, no, can I undo that?
18:18:40 <ihope> ~exec while 1: time.sleep(10); self.raw("PRIVMSG #bsmnt_bot_errors :Test")
18:19:03 <ihope> ~exec self.raw = 3
18:21:21 <ihope> ~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 <ihope> ~exec self.raw("PRIVMSG #esoteric :*boom*")
18:22:11 -!- bsmnt_bot has quit (Remote closed the connection).
18:22:15 -!- bsmnt_bot has joined.
18:22:52 <ihope> And not bad, at that.
18:39:10 <ihope> How do I kill just the process?
18:39:55 <ihope> Methinks I'm looking at an older version of the bot's source code...
18:40:05 <bsmntbombdood> and you can get the source at http://bsmntbombdood.mooo.com/chroot_ircbot.py
18:45:56 <bsmnt_bot> 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:48:12 -!- oerjan has joined.
18:55:05 <ihope> But ~exec self.raw("QUIT") is more fun!
18:55:52 <ihope> ~exec self.do_kill = 0
18:56:27 <ihope> ~exec self.do_exec = 0
18:56:34 <ihope> Not that I haven't done that before.
18:57:17 -!- sebbu has joined.
19:01:35 <ihope> I advise you to ~quit.
19:01:51 <ihope> Uh... good question.
19:02:21 * ihope bursts into tears and runs away
19:06:03 <ihope> ~ctcp #esoteric VERSION
19:06:39 <ihope> ~ctcp #esoteric VERSOIN
19:06:51 <ihope> ~ctcp #bsmnt_bot_errors VERSOIN
19:10:56 <ihope> You know, all this chroot stuff is a little silly, don't you think?
19:11:01 <ihope> Why not use sudo -u instead?
19:11:17 -!- sebbu2 has joined.
19:12:10 <SimonRC> ihope: because chroot restricts the touchable stuff in an easy-to-understand manner.
19:12:39 <ihope> I take it sudo -u doesn't, then.
19:12:59 <SimonRC> it restricts you to a certain user, which is a bit more complicated
19:13:33 <oerjan> sudo -u still permits you to read every file that is world readable on the computer
19:14:09 <ihope> That specifies the user to run as.
19:14:24 <ihope> It'd be a bad idea to plain old sudo chroot_ircbot.py.
19:14:27 <oerjan> as in, not restricted to be readable by only a single user
19:14:37 <ihope> oerjan: what files are those, then?
19:15:13 <ihope> Running it as a different user would be stupid?
19:16:29 <oerjan> it would include common files of course, but might also include some private files dependent on bsmntbombdood's setup
19:17:40 <oerjan> if his user directory is world readable, and he has forgotten to protect some files
19:18:29 <bsmntbombdood> perms on the whole machine would have to be perfect
19:18:30 <ihope> 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:22:11 <ihope> ~exec self.raw("PRIVMSG #esoteric :OMG")
19:27:09 <ihope> ~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:31:46 <ihope> ~exec self.ihope = IRCbot("foobar", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True)
19:32:35 <ihope> ~exec self.ihope = IRCbot("irc.freenode.net", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True)
19:32:47 <ihope> Good catch, there...
19:34:22 <bsmntbombdood> http://www-formal.stanford.edu/jmc/weierstrass.html
19:35:07 <ihope> ~exec self.ihope = IRCbot("71.205.100.59", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True)
19:35:12 <ihope> ~exec self.ihope.listen()
19:37:21 <ihope> ~exec self.ihope = IRCbot("85.188.1.26", "ihope_bot", "nope", "ihope", "Now 100% Real", 6667, "#esoteric", True, ["#esoteric"], "#", True)
19:37:33 <ihope> ~exec self.ihope.listen()
19:37:36 -!- ihope_bot has joined.
19:38:20 <ihope> ~exec self.ihope.bsmnt = self
19:38:33 <ihope> #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 <ihope> Pff. I want my money back.
19:39:07 <ihope> ~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 <ihope> #exec self.bsmnt.ihope.bsmnt.ihope.bsmnt.ihope.raw("PRIVMSG #esoteric :Foo!")
19:39:57 <ihope> #exec self.bsmnt.raw("PRIVMSG #esoteric :Foo!")
19:40:13 <ihope> #exec self.raw("PRIVMSG #esoteric :Foo!")
19:41:11 <ihope> #exec self.raw("NICK ihope_")
19:41:11 -!- ihope_bot has changed nick to ihope_.
19:41:27 <ihope> #exec self.raw("JOIN #math #haskell #compsci #tapthru")
19:41:41 <ihope> That didn't work, did it?
19:42:46 <ihope> #exec self.raw("PRIVMSG #math :Ello.")
19:43:12 <ihope> #exec self.raw("PRIVMSG #math :>:-)")
19:44:10 <ihope> #exec self.raw("QUIT")
19:44:11 -!- ihope_ has quit.
19:47:57 <oerjan> Channels in JOIN must be comma separated
19:50:07 <ihope> ~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 <ihope> ~exec self.ihope.listen()
19:58:06 <ihope> You can stop waiting now.
19:59:52 * SimonRC once did 'ifdown eth0; ifup eth0' over ssh.
20:01:30 <SimonRC> well, it disconnected the connection I was connected by, then re-connected it.
20:01:41 <oerjan> i guess it would not have worked on separate lines :)
20:01:45 <SimonRC> and fortunately the re-connection bit worked
20:02:00 <SimonRC> 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 <ihope> ~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:38 <GreaseMonkey> 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:44:19 <ihope> Just trust me when I say it did something.
21:44:40 <lament> for i = 1 to infinity; print i; end for; print "Done!"
21:45:12 <ihope> ~exec for i = 1 to infinity; print i; end for; print "Done!"
21:47:11 <lament> for i = infinity to 1; print i; end for; print "Done!"
21:47:26 -!- GreaseMonkey has quit ("brb rebooting router").
21:47:43 <lament> this prints all powers of 2:
21:48:02 <lament> x = 1; while x != -1; print x; x = x * 2; end while;
21:52:08 <ihope> x = 1; while 1: print x; x = x * 2
21:52:22 -!- fizzie has quit (Read error: 145 (Connection timed out)).
21:52:24 <ihope> Also, print (iterate (*2) 1)
21:52:30 -!- GreaseMonkey has joined.
21:53:53 <lament> ihope: that won't terminate. My program does!
21:54:23 <ihope> Also, print (iterate (*2) 1 :: [Int])
21:54:28 <ihope> That one *might* terminate!
21:55:01 <lament> but mine prints all powers of 2 before terminating!
22:05:43 -!- SevenInchBread has joined.
22:19:47 <ihope> #exec self.raw("NICK lambdabot\r\nJOIN #lobby")
22:19:56 <ihope> ...No, that won't work, will it?
22:20:24 <ihope> ~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 <SimonRC> "The Hetrosexual Adgenda: Exposing the myths"
23:31:38 -!- nazgjunk has quit ("Bi-la Kaifa").
00:18:37 -!- SevenInchBread has quit (Read error: 104 (Connection reset by peer)).
00:41:56 -!- SevenInchBread has joined.
01:33:00 <ihope> I have a three-and-a-half-inch floppy.
01:33:12 <ihope> A bunch of them upstairs, that is.
01:46:40 <SevenInchBread> I've always wanted to officially change 3 1/2 inch floppy disk to 3 1/2 inch floppy dick.
02:01:21 <ihope> Girls generally would.
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 <SimonRC> 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 <SimonRC> Actually LISP was never originally intended to be seen by a computer.
03:38:21 <SimonRC> 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)).
04:06:32 <bsmntbombdood> 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).
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:31:19 -!- Arrogant has quit ("Leaving").
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: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 <SimonRC> _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.
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.
00:00:55 -!- sebbu2 has quit ("@+").
00:24:47 -!- ShadowHntr has quit (Client Quit).
00:40:56 -!- pikhq has quit (Read error: 110 (Connection timed out)).
01:01:53 <ihope_> *Writing* a Thue interpreter?
01:01:58 <ihope_> Surely there already is one.
01:02:03 <ihope_> And besides, Thubi's better :-p
01:17:51 <SevenInchBread> yes well... Thue interpreters take all of ten minutes. :)
01:18:04 <SevenInchBread> but I've already been diverted to a fungeoid of my own.
01:18:30 <SevenInchBread> I feel dirty though... because I'm using C-style arrays in Python to represent the program.
01:19:07 <SevenInchBread> It fits the task... fairly well... and I'm assuming it's faster (being a direct wrapper over C stuff)
01:21:23 <bsmntbombdood> I wonder if there's a straightforward way to compile lambda calculus into C
01:22:11 <SevenInchBread> This is a pretty neat language so far... I'll reveal it once I'm done with the interpreter.
01:22:53 <ihope_> bsmntbombdood: 'course there is.
01:23:18 <ihope_> Well, you need closures.
01:23:26 <ihope_> You need a way to represent trees in C.
01:23:42 <ihope_> Find me one of those, then we'll talk.
01:30:43 <ihope_> That's a tree with either S or K at each leaf?
01:34:10 <bsmntbombdood> I don't need an actual implementation, just how to do it...
01:36:58 <ihope_> C doesn't have first-class functions, does it?
01:37:51 <ihope_> Well, I guess you still have the issue of closures.
01:38:04 <ihope_> Unless C supports currying more nicely.
01:38:52 <ihope_> Assume what has closures?
01:38:58 <ihope_> Assume C has currying, you mean?
01:39:28 <ihope_> Should we go so far as to assume C is lazy?
01:41:34 <ihope_> ~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:42:28 <ihope_> ~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:41 <ihope_> ~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:57 <ihope_> ~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:15 <ihope_> ~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:31 <ihope_> ~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:53 <ihope_> So take the one that worked and translate that into C.
01:44:33 <ihope_> I think I managed to do it better once before, but oh well...
01:44:42 <ihope_> ...actually, lemme see here.
01:44:50 <ihope_> ~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 <ihope_> ~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:16 <ihope_> Go with the one that worked.
01:45:26 <bsmntbombdood> s = lambda x: lambda y: lambda z: lambda: x(z)(y(z))(); k = lambda x: lambda y: lambda: x();
01:49:18 <ihope_> The one that returned 3.
01:49:54 <bsmntbombdood> s = lambda x: lambda: lambda y: lambda: lambda z: lambda: x(z)()(y(z)())(); k = lambda x: lambda: lambda y: lambda: x();
01:51:26 <bsmntbombdood> error: ‘func_t’ declared as function returning a function
01:53:21 <ihope_> Darn different notations for all this stuff.
01:54:16 -!- oklopol has quit (Success).
01:54:46 <ihope_> Then again, I've been doing it all wrong, surely.
01:55:31 -!- oklopol has joined.
01:55:40 <ihope_> ~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:46 <ihope_> ~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:57:19 <ihope_> C is not what I'd call the best programming language in the world.
01:57:33 <ihope_> I have not yet seen anything I can call the best programming language in the world.
01:58:00 <ihope_> Well, okay, *maybe* Z-notation.
01:58:33 <ihope_> A program description language, I think.
01:58:44 <ihope_> Catch you later. It's suddenly bedtime, as they say.
02:00:35 -!- ihope_ has quit (Read error: 131 (Connection reset by peer)).
02:12:01 -!- calamari has quit ("Leaving").
02:18:25 <SimonRC> Heh, my lecturer has mucked up "respectively" in the homework.
02:19:02 <SimonRC> He askes us to give a refutation if the clause is satisfiable and a satisfying assignment if it isn't.
02:49:57 -!- oklopol has quit (Read error: 110 (Connection timed out)).
02:53:49 <SimonRC> 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:33:24 <GreaseMonkey> you shoulda joined that and saw who came on :D
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:18:05 -!- GreaseMonkey has quit ("buy viagra buy xanax buy... [VIRUS REMOVED]").
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 <oklopol> <bsmntbombdood> that's easy, struct { void* right, left}
17:58:20 <oklopol> 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:40:06 <oklopol> You are lying. struct { void *right, *left; }; is what you meant
19:53:52 -!- oerjan has joined.
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:51:36 <oerjan> ~exec sys.stdout("bar")
22:57:11 <fruitbag> I have two great names if I am ever to do my own programming languages.
22:57:24 <fruitbag> Either the Baggage programming language, or Turing.
22:57:47 <oerjan> I believe Turing is already taken, don't know about Baggage
22:57:52 -!- ShadowHntr has joined.
22:58:14 <oerjan> BTW don't you mean Babbage?
22:58:18 <lament> Turing would be ridiculously confusing
22:58:40 <lament> since you have to call the language used to programs turing machines something...
22:59:28 <fruitbag> I knew the spelling, but that was a slip.
23:03:55 <oerjan> Hey, the Babbage language almost exists and is esoteric :)
23:04:30 <oerjan> http://www.tlc-systems.com/babbage.htm
23:05:57 <lament> of course, once again, babbage is a confusing name
23:06:11 <lament> since you have to call the language used to program the analytic engine somehow
23:06:30 <lament> it doesn't have a name
23:07:15 <fruitbag> What's the most interesting esoteric programming language you pople have used?
23:09:10 <lament> hard to say what's the most interesting
23:09:26 <oklopol> i wrote quicksort in english yesterday
23:09:34 <oerjan> well, i like Unlambda, obviously
23:09:35 <lament> different langs are interesting for very different reasons
23:11:00 <lament> 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 <oklopol> i think wireworld was more interesting before the computer to be honest
23:11:43 <oklopol> i used to play with it before that :<
23:11:48 <fruitbag> ```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:15 <oklopol> !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:54 <oklopol> what has been done with unlambda?
23:13:12 <oklopol> that's the most complex i've seen or heard about :\
23:13:13 <lament> 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 <oerjan> What, you haven't seen any of the Unlambda self-interpreters?
23:13:41 <lament> and thue is interesting because it eats your brain very gently
23:14:15 <fruitbag> For the mathematician, Unlambda may be interesting.
23:14:51 <lament> for a mathematician, lazy-k would probably be preferrable to unlambda.
23:15:10 <oerjan> Mine is at http://oerjan.nvg.org/esoteric/interpreter.unl
23:15:43 <lament> i find unlambda UNinteresting because it's too difficult.
23:16:19 <oklopol> you should put the functions in place or?
23:17:18 <fruitbag> lament: difficult is interesting.
23:17:20 <oklopol> whitespace makes no difference there right?
23:17:26 <fruitbag> Whatever is difficult is more interesting....
23:17:43 <lament> oerjan: wow, you actually wrote that by hand?
23:18:00 <oklopol> oh, forgot to say, oerjan, that's fucking sick :\
23:18:12 <fruitbag> You people should code in Intercal
23:19:07 <oerjan> I have coded in Intercal. An Unlambda interpreter :D
23:19:14 <lament> oerjan: not bad, i don't think many people do taht
23:20:19 <fruitbag> I have an interesting on an esoteric programming language...
23:20:22 <oerjan> http://oerjan.nvg.org/esoteric/intercal/
23:20:32 <fruitbag> What about a programming language based on electronic circuits?
23:21:39 <lament> oerjan: oh, heh, i remember looking at one, years ago
23:22:23 <lament> nice use of PLEASE statements
23:23:18 <fruitbag> If I were ever to do a programming language, I'd call it `Ramanujan'.
23:23:57 <lament> If I were ever to do a programming language, I'd call it "Your pants".
23:24:30 <lament> "I'm an expert in your pants"
23:24:45 <lament> "Now take this code and re-write it in your pants"
23:26:15 <oerjan> Heh, a search for "Ramanujan programming language" instead leads to the Unlambda page
23:31:31 -!- digital_me_ has joined.
23:31:41 <lament> oh no! it's me, but digital!
23:32:13 * lament examines how few bits they digitized me to
23:33:17 <lament> jesus christ, no wonder audiophiles prefer vinyl.
23:41:44 -!- fruitbag has left (?).
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:51:25 -!- anonfunc has quit.
03:47:51 -!- SevenInchBread has quit ("haaaaaaaaaa").
03:49:46 <bsmntbombdood> in a lazy evaluation system, when do things get evaluated
04:06:57 -!- ShadowHntr has quit (Client Quit).
04:53:42 -!- anonfunc has joined.
05:32:48 -!- digital_me_ has quit ("Lost terminal").
05:37:45 -!- Arrogant has joined.
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:43:50 -!- oerjan has quit ("Apparently not").
11:34:51 <SimonRC> My univeresity seems to have comissioned the building of two doors that lead into midair.
11:35:10 <SimonRC> The look much more like doors than like windows.
11:35:33 <SimonRC> But they are on the first and second floors, not the ground floor
11:36:14 <SimonRC> Where they are placed makes it impossible to attach a fire escape to them that would reach the ground.
11:36:42 <SimonRC> as they are on a walkway that goes over a road.
11:37:50 <SimonRC> 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.
12:47:42 -!- sebbu has joined.
14:00:18 -!- jix__ has joined.
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:28 <SimonRC> http://www.albinoblacksheep.com/flash/mario-remix.php
15:02:12 -!- jix__ has changed nick to jix.
15:10:38 -!- tgwizard has joined.
16:09:16 -!- nazgjunk has joined.
16:24:44 <SimonRC> jix: ?? http://www.teuton.org/~stranger/code/emoticon/emoticon.html
16:25:13 <jix> :) :) because i have a girlfriend now
16:25:31 <jix> :| because i won't see her the next 2 days
16:26:45 <SimonRC> Bah, I don't seem to want a girlfreind much
16:26:57 <SimonRC> you're supposed to be a geek
16:27:39 <jix> well i fell in love so...
16:28:00 <jix> and i prefer spending time with her over programming etc....
16:33:12 <SimonRC> geeks are supposed to have paraphilias not fall in love.
16:37:52 <GregorR> I repel women in the most literal sense imaginable.
16:40:27 <SimonRC> 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:26:40 <jix> hmm start.sh wird also ignoriert
17:26:50 <jix> wrong channel
19:16:41 -!- FabioNET has joined.
19:20:17 <SimonRC> Mmmm, explosion: http://www.i-am-bored.com/bored_link.cfm?link_id=21881
19:39:26 <SimonRC> It's called "viral advertising".
19:40:23 <SimonRC> Actually, I think all online ads should be released to be redistributed freely as long as they are unmodified.
19:40:56 <SimonRC> 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:34:28 -!- Arrogant has quit ("Leaving").
22:37:43 <oerjan> bsmntbombdood: What kind of lazy evaluation is it you want to know about?
22:40:18 <oerjan> 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 <bsmntbombdood> how do we know when something needs its exact value?
22:41:22 <oerjan> 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 <oerjan> *terminates or is guaranteed to be used
22:42:49 <bsmntbombdood> How do we know when to create a delay, and when to force it?
22:44:27 <oerjan> Well, basically you can make every expression a delay
22:44:49 <oerjan> (Avoiding it is just an efficiency matter)
22:44:57 <ihope> 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:54 <ihope> I then resign and hold an election for the next leader.
22:46:34 <oerjan> You don't need to delay variables - assume their contents are already delayed as needed
22:47:26 <oerjan> so foo just gets bar, which may contain a promise
22:48:54 <oerjan> or put another way, x is a binding not an expression
22:49:28 -!- crathman has joined.
22:51:25 <oerjan> for ((lambda (x) (foo x)) bar) i would assume (delay ((lambda (x) (delay (foo x))) bar)
22:52:17 <oerjan> that seems to be the same as delaying everything, then removing delay around variables
22:52:26 <SimonRC> bsmntbombdood: the one specified in my hostname of course!
22:54:12 <oerjan> of course special forms may need special handling
22:55:18 <SimonRC> I would look up graph-reduction
22:57:01 <SimonRC> "To tag or not to tag: that is the question:
22:57:01 <SimonRC> Whether 'tis faster in the cache to suffer
22:57:01 <SimonRC> The delays of tagless nodes,
22:57:03 <SimonRC> And make a branch that hits the cache.
22:57:09 <SimonRC> To jump: perchance to stall; Ay, there's the run."
22:57:45 <oerjan> i remember in GHC's STG machine, forcing is only done in case statements.
22:58:04 <SimonRC> bsmntbombdood: Read some papers on implementing lazy functional languages.
22:58:31 <SimonRC> oerjan: or equivalents, like ifs, guards, or any pattern-matching
22:58:36 <oerjan> The paper on STG for example
22:58:50 <SimonRC> http://portal.acm.org/citation.cfm?id=99385&coll=portal&dl=ACM
22:58:55 <oerjan> yes, but those are all made into case statements in the STG language
22:59:36 <oerjan> (spineless tagless G-machine)
23:00:02 <SimonRC> bsmntbombdood: specifically, see google Scholar
23:00:09 <SimonRC> there are some freely-available versions
23:00:20 <oerjan> it's probably the most efficient lazy language machine around
23:00:56 <oerjan> or maybe i just bought its hype :)
23:01:31 <SimonRC> the paper I quoted above is about how the cache-misses tend to negate the benefits of no tag checking
23:01:40 <oerjan> 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 <oerjan> ACM portal is useless to me
23:05:36 <oerjan> 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").
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: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: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 <ihope> Aww, but "two divided by four" gives "0.5".
19:44:45 <ihope> Hmm. "one plus 1" and "one + 1" both also give "two"/
19:45:05 <ihope> But "1 plus 1" and "1 + 1" give "2".
19:45:40 <ihope> 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 <oklopol> i seldom use any other calculator than google
19:56:48 <oklopol> 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: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:06:07 <ihope> Also, it's yulkjhnb.
23:09:56 <ihope> Let's say it's both.
23:10:37 <ihope> Hey, hykulnjb goes clockwise...
23:13:58 <ihope> 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:53:32 <ihope> Despite a proof of the contrary?
23:54:10 * oerjan readies his gun to shoot holes in bsmntbombdood's arguments
23:55:14 <oerjan> that's good because i don't have a gun
23:57:11 <ihope> Neither of those is recursive.
23:57:25 <oerjan> (define (f) (cond ((exists odd perfect number) (f)) (else 1))) - not so easy
23:57:58 <oerjan> actually turn that around
23:58:07 <ihope> Well, yeah, I guess.
23:58:23 <oerjan> (define (f) (cond ((exists odd perfect number) 1) (else (f))))
23:58:42 <bsmntbombdood> well, we obviously need to know what exists returns
23:58:59 <oerjan> but we can rephrase that as:
23:59:46 <bsmntbombdood> to see if that halts we see if EXISTS halts, then if it does, find what it returns
23:59:51 <oerjan> (define (f n) (cond ((perfect n) 1) (else (f (+ n 2))))) (f 3)
00:00:55 <ihope> 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 <ihope> Or the program I meant to write, if that isn't the right one :-P
00:02:42 <oerjan> true, but this shows that the halting problem is somewhat connected to the existence of undecidable theorems
00:03:40 <bsmntbombdood> the proof on wikipedia uses halt on a program that uses halt
00:04:12 <ihope> If Turing-machines can solve the halting problem, then "Turing machines that don't use halt" isn't Turing-complete.
00:04:59 <oerjan> although i rather suspect that "this program uses halt" is undecidable, or even undefinable
00:05:22 -!- ihope_ has joined.
00:05:32 <oerjan> because you cannot decide whether a program is equivalent to halt
00:05:44 <ihope_> 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 <oerjan> (even assuming it exists)
00:06:59 <bsmntbombdood> who proved that two lambda expressions couldn't be proven equivalent?
00:07:41 <oerjan> don't remember, let me see in wikipedia
00:09:18 <oerjan> ah, it's Rice's theorem
00:09:35 <oerjan> ok maybe Church proved a special case
00:19:19 <ihope_> Isn't that equivalent to the halting problem?
00:19:55 <ihope_> Also, \x.x and \x.xx can't be proven equivalent. Q.E.D.
00:20:17 <oerjan> it's proven by reduction to the halting problem.
00:20:29 <oerjan> see the wikipedia page
00:21:13 <oerjan> well in _that_ case it was the Church-Rosser theorem.
00:21:49 <oerjan> 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 <oerjan> i thought you meant who proved that it couldn't be decided whether two given expressions were equivalent
00:23:57 <oerjan> (as in being the same function)
00:27:38 <ihope_> How many definitions of equivalence are there?
00:28:08 <oerjan> there is beta equivalence, beta/eta equivalence
00:28:36 <oerjan> but the Church-Rosser theorem is needed to prove each of them consistent
00:29:05 <oerjan> without it, maybe \x.x and \x.xx _could_ be turned into each other
00:29:09 <ihope_> bsmntbombdood: bananas and grapes are obsolete. Please upgrade to Cantor normal form.
00:29:47 <oerjan> cantor normal form is essentially positional notation in base omega
00:30:17 <oerjan> omega^(omega+1) + omega^1*3 + omega*3 + 5, for example
00:30:51 <ihope_> Like polynomials, sort of.
00:31:20 <ihope_> omega^a*b + omega^c*d + omega^e*f...
00:31:34 <oerjan> omega = the ordinal of the natural numbers, the first infinite one
00:31:41 <ihope_> Where a, c, e, etc. are ordinal numbers and b, d and f are natural numbers.
00:31:57 <ihope_> Bananas and grapes form a subset of the ordinal numbers, I mean.
00:32:32 <oerjan> up to omega*2, isn't it?
00:32:46 <ihope_> Something like that. I don't know.
00:33:50 <oerjan> as in, the bananas are the first omega ordinals and the grapes the next omega ordinals
00:33:59 <oerjan> or maybe it was the other way around
00:34:23 <ihope_> The other way around, I think.
00:35:08 <ihope_> Also, ordinal numbers aren't cardinal numbers. :-)
00:37:55 <ihope_> Obvious iff you already know.
00:38:50 <oerjan> well, it doesn't take _that_ long to realize that omega+1 and omega have the same cardinality
00:39:38 <ihope_> Essentially, an ordinal number is what I tried to get at with grapes and bananas.
00:40:06 <oerjan> do you know what a total order is?
00:40:37 <ihope_> bsmntbombdood: you're the one who said banana-grape. :-P
00:40:44 <oerjan> i assume you know since you know what ordinals are
00:41:18 <oerjan> ordinal = the order type of a (well-) ordered set
00:41:54 <ihope_> Informally, an ordinal number is a set of ordinal numbers such that each of its elements' elements is an element.
00:42:11 <ihope_> Examples: 0 is defined as the empty set, 1 as {0}, 2 as {0,1}, 3 as {0,1,2}, etc.
00:42:13 <oerjan> that's even more confusing
00:42:22 <oerjan> the von Neumann ordinals
00:42:27 <ihope_> Not if you have no idea what an order type is :-P
00:43:09 <SevenInchBread> I just failed Algebra 2... to give you an idea of my current level of math skills.
00:43:18 <SevenInchBread> I haven't even touched set theory... besides what I've read of it.
00:43:33 <ihope_> 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:44:45 <ihope_> 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:15 <ihope_> omega+omega or omega*2, then, is {0,1,2,3...omega, omega+1, omega+2, omega+3...}
00:45:33 <oerjan> 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 <ihope_> bsmntbombdood: is there a certain part of it that doesn't make sense, or is it just generally confusing?
00:46:51 <ihope_> Well, omega is what you get when you go past all the natural numbers.
00:47:04 <oerjan> omega is the set of all the finite ordinals, itself infinite
00:47:14 <ihope_> An ordinal number contains all the ordinal numbers you've gone past.
00:47:25 <ihope_> bsmntbombdood: what's what called?
00:47:45 <oerjan> (transfinite) ordinal numbers
00:48:38 <oerjan> btw there is a trick to remove the recursivity from the definition
00:49:21 <ihope_> 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 <oerjan> i think you may want well-ordered
00:51:09 <ihope_> Totally ordered is sufficient, isn't it?
00:51:20 <oerjan> or maybe not - you get that from the axiom of foundation
00:52:34 -!- sebbu has quit ("@+").
00:53:14 <oerjan> i think it is sufficient but using well-ordered allows you not to bother with things like x = {x}
00:53:17 <ihope_> You mean the axiom of foundation has a use?
00:53:48 <oerjan> yep, without it x = {x} would be an ordinal by your definition
00:54:51 <ihope_> Wouldn't x = {x} be well-ordered anyway?
00:55:52 <oerjan> so you actually need to assume explicitly that x is well-founded
00:56:14 <oerjan> if you don't have the axiom of foundation
00:56:29 <oerjan> in which case total probably suffices for the order
01:02:03 -!- nazgjunk has quit ("Bi-la Kaifa").
01:35:16 * SimonRC decides that if he had a mutant power, he would be a Turing Oracle.
01:35:28 <SimonRC> (able to predict if any give Turing Machine halts)
01:38:58 <SimonRC> Hmm, bananas and grapes.... http://www.catb.org/jargon/html/O/one-banana-problem.html
01:39:16 <oerjan> 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 <ihope_> SimonRC: I've seen that before... :-)
01:40:07 <SimonRC> read that whole website!!!!!!
01:40:22 <ihope_> I want to be a Turing Oracle...
01:40:57 <SimonRC> failing that, you *really* must read appendix B: http://www.catb.org/jargon/html/appendixb.html
01:42:29 <oerjan> actually... there might be some problems if the length of the proof is described with the Ackermann function :)
01:42:54 <oerjan> which certainly must be true for some theorems
01:43:18 <SimonRC> 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 <ihope_> Give me a series of theorems whose proofs are longer than the corresponding values of the Ackermann function. :-)
01:44:06 <oerjan> indeed, it would seem to be in the next grape or banana
01:44:17 <SimonRC> incidentally, the busy-beaver numbers are uncomputable (in the genersal case)
01:44:18 <ihope_> SimonRC: n `div` 2, remember.
01:44:44 <ihope_> It does a remarkably good job of being Haskell.
01:45:19 <oerjan> the question of whether _one_ number halts on 3n+1 is a halting problem.
01:45:23 <SimonRC> Haskell is almost pseudocode
01:45:40 <ihope_> There are programming languages much better than Haskell.
01:45:47 <ihope_> I just don't know of any. :-P
01:46:15 <ihope_> Well, no decently fast implementations for any.
01:46:57 <SimonRC> So what are the slow ones?
01:47:02 <ihope_> I could take first-order logic, extend it to a programming language, and execute programs by brute force.
01:47:20 <ihope_> Brute-forcing proofs isn't very fast.
01:48:34 <oerjan> 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 <SimonRC> ah, this suddenly sound familiar from my compuability theory lectures
01:49:35 <SimonRC> the "switch between forall and exists" part
01:49:44 <ihope_> Foralls and existses are nice.
01:49:46 <oerjan> yeah, it's the same as for the polynomial hierarchy
01:49:54 <ihope_> Also known as forsomes. :-)
01:53:07 * oerjan suddenly wonders if there is an esoteric language named SOAP
01:53:47 <oerjan> nah, just an operating system
01:53:48 <ihope_> SOAP is going to be a platform for an esoteric operating system, if people ever start following my orders.
01:54:12 <ihope_> oerjan: please throw dextrose tablets at bsmnt_bot.
01:54:12 <oerjan> when Malbolge freezes over, in other words
01:54:58 <ihope_> The usable form of glucose.
01:55:11 <oerjan> ~exec sys.output("Give me sugar!")
01:55:22 <oerjan> ~exec sys.stdout("Give me sugar!")
01:55:36 * ihope_ throws dextrose tablets at bsmnt_bot
01:55:55 <oerjan> I have forgotten it _every_ time except once
02:05:35 <SimonRC> I was deliberately not doing that
02:06:16 <SimonRC> BTW, is doing (do + ing) supposed to be spelt the same as doing (onomatapoea)?
02:06:57 <oerjan> you _do_ know that ihope is easily tempted with bsmnt_bot.
02:07:41 <oerjan> no, the latter must be spelt dhoeyng'x
02:13:49 <oerjan> 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:47 <oerjan> i know, but it doesn't quite work
02:17:46 <oerjan> i cannot get an IO action to refer cleanly to an IORef which is defined later
02:19:29 <oerjan> unsafeInterleaveIO gives infinite datastructure of mutable references but not cyclic ones
02:20:24 <oerjan> and unsafePerformIO has badly defined semantics
02:32:07 <ihope_> ~exec throw(dextrose_tablets, bsmntbombdood)
02:33:08 <ihope_> ~exec def self.dextrose(x): raw("PRIVMSG #esoteric :\001ACTION throws dextrose tablets at %s\001" % x)
02:33:29 <ihope_> ~exec self.dextrose = lambda x: bot.raw("PRIVMSG #esoteric :\001ACTION throws dextrose tablets at %s\001" % x)
02:33:42 <ihope_> ~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:36:50 <oerjan> now they tell me at #haskell there is a fixIO.
02:42:08 * ihope_ throws dextrose tablets at bsmntbombdood
02:43:42 <oerjan> fixIO :: (a -> IO a) -> IO a
02:44:00 <oerjan> to make cyclic IO actions depending on their result
02:45:00 <oerjan> also used with the mdo recursive monad notation
02:47:24 <oerjan> being the opposite of dextrose.
02:48:20 <ihope_> Like do, except with monads?
02:49:10 <oerjan> mdo vs. do is like letrec vs. let in scheme
02:49:48 <ihope_> I know nothing about Scheme.
02:50:47 <oerjan> in do, variables introduced with <- can only be used in later statements. in mdo they can be used in the whole mdo statement
02:51:22 <ihope_> I now know one thing about Scheme.
02:52:08 <oerjan> bsmntbombdood is lying :)
02:52:21 <ihope_> Also, I take it this doesn't work: mdo {putStrLn x; x <- getLine}
02:52:38 <ihope_> bsmntbombdood: :-P...wait, what?
02:53:04 * ihope_ decides "data as code" was... darn, SevenInchBread beat me to it
02:54:25 <SevenInchBread> Well... Lisp homoiconicity makes "data as code" as well.
03:01:50 <SimonRC> oerjan: look at "mdo". It is sugar that works on any instance of MonadLoop (i.e. most Monads).
03:03:33 <SimonRC> LISPoids: code is data. Haskell: computations are data
03:04:49 <ihope_> Isn't that that... stuff?
03:06:01 <oerjan> (> scheme) haskell <== sex-tion
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:40 <_D6Gregor1RFeZi> Presumably they're placebos, but maybe I'm supposed to believe that they'll demangle me.
21:49:44 <oerjan> well dextrose is not a placebo when it comes to energy
21:50:21 * bsmnt_bot throws dextrose tablets at _D6Gregor1RFeZi
21:50:42 <ihope> ~exec self.dextrose("_D6Gregor1RFeZi")
21:50:42 * bsmnt_bot throws dextrose tablets at _D6Gregor1RFeZi
21:52:02 -!- Arrogant has quit ("Leaving").
21:54:11 <oerjan> hm... did anything happen?
21:54:42 <oerjan> i didn't see any incoming ctcp
21:54:44 <bsmntbombdood> :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:55:00 <oerjan> anyhow i'm on irssi too
21:56:12 <oklopol> what is the tab character in html? :P
21:56:47 <oerjan> ~exec sys.stdout(r"^ *(.*[^ ]) *$" % " testing ")
21:57:22 -!- Sukoshi has joined.
21:57:56 <Sukoshi> Any Lex/Yacc wizards here?
21:58:24 <Sukoshi> Can you use ( ) as grouping to group | ?
21:59:57 <oerjan> doesn't seem like it from "info bison"
22:02:00 <Sukoshi> Because I want to specify the exact repititions of something.
22:02:21 <oerjan> i guess that doesn't work because there would be no uniform way to refer to the matched tokens
22:03:50 <oerjan> you'll just have to define some helping tokens
22:04:25 <Sukoshi> I'm writing a parser for the BT bencoding, by the way.
22:05:00 <oerjan> i don't remember that one
22:05:12 <Sukoshi> I'll link it, and my Yacc file.
22:05:31 <Sukoshi> If you'd be so kind as to take a look at it and confirm if it would match correctly.
22:07:46 <Sukoshi> If this doesen't work, I write it myself. It's faster/less headache.
22:07:57 <Sukoshi> Woe to the not-pointer-arithmetic-endowed then.
22:08:25 <Sukoshi> I know, but not everyone can follow it.
22:08:44 <Sukoshi> That's why I'm choosing to use yacc/lex.
22:10:05 <oerjan> as far as i understand, | just defines a new rule with the same left side
22:11:11 <oerjan> well that's what i said
22:11:46 <oerjan> a | b are two separate rules, not an expression
22:12:50 <oerjan> 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 <Sukoshi> Uggh. Now I have to decide how the C code works with the grammar.
22:13:11 <oerjan> that's my guess anyhow
22:13:51 <oerjan> where is that link you promised?
22:14:01 <Sukoshi> Well, my grammar is written up.
22:14:08 <Sukoshi> But, I have to add C code to it now.
22:15:23 <Sukoshi> http://www.anysize.org/~sukoshi/benc_parse.l http://www.anysize.org/~sukoshi/benc_parse.y
22:15:35 <Sukoshi> Havas unun bonan tempon kun tiujun.
22:17:29 <oerjan> If I got that correct it was nearly pure luck
22:17:38 <Sukoshi> oerjan: The ``vin'' is superfluous.
22:18:32 -!- _D6Gregor1RFeZi has changed nick to _ZN6Gregor1REd.
22:18:53 <Sukoshi> http://wiki.theory.org/BitTorrentSpecification <-- Read.
22:20:09 -!- _ZN6Gregor1REd has changed nick to GregorR.
22:20:44 <Sukoshi> Guh. I knew I missed something.
22:21:25 <Sukoshi> benc_int: BEGINT NUMBER END ;
22:22:14 <Sukoshi> <Sukoshi> Well, my grammar is written up. <Sukoshi> But, I have to add C code to it now.
22:22:40 <bsmntbombdood> yacc should build a parse tree implicitly to give to you after parsing
22:22:52 <oerjan> that STRDATA rule is going to break I think.
22:23:25 <Sukoshi> Then I need to delimit it.
22:23:33 <oerjan> because it is confused with anything else
22:23:45 <oerjan> i don't quite see why you need a lex stage
22:24:30 <Sukoshi> But I would like to make yytext a union later on.
22:26:16 <oerjan> the length-encoding of strings doesn't fit into a regular language definition, or context-free for that matter.
22:27:48 <oerjan> i am sure there is some lex rule to gulp up a fixed number of characters
22:28:31 <oerjan> but you need to take the number:string parsing entirely in lex
22:29:10 <oerjan> which shouldn't be too difficult
22:29:52 <Sukoshi> Wait. How would you suggest I do this?
22:30:07 <Sukoshi> 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 <oerjan> you don't need the yacc stage to know that number:string has a substructure
22:32:02 <oerjan> so just remove NUMBER and let STRING be the whole thing
22:32:16 <Sukoshi> But true, how would you do it?
22:36:43 <oerjan> you can use the input() directive.
22:38:03 <Sukoshi> Can you give me an example?
22:38:54 <oerjan> yep, so you could use a for loop with input() to read the required number of characters into a buffer
22:40:09 <oerjan> i don't see any read() in the flex info
22:40:46 <SimonRC> Wait, are we still talking about parsing BT strings here?
22:41:08 <SimonRC> I would use a monadic parser for that
22:41:18 <SimonRC> but yacc doesn't do monadic parsers
22:41:35 <bsmntbombdood> so you have [0-9]+: as the regex, then read in the correct number of bytes with input()
22:42:27 <Sukoshi> Where does the call to input() go? Lexer?
22:42:44 <SimonRC> Now a better question: Why the hell did they invent their own data encoding rather than using a standard one?
22:42:58 <Sukoshi> Their bencoding is brain-damaged.
22:43:12 <SimonRC> I can see they have there a subset of the functionality of ASN.1
22:43:27 <SimonRC> There are plenty of tools that will spit out very fast ASN.1 parsers
22:44:11 <SimonRC> It has such amazing features as being able to send the start of some data before knowing how long it is.
22:44:15 <Sukoshi> My theory is that it was a quick hack in Python.
22:45:11 <oerjan> it would be a quick hack with Parsec :)
22:46:51 <oerjan> there might be another way to do it using yymore() and states
22:50:34 <oerjan> *states=start conditions
22:52:06 <oerjan> the i lex rule also needs to include the number
22:53:19 <oerjan> yes it does, otherwise there will be no way for lex to distinguish the number from the start of a string encoding
22:53:57 <oerjan> yes it must because it has to handle the string encoding specially
22:54:41 <oerjan> it _could_ distinguish a number according to whether it is followed by :
22:55:11 <oerjan> 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 <oerjan> including it in the i rule would cause earlier error detection
22:56:44 <oerjan> in the case of something like i100:
22:57:48 <oerjan> 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 <oerjan> recursive descent and a switch statement might even be shorter
22:59:07 <oerjan> *would almost certainly be shorter
23:01:35 <oerjan> in fact it is practically designed to be trivial in that way
23:02:37 <oerjan> just a simple: read the next character, switch on it to decide what to do
23:08:11 * bsmnt_bot throws dextrose tablets at bsmntbombdood
23:10:54 <oerjan> one more thing - the lex parser doesn't handle negative numbers for i
23:22:24 <SimonRC> methinks that a predictive parser would be what you wanted.
23:23:22 <SimonRC> 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:33 <SimonRC> you are just in time for a predictive parsing vs. yacc flamewar
23:29:29 <oerjan> yacc is fine if your grammar is L(AL)R(1) but not LL(1)
23:29:56 <oerjan> but this one is nearly LL(1) at the character level
23:30:39 <SimonRC> bsmntbombdood: a parser that always knows what token type will come next.
23:31:52 <oerjan> Correction: knows what token something is after reading the first subtoken
23:32:03 <pikhq> Hear ye, hear ye! Read the Wiki!
23:32:10 <pikhq> You will sound more competent & wise.
23:32:14 <SimonRC> oerjan: maybe that, whatever
23:32:46 <oerjan> i.e. LL(1) if it is context-free
23:32:48 <SimonRC> anyway, it is a subset of most other serious parser types
23:33:08 <SimonRC> but Pascal can be parsed predictively IIRC
23:33:34 <oerjan> yes, Niklaus Wirth is known for making his grammars simple LL(1)-like
23:34:41 <oerjan> and in another note, these parsers/languages are usually the ones that one can create by hand without too much effort
23:34:55 <oerjan> using recursive descent
23:36:21 <SimonRC> Ah, of course, pascal parsers were traditionally written in Pascal, weren't they?
23:37:39 <oerjan> i think Wirth's idea was that the grammar _should_ be simple enough to write a parser manually
23:38:13 <oerjan> but of course i am as usually using my vague memory to sound competent & wise :)
23:39:43 <oerjan> but then i have always enjoyed parser theory
23:39:52 * pikhq uses an external memory enhancement at times
23:40:31 <oerjan> how many years before Wikipedia plugs directly into the brain?
23:42:22 <pikhq> 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 <pikhq> Is that valid Malbolge, Gregor?
23:48:46 <SimonRC> Fe is iron and Zi is zirconium, IIRC
23:52:12 <pikhq> Hexadeuterium monogregor monoR moniron monozirconide?
23:53:51 <bsmntbombdood> i can't figure out how to do lists without backing up
23:54:05 <oerjan> map (`mod` 94) $ zipWith (+) [0::Int ..] $ map (fromEnum) "_D6Gregor1RFeZi"
23:54:18 <oerjan> gives [1,69,56,74,24,12,15,24,28,58,92,81,19,9,25]
23:54:42 <oerjan> which means it is probably not legal Malbolge
23:55:00 <pikhq> It's *perfectly* valid Brainfuck, though.
23:55:08 <pikhq> Although it's equivalent to a null program. . .
23:57:45 <oerjan> is it an esoteric language?
23:58:44 <oerjan> i guess with the Gregor in it it is not a chemical formula either
00:00:20 <oerjan> D6 could be a roleplaying reference
00:01:26 <_D6Gregor1RFeZi> It's the name of the D function int Gregor.R(real) mangled.
00:02:17 <SimonRC> _D6Gregor1RFeZi: yes, that looks correct now
00:02:38 <oerjan> ok that means _ was the only part i nearly understood :)
00:04:40 <pikhq> _D6Gregor1RFeZi: Sorry; I don't do C++.
00:04:58 <pikhq> I don't look at C++'s mangled names.
00:05:29 <pikhq> Hmm. . . I thought D used one of the name mangling schemes made for C++. . .
00:05:48 <SimonRC> 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 <SimonRC> Haskell can spit out some interesting mangled names in its linker error messages.
00:08:07 <bsmntbombdood> it would have been a lot cleaner if python files had ungetc
00:09:14 <pikhq> 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:11 <SimonRC> R1.p = (P_)(W_)&GHCziBase_unpackCStringzh_closure;
00:13:09 <SimonRC> BTW, what about my proposed analysis of your name?
00:14:27 <bsmntbombdood> 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:26 <oerjan> well FeZi has to encode int and real somehow, doesn't it?
00:15:56 <bsmntbombdood> that is [{1: 'ab', 'abc': 56, 'g': [2, 3]}, 42] bencoded
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 <oerjan> i guess we need you to go and compile a different function :)
00:34:50 -!- pikhq_ has joined.
00:35:25 -!- pikhq has quit (Read error: 104 (Connection reset by peer)).
00:35:31 <pikhq_> STOP TURNING OFF THE CABLE MODEM, DAMN IT!
00:35:33 -!- pikhq_ has changed nick to pikhq.
00:40:28 <bsmntbombdood> Sukoshi: A yacc parser for bencode is way too much
00:47:31 -!- digital_me has quit ("Lost terminal").
00:48:53 <oerjan> looks like pretty straightforward recursive descent predictive parser
00:52:04 -!- ShadowHntr has quit (Client Quit).
00:57:23 -!- kxspxr has joined.
01:10:28 <SimonRC> SETI: A 99.999% chance of being a waste of effort and a 0.001% chance of destroying the entire Human race.
01:11:37 <oerjan> either they don't exist, they already know we are here, or we wouldn't want them to?
01:13:54 <oerjan> basically the chance that two civilizations should develop and not be millions of years apart in time is minimal
01:14:40 <oerjan> 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:20:22 <oerjan> 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 <oerjan> alas, there is always another option, including the one we haven't thought of
01:22:23 <SimonRC> 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 <SimonRC> ignore the actual units of the y-axis or even what it's measuring
01:23:33 <oerjan> perhaps. it doesn't show the fact that the growth is now decelerating
01:23:58 <SimonRC> I don't mean for population particulary.
01:24:14 <SimonRC> An exponential growth curve should be the logo for the 21st century
01:24:58 <oerjan> http://en.wikipedia.org/wiki/Technological_singularity
01:24:58 <SimonRC> 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:26:27 <ihope> The growth is decelerating?
01:26:49 <oerjan> yes it has been predicted that it will stabilize around 9 billions or so
01:26:56 <ihope> You mean the growth is going down, or it's actually slowing down?
01:27:24 <ihope> But it's currently above zero?
01:27:37 <ihope> And, of course, the population is above zero as well?
01:27:43 <oerjan> one of them is certainly the Black Death
01:28:01 <ihope> ...Yes, I should have known the fact that growth is above zero as well...
01:28:25 <oerjan> ihope: do you know about differentiation?
01:28:57 <ihope> Derivatives and integrals... and limits. Calculus is fun.
01:29:57 <oerjan> so i am saying that the second derivative of population wrt. time is negative
01:32:13 <ihope> What about calculus is fun, you mean, then?
01:37:47 -!- pikhq has quit (Read error: 110 (Connection timed out)).
01:39:00 -!- digital_me has joined.
01:39:05 -!- pikhq has joined.
01:39:52 <ihope> bsmntbombdood: that almost looks like Haskell.
01:48:54 -!- digital_me has quit ("brb").
01:49:09 -!- digital_me has joined.
01:52:04 <oerjan> exponential of large numbers?
01:52:19 <oerjan> actually that shouldn't matter
01:52:29 <oerjan> since the exponent is negative
01:53:19 <oerjan> can you do if then else?
01:53:55 <oerjan> it would be reasonable to define exp(-6000) as 0
02:04:12 <bsmntbombdood> according to this model, in about 2700, the world population will go to 53,000 million, then by 2800 be -120,000 million
02:05:34 <oerjan> well i guess if we learn to control antimatter :)
02:08:18 <oerjan> perhaps your function is not suitable for least squares estimation or whatever gnuplot uses
02:12:56 <bsmntbombdood> the growth from -700 to -400 was the biggest for a long time
02:15:55 <oerjan> and those two happen to be around the first and second golden ages of science...
02:16:31 <oerjan> except that with the timing...
02:17:13 <oerjan> the first population increase may have caused the age of philosophy while the second was _caused_ by the age of science
02:18:07 -!- ihope has quit (Connection timed out).
02:18:38 <oerjan> with aristotle, euclid and everything.
02:19:19 <oerjan> of course i mean philosophy as an analogy of science
02:21:57 <oerjan> i don't think you can deduce that much
02:23:34 <oerjan> i mean, the numbers in the table are only accurate to the nearest million
02:24:31 <oerjan> 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:06 <oerjan> and there was a doubling in the next millennium
02:26:03 <oerjan> and each of the two next ones
02:26:45 <oerjan> and then more than tripled from -1000 to 0
02:27:02 <bsmntbombdood> heh, i tried to fit it using a sixth order polynomial. it failed.
02:27:16 <oerjan> so i'ld say the -5000..-4000 was pretty tame in comparison
02:27:59 <oerjan> probably that was when most of people shifted to agriculture
02:28:51 <oerjan> and then it grew exponentially until the potential for that technology was used up
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.
05:14:12 <_D6Gregor1RFeZi> There's a functions-that-return-deep vs functions-that-return-shallow problem.
05:15:15 <_D6Gregor1RFeZi> The 'if' function, for example, returns deep, but normal functions return 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:17:03 <_D6Gregor1RFeZi> pikhq: Except for the return problem, which makes for some VERY ugly builtin functions :P
05:17:03 <pikhq> Although it does have a major issue (that being that it's not done).
05:17:16 <pikhq> _D6Gregor1RFeZi: Yeah. . .
05:17:26 * pikhq contemplates a Plofish way to do that. . .
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:19:16 <GreaseMonkey> 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:20:12 <GreaseMonkey> how about the last "dropped" value returns it?
05:22:00 <GreaseMonkey> THEN, you can return that shallow, and then the outer function will return that value
05:23:30 <GreaseMonkey> 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:58 <pikhq> 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:52 <pikhq> That just makes it an odd functional language, Gregor.
05:46:46 <pikhq> Expose a method of overloading operators.
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: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 <pikhq> Although yes, yes. . .
05:47:31 <_D6Gregor1RFeZi> bsmntbombdood: It's how PHP does it, and I find it totally intuitive there :)
05:47:41 <pikhq> object3=object + object2; makes a huge, new object. . .
05:49:09 <pikhq> _D6Gregor1RFeZi: Are you going to think of a way of doing command line arguments?
05:49:16 <pikhq> bsmntbombdood: Numbers aren't classes.
05:50:22 <pikhq> [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:51:12 <pikhq> Int foo = new(Int);, I believe, is valid Java.
05:51:51 <pikhq> (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:28 <_D6Gregor1RFeZi> bsmntbombdood: a = [ foobar ]; b = a; c = b; d = [ bleh ];
05:54:26 <pikhq> Class and function definitions use a new operator, :=?
05:55:03 <_D6Gregor1RFeZi> pikhq: Hmmmmmm ... I sort of don't like the inconsistency that would create.
05:58:42 <_D6Gregor1RFeZi> I'm thinking about making programming language design my specialty for grad school.
06:02:09 -!- RodgerTheGreat has quit.
06:02:50 -!- RodgerTheGreat has joined.
06:10:45 <GreaseMonkey> <_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 <SimonRC> # I'm being followed by /etc/shaddow # -- by /bin/cat stevens
14:49:58 -!- nazgjunk has joined.
14:56:26 -!- helios24 has joined.
15:19:04 -!- helios24 has quit ("Leaving").
15:19:06 -!- helios24 has joined.
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 <oerjan> Interestingly there was recently mention of deep vs. shallow return on Lambda the Ultimate
22:28:50 <oerjan> my impression was that shallow return made most sense if the language distinguished methods from closures
22:29:19 <oerjan> the discussion was in the context of lexical scoping
22:30:09 <oerjan> while deep return made most sense if there were only one kind of functions
22:30:28 -!- puzzlet has joined.
22:30:47 <oerjan> but i thought of one possibility: you could allow labels on blocks, to return from them by name
22:31:07 <oerjan> (the last in the context of your plof question)
22:33:53 <oerjan> does plof have lexical scoping?
22:38:34 -!- Arrogant has quit ("Leaving").
22:53:47 <ihope> "No me understando"? Sheesh, even GregorR's Spanish is better than that.
22:55:11 <oerjan> at least you got the verb ending right :)
22:56:38 <ihope> oerjan: pff. Can you translate "I would have been to like it if he hadn't been wanting to eat" into Spanish?
22:57:19 <ihope> "I would have been to like it if it weren't for his wanting to eat."
22:57:34 <oerjan> can you translate that into English first? :)
22:58:08 <oerjan> and no, i doubt i could go beyond the present tense without googling somewhat
22:58:18 <ihope> "I would have been to like it" is perfectly good and understandable English, isn't it?
22:58:24 <ihope> BabelFish translation: "Habría sido como a él si no estaba para el suyo que deseaba comer."
22:58:51 <ihope> BabelFish back-translation: "He would have been like a he if it were not for his that wished to eat."
22:59:31 <oerjan> perhaps but it is excessive for English, it reads almost like Douglas Adams' wioll haven been
22:59:58 <ihope> Can you say those last three words again?
23:00:31 <oerjan> my memory may be shaky but those were part of his mock grammar for time travellers
23:01:39 <ihope> Did he actually include "would have been to" in there somewhere?\
23:02:51 <ihope> 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 <ihope> Aha! "I would have been to see Himmler or Hitler on the very first day; on the very same day."
23:03:19 <oerjan> which is a misspelling of "too"
23:04:07 <oerjan> but "be to see" is an undividable phrase, isn't it?
23:04:56 <oerjan> i am sure there may be occasions when you need that precision, but:
23:05:05 <ihope> 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 <ihope> Is it undividable?
23:05:37 <oerjan> for most cases you would do just as well with "I would have liked it" etc.
23:07:05 <oerjan> "be to see" certainly does not have the usual future implication of "be to"
23:08:38 <oerjan> actually i find that Hitler quote ambiguous in that respect
23:09:19 <oerjan> it would depend on context
23:10:48 <oerjan> But in "Have you been to see him?" it would be a phrase
23:11:31 <oerjan> or at least a different kind of construction
23:11:49 <oerjan> anyhow, you are the native speaker here
23:11:55 <ihope> So like "gone to see"?
23:28:12 -!- sebbu has quit ("@+").
00:02:04 -!- Sgeo has joined.
00:23:31 -!- ShadowHntr has joined.
00:28:31 -!- tgwizard has quit (Remote closed the connection).
00:42:15 <oerjan> TIME FLIES LIKE AN ARROW
00:42:28 <oerjan> FRUIT FLIES LIKE A BANANA
00:45:28 <oerjan> FOR A HILLARIOUS PRESIDENT
00:46:44 <oerjan> WESTERN COUNTRIES ARE BULLISH
00:49:13 -!- ihope has quit (Read error: 110 (Connection timed out)).
00:50:05 <SimonRC> For you Americans out there, _Top Gear_ is a sitcom about 3 guys whose job is to review and rate cars...
00:50:42 <SimonRC> 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:46 <SimonRC> It is actually supposed to be a car-reviewing show, and only incidentally a sitcom.
01:03:26 <oerjan> 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 <SimonRC> Humans know different though...
01:15:16 <oerjan> your stereotypical objective being would exterminate humans and replace them by more efficient robots
01:16:02 <SimonRC> bsmntbombdood: yeah, but don't other humans give that?
01:16:15 <SimonRC> oerjan: I was looking for a more sensible answer.
01:16:29 <oerjan> have i ever been known to be sensible?
01:17:23 <oerjan> there is probably less effort with a pet than with humans
01:20:36 <SimonRC> Same for animals I would have thought.
01:21:10 <SimonRC> Ah, but there are plenty of species that are more friendly than humans.
01:22:08 <oerjan> animals are less complicated
01:22:18 <bsmntbombdood> a dog is going to like you even if no chick will give you a chance
01:25:23 <SimonRC> The question came up because I was wondering why something of superhuman intelligence would keep humans as pets.
01:26:28 <oerjan> you writing an sf story?
01:28:42 <oerjan> hm... would a superintelligent being be able to make humans enjoy being its pets?
01:28:56 <SimonRC> depends on the definition of "pet"
01:29:17 <oerjan> i suppose so, since humans worship gods
01:30:04 <oerjan> for that matter, maybe we already are pets
01:30:16 <SimonRC> ... 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 <SimonRC> plus insome ways you will understand them better than any humans can
01:30:59 <SimonRC> http://fof.durge.org/~sc/Kigdatsi/
01:31:04 <oerjan> perhaps there is an unending chain of pet-owner relationships
01:31:33 <SimonRC> I have been inconsistant over the years, but the above is a collection of things I have written.
01:32:28 <SimonRC> 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 <oerjan> i suppose the possibility of that would depend on whether there is an unending progression of possible levels of intelligence
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.
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: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.
00:04:39 -!- RodgerTheGreat has quit.
01:04:38 -!- crathman has joined.
01:12:14 <oerjan> if implicit currying means what i think it means
01:14:02 <oerjan> yep, haskell does that
01:15:44 <oerjan> as well as the reverse: (\x -> \y -> E) = \x y -> E
01:19:36 <oerjan> i thought you were reading up on haskell, or maybe that was the flour-product oriented guy
01:31:44 <oerjan> null and map can be redefined
01:32:01 <oerjan> import Prelude hiding (null, map)
01:32:16 <oerjan> if is a keyword however.
01:33:20 <oerjan> it's so that you can have then and else written out
01:35:01 <oerjan> but in principle it is just syntactic sugar for case a of True -> b; False -> c
01:37:00 <oerjan> A function cannot return a function of the same type
01:37:08 <oerjan> that would trigger such a thing
01:37:29 <oerjan> are you trying to do combinators?
01:38:06 <bsmntbombdood> i did map f l = (null l) nil (cons (f (car l)) (map f (cdr l)))
01:41:48 <oerjan> well if that should work then you would have to use combinatory booleans for (null l)
01:43:41 <oerjan> perhaps the list is the problem.
01:43:50 <oerjan> what is cons defined as?
01:44:40 <oerjan> thought so. cons x y cannot then have the same type as y.
01:45:12 <oerjan> without such an occurs check error, because the type becomes recursive
01:45:39 <oerjan> you can do it with ocaml if you use the -t command line option
01:45:52 <oerjan> i did it for an Unlambda "compiler" once
01:46:23 <oerjan> not without an option to turn of the occurs check
01:46:43 <oerjan> i don't remember if there is such an option
01:46:54 <oerjan> are you using ghc or hugs?
01:47:05 -!- flapjack has joined.
01:47:36 <oerjan> of course for portability you can wrap it in a datatype Fun = Fun -> Fun
01:47:57 <oerjan> data Fun = Fun (Fun -> Fun)
01:48:52 <oerjan> the occurs check only triggers if the type recursion is not inside a datatype definition
01:48:53 -!- calamari has joined.
01:49:55 <oerjan> 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 <oerjan> let me check the ghc webpage
01:54:36 -!- voodooattack has joined.
01:55:45 -!- flapjack has left (?).
01:57:22 <oerjan> alas, i cannot find a ghc option to turn it off
01:59:41 <oerjan> and ocaml won't work if you depend on lazyness
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 <oerjan> 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 <oerjan> darn, that would certainly ruin the implicit currying
02:34:30 <oerjan> i should say that someone somewhere must have written a minimal lambda calculus evaluator in the haskell style already. hm...
02:34:41 <oerjan> perhaps there is one in LambdaBot.
02:43:06 -!- Sgeo has joined.
02:51:28 <oerjan> Sheesh. It says on the webpage that Lambdabot has a lambda calculus but I cannot find the command...
02:55:22 <oerjan> hey, try this page: http://www.dina.dk/~sestoft/lamreduce/index.html
03:07:52 -!- anonfunc has joined.
03:12:31 <oerjan> 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:40:23 <oerjan> it's really quite absurd that i understand what 1337 means :)
03:42:44 <oerjan> of course it pales compared with the fact that i am on this channel :)
03:43:38 <oerjan> and that i am trying to write a malbolge dialect.
03:44:15 <bsmntbombdood> not a whole lot of esotericallity goes on in this channel
03:46:25 <oerjan> you mean we need to find a medium and have a sance?
03:47:15 <oerjan> or study old alchemist books
03:47:58 <oerjan> to be esoteric of course
03:48:15 <bsmntbombdood> 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 <bsmntbombdood> 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:17 <lament> this channel is not esoteric enough.
06:35:34 <lament> to fix that, from now on, English is officially forbidden.
06:36:03 <lament> You have five minutes for any last thoughts (in English).
06:36:07 <GregorR> channel.language = pseudocode?
06:36:27 <lament> anybody caught using English after that will be publicly humiliated.
06:37:34 <GregorR> humiliation.language = pseudocode; humiliation.effectiveness < EFFCTVNS_LOW
06:40:06 <lament> humiliation.tool = whip;
06:41:20 <lament> humiliate (x) = begin; x.remove(pants); humiliation.tool.apply(x.behind); end
06:45:42 <lament> nu, teper' nash kanal gorazdo bolee ezoterichen.
06:46:32 <lament> ni siquiera nosotros entendemos a nosotros mismos
06:47:51 <lament> nao, so pode falar os outros idiomas
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:53 -!- sekhmet has quit ("away").
14:37:50 <bsmntbombdood> (map (compose repair cut-with-knives) (channel-users))
14:41:15 -!- nazgjunk has quit ("Bi-la Kaifa").
14:54:31 -!- sekhmet has joined.
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:44:42 <oerjan> Language.English.status == Forbidden
18:45:12 <GregorR> oerjan.languages["pseudocode"].quality < LQUAL_MEDIUM
18:45:51 <oerjan> Language.Pseudocode.Base == "Haskell"
18:46:21 <GregorR> oerjan.ooTree.reasonable = false;
18:46:45 <GregorR> typeof(languages) == TYPE_AARRAY
18:46:51 <oerjan> unlambdaify(\x y.y) == K I == K (S K K)
18:48:07 <oerjan> Language.Haskell.ModuleTree /= ObjectOriented
18:49:50 <oerjan> Che cosa il sua problemo?
18:51:23 <oerjan> \x y.y == \x. \y.y == \x. I == K I
18:51:43 <GregorR> O, lenguas natural estan OK?
18:52:20 <oerjan> Natrlich, nur Englisch ist verboten.
18:52:52 <oerjan> Men ikke la det utarte, OK?
18:53:21 <GregorR> Pero, no hablo lenguas con exceptin del ingls :(
18:53:50 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
18:53:52 <EgoBot> 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:31 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
18:54:32 <oerjan> Pseudocode perfettamente buono.
18:55:53 <oerjan> "perfettamente" == Italian.AdverbialFormOf("perfetto")
18:56:31 <GregorR> italian["perfetto"].toEnglish();
18:56:45 <oerjan> "perfetto" = Oerjan.GuessItalianEquivalence("perfect")
18:57:23 <GregorR> Esto conversacin es muy largo X-P
18:58:16 <oerjan> [spanish[x].toEnglish()| x <- ["largo","lento"]
18:58:46 <GregorR> spanish["lento"].toEnglish() == "slow"
18:59:29 <oerjan> Protest.basedOn(existenceOf("Key Largo"))
19:05:38 <oerjan> \x y.x y == \x.\y.x y == \x.(S (K x)) I == S (S (K S) (S (K K) I)) (K I)
19:06:47 <oerjan> http://oerjan.nvg.org/esoteric/ulify2.scm
19:11:10 <oerjan> It's for unlambda, not pure combinator calculus however.
19:11:57 -!- kxspxr has quit.
19:15:52 -!- helios24 has quit (Read error: 60 (Operation timed out)).
19:16:28 <oerjan> because it is a system for calculating functions
19:28:46 <oerjan> ah yes, the KI = SK equation
19:31:01 <oerjan> it's not valid for unlambda though - it breaks with side effects
19:48:15 <oerjan> hm... SKSK = KK(SK) = K
19:49:06 <oerjan> and the expression given for K is more complicated
19:51:19 <oerjan> in fact all the others use the first one, so they are wrong too
19:57:05 <oerjan> however, *ii = K and *i*ii = S, so it can be easily fixed
20:01:14 <oerjan> i'll make a note about it on our wiki
20:10:34 <oerjan> because in (^x.xSK)SK, only the S should be beta substituted
20:35:12 <oklopol> can i see a brainfuck implementation with haskell?
20:35:36 <oerjan> there is one on Lambdabot
20:35:37 <oklopol> i just can't figure out how imperativeness is done effectively with a purely funxxxxional lang
20:35:48 <oklopol> but then again, it's proly easy
20:35:55 -!- helios24 has joined.
20:35:58 <oerjan> don't you know about monads?
20:36:12 <oklopol> i thought they might be the answer
20:36:29 <oerjan> although it's only I/O that really needs it for brainfuck
20:36:31 <oklopol> i'm one of the idiot who can't figure monads out
20:37:07 <oklopol> but, does the massive array have to be cloned on every step?
20:37:21 <oklopol> or do monads somehow handle it haxxorly?
20:37:52 <oklopol> i get leet-wannabe when i'm tired, sorry :)
20:37:58 <oerjan> 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 <oerjan> because brainfuck is not really random access.
20:39:03 <oerjan> the brainfuck state can easily be done purely functionally.
20:39:57 <oklopol> that's exactly what i can't figure out, is there an implementation :P
20:40:32 <oklopol> you can make one in 5 min i'm sure
20:41:46 <oerjan> 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:42:11 -!- helios24 has quit ("Leaving").
20:42:46 <oerjan> "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 <oklopol> 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:47:49 <oerjan> good grief. the Lambdabot version is excessively complicated.
20:48:17 -!- helios24 has joined.
20:48:46 <oerjan> and mercilessly non-pure
20:49:10 <oklopol> would it take you long to make one? :P
20:49:24 <oklopol> (i'm not sure what you were talking about, though)
20:49:52 <oerjan> I'm talking about http://www.cse.unsw.edu.au/~dons/lambdabot/scripts/BF.hs
20:50:17 <oerjan> it shouldn't take too long since i already started writing one a while ago
20:51:25 <oerjan> but i'll try and see if there isn't a finished one somewhere
20:52:05 <oklopol> 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 <oklopol> i could become a professional brainfuck interpreter coder or something
20:54:14 <oklopol> i've written maybe 50 or smth :D
20:59:13 <oerjan> found one, it uses a real functional tape but mysteriously uses a tape for the program as well
20:59:39 <oerjan> http://www.joachim-breitner.de/blog/archives/161-Brainfuck-interpreter-in-Haskell.html
21:00:26 <oklopol> thanks, i'll try to read that
21:03:09 <oerjan> my own interpreter got buried under all the configuration options i wanted to include
21:03:10 -!- sebbu2 has joined.
21:04:40 <oerjan> 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 <oklopol> i have one in c++ that does nice circular tree structures
21:05:35 <oklopol> like... a list and [] are in a sublist
21:07:15 <oklopol> 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 <oerjan> not circular, that would be if some of the sublists are equal to the list itself
21:07:33 <oklopol> then realized the quine did a [+]... and i was using ints :)
21:07:47 <oklopol> took it of and it ran in a microsecond or smth xD
21:08:20 <oerjan> yeah, even poorly implemented brainfuck is not _that_ inefficient :)
21:09:05 <oklopol> 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 <oerjan> just be glad you didn't use bignums :)
21:10:23 <oklopol> well, i think i'd've closed the prog after a week :D
21:10:39 <oklopol> hmm... i think it didn't get till the end now that i come to think of it
21:11:14 <oklopol> 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 <oerjan> a bignum brainfuck implementation should be easy in Haskell though
21:11:42 <oklopol> yeah, well, in anything else than c++ actually
21:12:03 <oklopol> c++ doesn't have bignums in the standard package
21:12:42 <oklopol> 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 <oklopol> in c++ you'd have to dl boost, but i think it's easier to write something yourself than dl it :D
21:15:05 <oerjan> well, a good bignum implementation is not that trivial, especially huge multiplies
21:15:25 <oklopol> that's why i've never gotten one to work for all operators
21:15:36 <oklopol> or, never implemented all of them rather
21:15:51 <oklopol> i've done a few bignum classes in c++
21:16:28 <oklopol> i think i did multiplication with addition in the first one :P
21:17:02 -!- GregorR has changed nick to Gonee.
21:17:05 <oerjan> _just_ addition? not even shifts?
21:18:44 <oklopol> ^ with *, * with +, + with inc, inc with binary logic and you get the winning combination
21:19:03 <oklopol> i don't remember, i was a noob :P
21:19:28 -!- Gonee has changed nick to _D6Gregor1RFeZi.
21:20:14 <oerjan> gregor now consumes reality again.
21:21:03 <oerjan> 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 <oerjan> 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 <oklopol> what does const do in haskellllll
22:20:10 <oklopol> i COULD ask on #haskell of course...
22:21:30 <oerjan> not useless, it is quite useful in higher-order programs
22:22:08 <oklopol> isn't it rather a function that returns x with any arg?
22:22:41 <oerjan> const x is such a function yes.
22:24:36 <oerjan> i don't know if the S combinator has a name in haskell though.
22:25:12 <oklopol> i have never played with lambda calculus
22:25:43 <oerjan> i was just reading this page: http://www.haskell.org/haskellwiki/Pointfree
22:26:12 <oerjan> some really weird examples there
22:27:15 <oklopol> point-free map fusion... :?
22:28:33 <oerjan> i suppose map fusion is an automatic optimization technique
22:28:46 <oklopol> mem' = any . (==) <<< i find even this pretty sick :\
22:28:52 <oerjan> to avoid making intermediate lists
22:29:39 <oerjan> well i wouldn't go that far either.
22:30:36 <oklopol> 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:31:14 <oerjan> it gets strange with pointless style when you use it to hide more than one argument, like with any.
22:32:05 <oklopol> yeah, pretty neat though :P
22:32:25 <oerjan> but as long as it chains just one argument through, it can in fact be clearer.
22:34:44 <oklopol> 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 <oklopol> i can actually read the bf interpreter
22:36:28 <oklopol> set :: Tape a -> a -> Tape a
22:36:28 <oklopol> set t v = doOn t (const v)
22:37:35 <oklopol> it's quite simple now that i think about it
22:37:43 <oerjan> that is an example of the usefulness of const.
22:39:08 -!- _D6Gregor1RFeZi has changed nick to GregorR.
22:39:51 <oklopol> okay, i can't follow anymore xD
22:39:56 <oklopol> gotta continue my tutorial...
22:51:10 -!- nazgjunk has quit ("Bi-la Kaifa").
22:54:02 <oerjan> although we might check what happens with KS as well.
22:54:37 <oerjan> indeed those are equivalent.
22:55:54 <oerjan> because application is left associative
22:56:16 <bsmntbombdood> well, then \x.x(SK) would make for shorter programs then
22:57:18 <oerjan> no, because then the previous steps will break.
22:58:11 <oerjan> \x.(xS)K = S(SI(KS))(KK)
22:59:08 <oerjan> you just need three rules:
22:59:29 <oerjan> \x A B = S (\x A) (\x B)
22:59:56 <oerjan> \x C = K C when C does not contain x
23:02:26 <bsmntbombdood> so you get \x.xSK == (S (\x.x) (\x.S))(KK) == (SI(KS))(KK)
23:03:19 <oerjan> eh no. because \x.xSK is really \x.(xS)K
23:03:53 <oerjan> or, you are missing an S in there.
23:05:14 <oerjan> this is actually easier in unlambda notation.
23:06:26 <oerjan> just substitute ``s for each `, change the variable to i and put `k before everything else.
23:07:11 <oerjan> and remove the initial \x. (^x in the unlambdaify notation)
23:09:14 <oerjan> those rules are really what explains why combinatory logic uses S K I, also. :)
23:12:22 -!- sebbu has quit ("@+").
23:16:49 <oklopol> i was skiing the other day
23:19:12 <oerjan> that _could_ be hazardous in steep hills
23:19:48 <oklopol> yes, unless you are very good at either of them
23:23:29 <oerjan> actually my experience is that the better you get at math the more hazardous it becomes to do other things simultaneously.
23:25:13 <oerjan> because you get to the point where you are completely immersed in it.
23:25:15 <oklopol> 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:26:14 <oklopol> 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 <oerjan> you should be prime professor material :)
23:27:46 <oklopol> 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:59 <bsmntbombdood> academia is the only place for computer science :/
23:28:21 <oklopol> 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 <oklopol> bsmntbombdood what do you mean by that?
23:29:55 <oerjan> see, he already forgot ;-)
23:31:03 <oerjan> but seriously, don't you have something with an alarm/calendar system?
23:31:52 <oklopol> in high school teachers don't mind things happening half a year late
23:32:03 <oklopol> 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:35:29 <oerjan> there may have been a couple exceptions but i was not one of them.
23:36:45 <oklopol> 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 <oklopol> 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:41:15 <bsmntbombdood> cept my math class now doesn't have required homework :)
23:42:00 <oklopol> well, i wouldn't mind assignments should they be challenging
23:42:40 <oklopol> i just can't do a lot of routineous assignments
23:51:49 <oklopol> 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 <oklopol> last page of the 300 page book
23:53:30 <oklopol> and they were in order of difficulty
00:11:51 -!- voodooattack has joined.
00:29:23 <oerjan> it can be done in the same way but there is an additional rule that is helpful:
00:30:05 <oerjan> so \x.\y.x y = \x.x = I
00:30:30 <oerjan> yep, that is the direct way.
00:31:42 <oerjan> \x.((S (Kx)) I = S(S(KS)(S(KK)I))(KI)
00:32:23 <oerjan> 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:49:29 <voodooattack> http://www.encyclopediadramatica.com/index.php/C
00:50:38 <oerjan> yep, abstraction elimination by this method is exponential in the number of variables.
00:52:21 <oerjan> there are more complicated combinators you can use but they need more variables than this before becoming worthwhile.
00:53:54 <oerjan> 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 <oerjan> I remember writing something about it on the old esolang mailing list.
01:07:27 <oklopol> hmm... thue seems too hard for a first project :<
01:08:03 <oklopol> 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 <oklopol> (haven't noticed at least :P)
01:08:42 <oerjan> i assume this applies after you have fixed the type errors?
01:09:52 <oerjan> i don't think it can be done
01:10:53 <oklopol> 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 <oklopol> i can't make it nicely though :<
01:11:11 <oerjan> But I think you cannot make any expression in S that removes an argument completely
01:11:43 <oerjan> i have a very similar function in IrpBot
01:12:27 <oklopol> i have the knowledge necessary to do that... just can't :<<
01:13:11 <oerjan> a t | old `isPrefixOf` t = new ++ a (drop (length old) t)
01:14:37 <oerjan> i believe you need import Data.List for the isPrefixOf
01:18:08 <oerjan> back to expressing K with S, I now remember the terminology
01:21:14 <oerjan> ack, i had it backwards
01:25:57 <oerjan> anyhow, there are two classes of combinators that are closed and K and S are in different ones.
01:26:27 <oerjan> K is affine, this means every argument is used at most once
01:26:43 -!- oklofok has joined.
01:26:56 <oerjan> S is the opposite (relevant may be the word), every argument is used at least once
01:27:30 <oerjan> I is in the intersection: the linear ones, which use every argument exactly once
01:28:36 <oerjan> the affine subset can be generated by the combinators S, B, C.
01:32:19 <oerjan> C a b c = a c b, B a b c = a (b c)
01:32:58 <oerjan> the opposite subset would be S, B, C; I think
01:35:03 <oerjan> combinators are not usually commutative
01:35:58 <oerjan> are you doing random choice of rules?
01:36:00 <oklofok> it did runThue [("oko","pol"), ("pol", "mo")] "okopol" -> "momo"
01:36:26 <oklofok> i do rule by rule... since thue does not care about order right?
01:36:42 <oklofok> you can read my code, it's 15 lines as i said
01:37:07 <oklofok> it's very bad code i'm sure, this is the first program i've done on a functional language :D
01:38:41 <oklofok> http://www.pastebin.ca/356379
01:39:19 <oklofok> i tried not to look at your code too much, just checked drops param order and the function names
01:40:38 <oklofok> it takes the substs as a list
01:41:08 <oerjan> parser next? you might want to look at the Parsec library
01:41:57 <oerjan> with that the parser shouldn't be more than another 15 lines
01:43:12 -!- oklopol has quit (Read error: 110 (Connection timed out)).
01:43:28 -!- oklopol has joined.
01:43:44 <oklopol> god i hate it when it does that
01:44:42 <oerjan> oklopol: you do know that you can ask nickserv to kick off your ghosts?
01:45:37 <oklopol> i don't, there is no such service on qnet
01:45:57 <oklopol> if there's one here, please share it with me :D
01:46:19 <oklopol> hmm... i can't do file io, the monads will kill me
01:47:01 <oklopol> i'm not registered, maybe i should :P
01:47:23 <oerjan> Indeed that is necessary to kill ghosts
01:47:40 <oerjan> as well as for sending private messages
01:47:43 <oklopol> can you help me with filw io?
01:47:58 <oerjan> I suggest using the interact function for a start
01:48:47 <oerjan> That saves you most of the trouble with IO if you are just making a pipe
01:49:04 <oerjan> main = interact yourPipeFunction
01:49:41 <oerjan> a function from stdin to stdout
01:50:18 <Sukoshi> I need to get back to Haskell hacking sometime.
01:50:28 <oklopol> i had "filename: " -> open file -> read -> parse -> exec in mind
01:50:34 <Sukoshi> The Scheme in Haskell tutorial looks really nice.
01:51:01 <oerjan> you want the filename as input or on the command line?
01:51:29 <oklopol> i don't know how to specify stdin
01:52:01 <oklopol> hmm... getContents or smth
01:52:20 <oklopol> i read about this somewhere, i'll try on my own, i'll be here crying for help soon
01:52:56 <oerjan> btw Haskell does have if then else
01:53:15 <oerjan> (for you case ... True -> ... False ...)
01:54:19 -!- meatmanek has joined.
01:54:36 -!- meatmanek has quit (Read error: 104 (Connection reset by peer)).
01:55:51 <bsmntbombdood> we need to come up with something that means the opposite in scheme and haskell
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 <oklopol> main needs a declaration (or whaddyacallit) main :: Something -> oso
02:00:50 <oerjan> and type declarations are often optional
02:01:20 <oklopol> it won't compile that's all
02:01:32 <oklopol> nothing, so they can't be optional there
02:01:36 <oerjan> You would get a message about no Num instance for ()
02:02:24 <oklopol> hmm... how can i return 5 from main? :D
02:02:30 <oerjan> 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 <oklopol> return strips off the monad, IO, right?
02:03:25 <oerjan> actually the opposite, return puts it on
02:03:35 <oklopol> well, i'll understand it later
02:03:48 <oklopol> i wanna get this working first :D
02:03:53 <oerjan> and note also that return does not quit from a function
02:04:35 <oklopol> i don't attach meaning to names
02:05:24 <oerjan> System.Exit.exitWith (ExitFailure 5)
02:05:25 <oklopol> i mean, i don't have problems with confusing languages, but i do have problems in understanding how IO works :P
02:06:01 <oklopol> but... but... why aren't there better examples, examples that work :\
02:07:48 <oklopol> it's my error i'm pretty sure
02:08:01 <oklopol> doing something really wrong when copypasting...
02:08:03 <oerjan> just for a start imagine that Haskell distinguishes sharply between pure expressions and actions
02:08:21 <oklopol> first i'd like to get ANY main working :P
02:08:23 <oerjan> and that actions have type IO something
02:08:52 <oerjan> main = print "Hello, world!"
02:09:24 <oklopol> possibly incorrect indentation
02:09:46 <oerjan> where are you putting it?
02:09:48 <oklopol> hard to say... it's in the Thue file
02:10:22 <oklopol> runThue'' (subst:substs) init sure = case doSubst subst init of
02:10:22 <oklopol> (False, _) -> runThue' substs init sure
02:10:22 <oklopol> (True, newinit) -> runThue' substs newinit True
02:10:22 <oklopol> main = print "Hello, world!"
02:10:56 <oerjan> And it compiles without main?
02:12:39 <oklopol> i had done something fishy there... forgot about it and thought it was the same working code
02:12:56 <oerjan> next step would be a do block I guess
02:13:24 <oerjan> and then some more actions, indented
02:13:59 <oklopol> i tried one code, but it said isAscii not in scope... and nothing was imported
02:14:16 <oerjan> import Data.Char for that I think
02:14:44 <oerjan> btw: haskell.org/hoogle
02:15:50 <oerjan> as well as http://www.haskell.org/ghc/docs/latest/html/libraries/index.html
02:16:03 <oklopol> okay, i now have a code that reads two names, one for output, one for input and pipes
02:16:37 <oklopol> i'll peruse those later :)
02:16:49 <oklopol> too much just now... it's 4 am
02:17:08 <oerjan> There is also System.Environment.getArgs
02:17:29 <oklopol> but i call main as a function
02:17:45 <oklopol> i could just give them as params?
02:18:35 <oklopol> okay, i'll stick to the file thing though :D
02:19:08 <oklopol> return s will be a string with the contents of the file..?
02:19:54 <oerjan> <- takes values out of IO in a sense
02:20:31 <oklopol> i'll make the parser, thue's io comes some other time, i'll sleep soon
02:22:25 <oklopol> let (substs, init) = parseRaw s in
02:22:54 <oklopol> if i do the parseRaw that converts string -> substitutions and initial string
02:23:48 <oklopol> good, i'll start the parser... not sure if i'll manage to finish it just now :D
02:24:47 <Sukoshi> Does Haskell make well to parsers like the BT one? (Not that I'd switch.)
02:26:56 <oerjan> Parsec would be shooting fish in a barrel :)
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:17:39 <oerjan> http://www.pastebin.ca/356520
03:19:25 <oerjan> but it is just 24 lines :)
03:21:27 <oerjan> to run, do parseTest (many bencoding) "whatever"
03:41:23 -!- ShadowHntr has joined.
03:49:37 <oerjan> something does not look quite right there
03:55:40 <oerjan> on second thought, it is obvious that () should be I
03:57:15 <oerjan> because that makes (A1...An)B = A1...AnB for all n including 0
03:58:02 <bsmntbombdood> There should be a function that takes all the arguments you give it and does nothing with them
04:00:56 <oerjan> you can take it from there :)
04:03:26 <oerjan> but that would make the expression larger
04:04:36 <oerjan> that would seem a reasonable conclusion
04:05:20 <oerjan> except the parentheses are not quite right
04:05:45 <oerjan> Y = \f.(SII) \x.f (xx)
04:17:14 <oerjan> i don't see how you got your first expression, though
04:19:55 <oerjan> ok (but not optimized)
04:33:51 <oerjan> S(KK)(SII)x = KKx(xx) = K(xx)
04:35:09 <oerjan> so if x = S(KK)(SII), then xx = K(xx)
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:10 <SimonRC> "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 <SimonRC> no, actually *this* is even more mind-boggling:
14:21:56 <SimonRC> ""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 <SimonRC> Headline: Christian Scientists Hypothesise 'Sun'
14:29:17 -!- nazgjunk has quit ("Bi-la Kaifa").
14:36:15 <bsmntbombdood> "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 <GregorR> bsmntbombdood: Hmmm, now what could that be ...
16:33:03 <GregorR> bsmntbombdood: Something like a big ball of burning gas ...
16:33:11 <GregorR> bsmntbombdood: That uses nuclear fusion to create energy ...
16:33:20 -!- RodgerTheGreat has quit.
16:33:24 <GregorR> bsmntbombdood: Energy which ends up transferred to Earth ... ;)
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:38:01 <GregorR> pikhq: Why are you never online? :P
18:43:21 -!- ShadowHntr has quit (Client Quit).
18:50:33 <oklopol> too bad i wrote this in finnish :\
19:00:47 <lament> finnish is a pretty useless language. nobody speaks it!
19:17:29 -!- nazgjunk has quit ("Bi-la Kaifa").
19:18:03 <oklopol> yeah... who likes useless languages...
19:50:35 -!- wooby has joined.
20:06:56 -!- ihope has joined.
20:07:36 <ihope> ~exec self.raw("PRIVMSG ihope :Boing")
20:07:45 <ihope> Interesting, don't you think?
20:07:50 <ihope> ~exec self.raw("PRIVMSG ihope :Boing")
20:07:55 <ihope> Really, how odd...
20:08:33 <bsmnt_bot> 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:09:06 <bsmnt_bot> 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:17:57 -!- FabioNET has quit (Read error: 145 (Connection timed out)).
20:20:22 <ihope> ~exec self.raw("QUIT")
20:20:22 -!- bsmnt_bot has quit.
20:20:26 -!- bsmnt_bot has joined.
20:20:39 <ihope> That's one way to do it, eh?
20:20:48 <ihope> ~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 <ihope> ~exec self.ihope.bsmnt.raw("PRIVSMG #esoteric :Foo")
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.
22:02:47 <oklopol> fuck... i'll have to wear a suit tomorrow :<<<
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:36:12 <oerjan> why i realized that just after saying it
22:36:22 <SimonRC> http://en.wikipedia.org/wiki/Ugli_fruit
22:38:37 <oerjan> why the heck isn't it spelled Hugli if that's how it's originally pronounced?
22:47:51 <oerjan> Darn Babelfish doesn't have finnish
22:49:28 <oerjan> oklopol: Why can't you write in a sensible language such as Norwegian? :)
22:51:08 <oerjan> 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]").
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:30:29 <Sgeo> #exec dir(self)
02:30:44 <ihope_> ~ is the command character here, guys :-P
02:31:11 <Sgeo> #exec self.raw("MSG #esoteric "+str(dir(self)))
02:31:30 <bsmnt_bot> ['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 <bsmnt_bot> ort', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'save_callbacks', 'socket', 'sockfile', 'verbose']
02:31:43 <Sgeo> #exec self.raw("PRIVMSG #esoteric "+str(dir(self)))
02:32:06 <ihope_> ~exec self.raw("PRIVMSG #esoteric :"+str(dir(self)))
02:32:06 <oerjan> it won't work anyhow, you are missing a colon.
02:32:07 <bsmnt_bot> ['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 <Sgeo> #exec self.raw("PRIVMSG #esoteric ""+str(dir(self)))
02:32:35 <Sgeo> #exec self.raw("PRIVMSG #esoteric :"+str(dir(self)))
02:32:52 <oerjan> anyone else thinks sgeo is a bit dense today?
02:33:02 <ihope_> Sgeo: ~exec, not #exec
02:33:19 <Sgeo> 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:47 <Sgeo> <bd_> #exec self.raw("QUIT :")
02:33:47 <Sgeo> * DogKing has quit (Active Quit: )
02:33:52 <ihope_> Sgeo: mine was running with # as the command character.
02:33:54 <oerjan> ihope is not a bot. I hope this clears things up.
02:34:17 <ihope_> I started it with an ~exec on this one.
02:36:48 <oerjan> 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 <bsmntbombdood> fun, we can blow up any combinatory logic program to any size
03:42:37 -!- Sgeo has joined.
03:45:25 * oerjan draws his roman soldier sword
03:46:04 <oerjan> That is a noun of the FIRST declension, so it's accusative ends in... ?
03:46:34 <oerjan> You haven't seen Life of Brian?
03:47:09 <oerjan> (Strictly speaking, neither have I, somehow I always miss the middle)
03:48:30 <oerjan> There's this hilarious part where John Cleese's Roman character scolds Brian for writing Romans Go Home grafitti
03:48:56 <oerjan> 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.
04:00:15 <ihope> Wait, what's this ghost advertisement stuff all about?
04:02:12 <oerjan> about getting back your nisk after being thrown off
04:02:37 <ihope> Also, bsmntbombdood, was it you some of us were trying to teach ordinal numbers to?
04:02:41 <oerjan> do /msg nickserv help ghost
04:02:43 <ihope> oerjan: how's that relevant to stuff?
04:03:04 <ihope> Oh, the... right, yeah.
04:03:35 <ihope> bsmntbombdood: got it figured out yet?
04:04:21 <ihope> bsmntbombdood: well, mind if I try one more time?
04:04:26 <oerjan> is it time for confusing him more by telling about epsilon?
04:05:53 <oerjan> basically, ordinals are all about induction.
04:06:26 <ihope> I'd say they're all about well-orderings.
04:07:02 <oerjan> But well-ordering is what you need for induction to be well-defined.
04:07:19 <ihope> 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 <ihope> For example: the positive integers: {1, 2, 3, 4...}
04:07:53 <ihope> Any (non-empty) subset of them has a least element.
04:08:15 <oerjan> And that is equivalent to the usual rule of induction.
04:08:22 <ihope> Can you think of a set of positive integers that has no least element?
04:08:51 <ihope> Any set of positive integers has no least element.
04:09:30 <ihope> Now, an ordinal number essentially expresses one notion of the size of a well-ordered set.
04:10:01 <ihope> {1} has the ordinal number 1, {1,2} has the ordinal number 2, {1,2,3} has the ordinal number 3...
04:10:19 <ihope> Then for {1,2,3,4...}, the ordinal number is omega.
04:11:01 <ihope> 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 <oerjan> There are other kinds of sets that _don't_ have least elements, for example the set of all _negative_ integers.
04:11:25 <ihope> Look at it as {2,3,4,5...1}, and it seems like it has one extra element.
04:11:58 <ihope> Now, this one extra element is expressed by adding one, so this new set has the ordinal number omega+1.
04:12:33 <ihope> 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 <ihope> As a set, yes, but it's the order they're in that matters here, not the elements themselves.
04:12:57 <oerjan> Not when you consider the ordering.
04:13:26 <ihope> Well, call it an order instead of a set, then.
04:14:41 <oerjan> "Ordered set" is really an abbreviation for a set, plus an order relation on that set.
04:14:54 <ihope> 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 <ihope> 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 <ihope> This is omega+omega, or omega*2.
04:16:33 <oerjan> If it confuses you to change the ordering of the natural numbers, it is possible (for now) to use sets of fractions instead.
04:17:15 <ihope> How about something like this: {0, 0.9, 0.99, 0.999... 1}
04:17:17 <oerjan> Say, {0, 1/2, 1/3, ..., 1, 1+1/2, 1+1/3, 1+1/4, ...} also has ordering omega*2
04:17:30 <ihope> oerjan: but that's still out of order.
04:17:33 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
04:17:54 <ihope> {0, 1/2, 2/3, 3/4... 1, 1+1/2, 1+2/3...}
04:18:37 <ihope> 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 <ihope> 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 <ihope> Go on forever like *that*, and you have omega*omega, or omega^2.
04:19:58 <ihope> Now, the nice thing is that the different well-orderings are themselves well-ordered.
04:20:56 <ihope> 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 <ihope> omega*2 happens to be the lowest ordinal number greater than all elements of that set.
04:21:55 <ihope> And if you have a "continuous" set like that, it defines an ordinal number.
04:22:32 <ihope> 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 <ihope> The union, I mean, not unions.
04:27:18 <ihope> 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 <oerjan> Those are known as von Neumann ordinals, after the inventor.
04:31:12 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
04:31:21 <oerjan> 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 <oerjan> You can see that in the omega+1, omega+2 etc. above.
04:32:57 <oerjan> Strangely enough this addition is not commutative.
04:33:10 <oerjan> 1+omega = omega != omega+1
04:33:43 <oerjan> (It is associative however)
04:34:07 <oerjan> (I.e. a+(b+c) = (a+b)+c)
04:34:30 <ihope> I like natural addition.
04:34:43 -!- Sgeo has joined.
04:35:11 -!- ShadowHntr has quit ("End of line.").
04:38:22 <oerjan> 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 <oerjan> So omega*2 consists of two subsets, each with order omega.
04:38:58 <oerjan> This is not commutative either.
04:39:51 <oerjan> But it is associative, and there is distributivity: a*(b+c) = a*b + a*c
04:45:46 <oerjan> That distributivity hold only rightwards.
04:47:09 <oerjan> For powers, we need to use induction.
04:47:43 -!- goban has quit ("Leaving").
04:48:01 <oerjan> a^1 = a, and a^(b+c) = a^b*a^c.
04:48:24 <oerjan> Except that doesn't help us reach infinity, so:
04:49:22 <oerjan> a^b = union of a^(b_l) when b = union of b_l.
04:49:34 <ihope> There, I've reached infinity!
04:49:48 -!- alex-4 has joined.
04:49:54 <oerjan> Good, now you can explain omega^omega :)
04:52:25 <oklopol> oerjan: i don't hate any languages :)
04:52:39 <oklopol> but i don't know swedish that well
04:52:42 <oerjan> that's good, neither do i
04:52:48 -!- sp3tt has joined.
04:52:58 <oerjan> then you can explain oko here :)
04:53:13 <oklopol> okoing is a way of life :)
04:53:20 <ihope> omega^omega: the union of omega^n where n < omega.
04:56:20 <oerjan> Now then, epsilon = union of omega^(omega^(omega^...))) nested n times when n < omega
04:57:51 <ihope> omega, omega^omega, omega^omega^omega, omega^omega^omega^omega...
04:58:01 <oerjan> omega^epsilon = epsilon, incidentally.
04:58:27 <ihope> epsilon = omega^^omega, no?
04:59:14 <oerjan> I am not sure of that ^^ notation.
04:59:40 <ihope> And omega^^^omega would be epsilon_1.
05:00:13 <ihope> (omega^^omega)^^omega?
05:00:26 <oerjan> I think we just went past what I remember :)
05:01:38 <oerjan> Except one huge step more:
05:02:44 <oerjan> omega_1 = the union of all ordinals of reorderings of the natural numbers.
05:03:17 <oerjan> (I hope omega_1 is the right name. The first ordinal of cardinality aleph_1.)
05:05:48 <ihope> Yes, omega_1 is the first ordinal of cardinality aleph_1.
05:05:59 <ihope> omega_n has cardinality aleph_n, in general.
05:06:06 <oklopol> wtf are you talking about :O
05:06:28 <lament> there's only two numbers
05:06:42 <ihope> lament: what about... uh... hmm.
05:07:13 <ihope> lament: is that algebraically closed?
05:07:21 <ihope> I mean, surely not.
05:07:51 <lament> {0,1} form a field if that's what you're asking.
05:07:59 <ihope> Algebraically closed.
05:08:07 <ihope> Polynomials all have solutions.
05:08:28 <ihope> x*x = x and x+x = 0, so that equation up there is equivalent to 1 = 0.
05:08:51 <ihope> Also, it's Friday over here. Less than ten minutes ago, it was Thursday.
05:08:59 <ihope> I think I should be getting to bed.
05:09:05 <lament> so what if it's not algebraically closed?
05:09:18 <oerjan> Then it cannot be all numbers.
05:09:26 <ihope> Then... uh... say, why don't we define CK_n for all ordinal numbers n?
05:09:47 <lament> okay, let's close it then
05:10:33 <ihope> 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:54 <ihope> Let's say B*B + B + 1 = 0.
05:11:01 <ihope> That means B*B + B = 1.
05:11:29 <ihope> So B(B + 1) = 1, if that matters at all.
05:11:48 <ihope> Hey, why don't we call it 2?
05:12:00 -!- crathman has joined.
05:12:18 <ihope> Then we could say 1 + 2 = 3.
05:12:26 <ihope> Eventually, you end up with all the nimbers.
05:17:22 <lament> that doesn't sound right
05:18:03 <oerjan> What doesn't sound right, and by the way nimbers was probably not a misspelling.
05:30:54 -!- ihope has quit (Connection timed out).
05:58:49 <oerjan> no, S and I cannot remove variables
05:59:25 <oerjan> They are in the subset called lambda_I calculus
06:01:25 <oerjan> something about simulating K for a large enough subset to make it work for numerals
06:02:01 <Sukoshi> 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 <oerjan> no we were discussing whether K is necessary for Turing completeness
06:03:15 <oerjan> i guess S and I might not be enough, to get lambda_I you need also B and C
06:04:06 -!- ShadowHntr has joined.
06:05:09 <oerjan> i don't know the construction for a "simulated" K for numerals, however
06:05:49 <oerjan> it was either Church or Curry's work, I guess
06:07:19 <bsmntbombdood> 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:08:03 <oerjan> under "lambda calculus", I found the quote:
06:08:16 <oerjan> 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:11:02 <oerjan> where did you find that CLI quote?
06:12:08 <bsmntbombdood> http://en.wikipedia.org/wiki/Combinatory_logic#CLK_versus_CLI_calculus
06:17:56 <oerjan> heh, searching for lambdaI gives an article with the title "Proving PSN after ruining a perfectly good calculus"
06:18:04 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
06:20:37 <oerjan> preservation of strong normalization
06:20:57 <oerjan> it was the rest of the title i found funny :)
06:24:24 <bsmntbombdood> If we use a different combinator, \x.xKSK, the definitions of S and K are shorter
06:24:51 <oerjan> i may have read that somewhere
06:25:29 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
06:29:04 <oerjan> as short as you could possibly get them
06:29:33 <oerjan> or could you get one of them to be xx? hm.
06:30:08 -!- ShadowHntr has joined.
06:32:38 <oerjan> 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 <oerjan> S = xK and K = xS seem harder to analyze
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: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:48:40 <oerjan> how do you get that last one?
21:53:52 <oerjan> I get x(x(xx))=S as well
22:03:55 <oerjan> xx(xx)=SS, x(xx)x=SxS, xxxx=Sxx
22:07:17 <oerjan> i seem to be always getting back to S: x(xx(xx))=S too)
22:08:51 <oerjan> maybe, maybe not. at least getting S cuts many search branches short quick
22:11:37 <oerjan> none of the four-x versions actually contain K
22:12:38 <oerjan> well x itself is still in there so there might be a chance
22:16:57 <SevenInchBread> but then again... that kind of applies to networking in general.
22:17:42 <oerjan> x(x(xx)x)=SK=KI eventually
22:34:58 <oerjan> x(x(x(xx)x))=KS, I have a feeling of getting closer...
22:35:18 <oerjan> (That was the first with 6 x's
22:35:36 <oerjan> fine then we aren't duplicating work
22:36:05 <oerjan> indeed this x has been a disappointment in that respect
22:36:06 <SevenInchBread> hmm... I'm really interested in the idea of an "anonymous decentralized server"... for lack of a better term
22:36:57 <oerjan> 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:26 <SevenInchBread> 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:39:14 <GregorR> 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:46 <SevenInchBread> 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:42:30 <SimonRC> without the kiddy-porn though, I hope
22:42:40 <GregorR> IIRC, there are no non-participating clients in FreeNet.
22:42:54 <SimonRC> GregorR: you could write a selfish client if you wanted to
22:44:05 <SimonRC> Some non-virtual instance methods might be nice in Java.
22:44:10 <bsmntbombdood> I ran freenet for a while untill I got tired of it using half my memory and all of my cpu
22:44:30 <SimonRC> they would speed up method calls a fair bit I ssupect
22:44:42 <SimonRC> bsmntbombdood: and all your network connection
22:44:59 <SimonRC> 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:46:53 <bsmntbombdood> SimonRC, trying to find a single combinator to have the shortest S and K
22:52:57 <SevenInchBread> 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 <SimonRC> hmm http://ling.ucsd.edu/~barker/Iota/
23:21:29 <oerjan> yes, that's where we started
23:22:40 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
23:27:43 <bsmntbombdood> http://www.cs.uu.nl/people/jeroen/article/combinat/combinat.ps
23:29:13 <oerjan> ok that's the final word then
23:31:31 <oerjan> the worst is i am sure i have seen that URL before
23:36:00 -!- sebbu has quit ("@+").
23:42:50 <oerjan> i think you have missed some optimizations
23:43:17 <oerjan> \xyz.x = \x.K(Kx) = S(KK)K
23:45:29 <oerjan> \f.fS(S(KK)K)=SI(S(KS)(K(S(KK)K)))
23:47:39 <oerjan> follows from eta-reduction: \x.fx = f
23:50:55 <SimonRC> no: S, K, SS, SK, KS, and KK are all not I
23:52:18 <oerjan> oh you mean with that X
23:53:37 <oerjan> because SKX is shorter than SKK :)
23:56:11 -!- _FabioNET_ has quit (Read error: 110 (Connection timed out)).
23:59:10 <oerjan> 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)
00:00:26 <oerjan> messed up at the start
00:07:18 <oerjan> nope, there is no shorter than six X'x
00:08:50 <oerjan> i have missed some cases
00:12:19 <bsmntbombdood> for P it makes sense but I don't understand the K part
00:13:42 -!- ShadowHntr has quit (Client Quit).
00:14:36 <oerjan> ok now i think i have all 5 X cases, still no I
00:29:44 <bsmntbombdood> apparently some guy named "Rosser" came up with X = \x.xKSK
00:30:06 <oerjan> probably the Rosser of the Church-Rosser theorem
00:32:23 <oerjan> http://en.wikipedia.org/wiki/J._Barkley_Rosser
00:45:33 -!- crathman has joined.
01:30:07 <bsmntbombdood> I wonder if there's an X such that XX = S and X(XX) = K
01:42:12 -!- Arrogant has joined.
01:42:47 <oerjan> Senatus PopulusQue Romanum
01:47:04 <oerjan> ok, P=I, R=KK, Q=K(K(KS))
01:48:50 <oerjan> what should X look like then?
01:51:15 <oerjan> =K(KS)(K(K(KS)))(KK)=KS(KK)=S
01:52:17 <oerjan> that was the point of that Q
01:54:22 <oerjan> aha. then XX=XPQR=PPQRQR=S and X(XX)=XS=SPQR=K
01:54:58 <oerjan> and here i thought your equations looked arbitrary.
01:55:15 <oerjan> or at least complicated.
02:01:48 <oerjan> you cannot have XX=V and XV!=V, I think.
02:02:09 <oerjan> so XX and X(XX) cannot be chosen arbitrarily.
02:04:02 -!- ihope has joined.
02:04:21 <ihope> ~exec self.raw("JOIN #math\r\nPRIVMSG #math :zomg bot")
02:04:41 <ihope> ~exec self.raw("PART #math")
02:05:02 <oerjan> 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:41 <oerjan> 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:27 <ihope> Unlambda's v operator?
02:06:38 <ihope> If that's it, you really don't want XX=V.
02:07:17 <oerjan> you might want to try and solve XX=A, X(XX)=B for A, B arbitrary
02:07:39 <bsmntbombdood> this method needs the number of arguments that B takes
02:07:54 <ihope> 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:30 <oerjan> that's essentially what i think too
02:09:13 <oerjan> although not entirely.
02:09:27 <ihope> Then again, maybe I'm wrong for the "if it pays any attention to its first argument" case.
02:09:28 <oerjan> you could have XV=KV, say
02:09:59 <ihope> Well, KV is... well, it's V.
02:09:59 <oerjan> yeah, it's more subtle than that.
02:10:25 <ihope> X could simply pass its first argument on as arguments to other things.
02:10:27 <oerjan> you could have XV=\y.yV
02:10:51 <ihope> Therefore, XVX = XV, which... hmm.
02:13:11 <oerjan> V essentially takes an infinite number of arguments, yes. It doesn't have what is called a "head normal form"
02:14:10 <ihope> ...What is a head normal form, exactly?
02:14:14 <oerjan> And in a sense every combinator which doesn't is semantically equivalent.
02:14:50 <ihope> I guess one could say V is equivalent to (\x.xx)(\x.xx)...
02:15:12 <oerjan> It's \v1v2...vn.v E1E2...Em
02:15:59 <oerjan> The first expression inside the lambda must be a variable.
02:18:54 <oerjan> 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:24:44 <oerjan> 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:29:09 <oerjan> Good, then I won't have to go to that snail ircbrowse
02:30:25 <oerjan> actually i could have gone to tunes, they are much quicker but poorer formatting.
02:32:06 <oerjan> I wonder why meme/ircbrowse has become so slow. Too much growth?
02:36:18 <oerjan> nah, looks pretty minimal
02:36:39 <ihope> S(Kx)yz = Kxz(yz) = x(yz)?
02:37:33 <oerjan> you could reduce it with either B or C, I never remember which is which
02:37:52 <ihope> C is composition, isn't it?
02:38:16 <ihope> Hey, S(KS)K = C, even... right?
02:39:30 -!- digital_me has joined.
02:39:39 <ihope> So that's... uh, what was it?
02:41:17 <ihope> (a -> a -> b) -> a -> b, isn't it?
02:43:54 <oerjan> well, but only in the Reader monad
02:45:19 <ihope> Is there an equivalent whose principal type is that?
02:46:39 -!- oklopol has quit (Remote closed the connection).
02:46:44 <ihope> Like join, but not monadic, I mean.
02:46:51 -!- oklopol has joined.
02:49:32 <ihope> I suddenly feel an urge to combine this with set theory.
02:49:57 <ihope> How can functions in lambda calculus be expressed as sets?
02:51:15 <oerjan> http://en.wikipedia.org/wiki/Domain_theory
02:51:21 <SimonRC> (BTW, Unlambda uses c for call-with-current-continuation, which produces "escape continuations".)
02:52:55 <oerjan> It's part of unlambda's weird impure functions
02:53:29 <oerjan> and has nothing to do with BCKW.
02:54:01 <ihope> bsmntbombdood: if you can interpret it in software, and processors interpret software...
02:54:43 <oerjan> you need some kind of automatic memory allocation and garbage collection.
02:54:56 <ihope> bsmntbombdood: do I?
02:55:34 <oerjan> 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 <oerjan> 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:40:54 -!- Sgeo has joined.
04:28:07 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
04:45:51 -!- digital_me has quit ("leaving").
05:22:03 -!- crathman has quit (Read error: 110 (Connection timed out)).
05:54:43 <oerjan> Excuse me, I think I got my tongue stuck in my cheek.
05:55:01 <bsmntbombdood> Is it possible to have a language that uses S,K,I, but doesn't have any explicit order of application symbols?
05:56:30 <oerjan> Given that combinators aren't commutative...
06:02:11 <oerjan> some kind of structure is necessary.
06:02:32 <bsmntbombdood> with the X combinators it's possible to define S and K if xyz is x(y(z))
06:03:51 <oerjan> if you can define S and K then you still need to keep the order of those.
06:04:22 <oerjan> you can dispense with some of the order.
06:05:09 <oerjan> The pi-calculus for example, independent processes whose order doesn't matter.
06:05:23 <oerjan> But those aren't combinator based that I know of.
06:06:08 <oerjan> It's sort of a lambda calculus for concurrent programming.
06:07:40 -!- crathman has joined.
06:08:49 <oerjan> And there are calculi inspired by chemical processes. Instead of ordering, there is a distinction between active and inert data.
06:10:03 <oerjan> but if you had no structure what so ever, and say something called S,K and I:
06:10:20 <oerjan> then the only thing mattering would be the number of each.
06:10:47 <oerjan> Not much to base computation on.
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:22:34 <lament> it's a convenient shortcut, like i
08:26:07 <lament> bottom is the bottom of an infinite loop :)
08:31:44 <lament> it could be a primitive exception mechanism
08:32:05 <lament> for example, division by zero would return v
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:20:57 <SimonRC> Currying is the tautology: ((A & B) -> C) -> (A -> (B -> C))
19:23:24 <SimonRC> also, IIRC, S is (p -> q -> r) -> ((p -> q) -> (p -> r)
19:24:49 <SimonRC> also K is p -> q -> q and I is p -> p
19:25:07 <SimonRC> which means that S-K-I corresponds to that logic I can't remember the name of
19:37:53 -!- goban has quit (Remote closed the connection).
19:38:07 -!- goban has joined.
19:39:49 -!- voodooattack has quit.
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:57:09 -!- nazgjunk has quit ("night silly sheep").
22:51:23 -!- ihope has joined.
22:51:48 -!- sebbu2 has joined.
22:54:38 <ihope> ~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 <ihope> #exec self.ihope = 3
23:04:03 <ihope> ~exec self.ihope = 3
23:04:23 <ihope> Well, that sure didn't kill it, did it?
23:04:26 <ihope> ~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:30:11 -!- ihope has quit (Read error: 131 (Connection reset by peer)).
23:42:29 -!- SevenInchBread has changed nick to CakeProphet.
23:54:22 -!- sebbu2 has changed nick to sebbu.
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: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 <crathman> pipes in that SII is the mockingbird
03:09:15 <crathman> I put together the Smullyan birds a while back: http://www.angelfire.com/tx4/cus/combinator/birds.html
03:09:54 <crathman> wishes for a simple esoteric language that would allow combinators to be named and composed
03:10:24 <crathman> Y combinator is known as the Why bird.
03:10:58 <crathman> birds are kind of a trick for naming combinators - from one of Raymond Smulyan's book
03:11:21 <crathman> a mockingbird repeats whatever it hears: SIIx = xx
03:12:52 <crathman> no particular point... just scrolling up on some of the earlier conversation,,,
03:14:10 <crathman> realizes that I might be missing the point of this channel...
03:14:58 <crathman> 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 <lament> crathman: well, Scheme would be one ;)
03:18:02 -!- wooby has joined.
03:18:52 <crathman> tis true Scheme can be used. just looking for a language that's bare bones like unlambda or K
03:20:00 <crathman> but unlambda and k doesn't go above the level of actually letting you write long chains of combinators
03:20:04 <oerjan> 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 <oerjan> The impure C allows you to escape from a V.
03:21:06 <oerjan> Your command some hours ago, you wondered why Unlambda had V.
03:22:00 * oerjan must be in IRP-mode :)
03:23:01 <oerjan> 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:48 <crathman> I was sloppy with some of the sk chains
03:25:53 <oerjan> 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 <oerjan> 't know if anyone has used it.
03:26:49 <oerjan> It could allow for a different way of list termination.
03:27:46 <oerjan> 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:32 -!- crathman_ has joined.
03:32:50 <oerjan> SimonRC: the SKI logic is "the implicational fragment of intuitionistic logic"
03:34:52 <oerjan> And SKI corresponds to doing that logic Hilbert style, while lambda calculus corresponds to doing it natural deduction style.
03:35:16 <oerjan> See Wikipedia, I think.
03:35:36 <crathman_> 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 <oerjan> crathman: I found an interpreter for such a language the other day.
03:42:50 <crathman> I'm not proficient enough to write esoteric languages... but very much enjoys playing with them
03:43:34 <oerjan> i don't think it is considered esoteric, even, more like a computational model like combinatory logic itself.
03:44:03 <oerjan> I'm trying to look through my browser logs. Although I posted it here, too.
03:44:07 <crathman> oerjan: there is a fine line between tarpit and minimalist PL. :-)
03:46:11 <oerjan> 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 <oerjan> definitely something to play with, though.
03:48:15 <oerjan> 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 <oerjan> actually it is lambda calculus, but it is still pretty bare-bones
04:00:02 -!- ShadowHntr has joined.
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: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 <oklopol> oerjan, was it an unlambda interpreter you made with unlambda or a brainfuck interpreter? :P
09:12:46 <oerjan> http://oerjan.nvg.org/esoteric/interpreter.unl but I don't seem to get through at the moment.
09:14:14 <oerjan> I didn't even know I had one until they mentioned it during a recent crash at NVG
09:15:26 <SevenInchBread> you need a static IP address right? Either that or change the registration each time your IP changes...
09:15:59 <oerjan> well my webpage is on the NVG server so others take care of the mess...
09:16:19 <oklopol> what does C do in unlambda?
09:16:33 <oerjan> if you change the registration you have to be careful about expiration dates, I think.
09:17:16 <oerjan> if you make those too long you _cannot_ change the registration reliably until it expires.
09:17:24 <oerjan> C is call-with-current-continuation
09:17:45 <oklopol> hmm... what's that mean? :D
09:18:15 <oerjan> `Cf turns into `f<cont>, where <cont> is a continuation, a special function.
09:18:29 <SevenInchBread> yeah... changing the registration will create a period of time where your website is inaccessible... because of caching.
09:19:25 <oerjan> Now `<cont>g would cause the call `Cf to return with g as its result
09:20:36 <oerjan> If `Cf hasn't already returned you can think of <cont> as a local break or return function
09:22:02 <oerjan> But if `Cf has already returned you can mysteriously use <cont> to make it return _again_.
09:24:36 <oerjan> 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 <oerjan> When you can understand what it does, you have a good grasp on continuations.
09:26:33 <oklopol> so... it has something to do with side-effects? :D
09:26:36 <oerjan> However, I believe my interpreter only uses continuations for escape. Not that it isn't hard enough.
09:27:36 <oerjan> Sort of. C itself is still sort of pure, it just makes for strange program logic.
09:28:11 <oklopol> i'll try to understand them later
09:28:37 <oklopol> unlambda is goddamn simple now that i read about it yesterday
09:29:01 <oklopol> i didn't understand it when i saw it like half a year ago
09:34:52 -!- voodooattack has joined.
09:34:57 -!- voodooattack has quit (Remote closed the connection).
09:35:25 <oklopol> 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 <oklopol> hmm... i still have a hard time understanding how to do loops
09:58:22 <oklopol> can i get an s expression reduce to itself?
10:00:42 <oerjan> loops -> recursion -> clever use of self-application
10:01:51 <oerjan> let's say you want to make a function f = `g f
10:02:25 <oerjan> since unlambda has strict evaluation we need to be a bit careful.
10:03:33 <oerjan> Let's say we want f x = ``g f x, where g is given.
10:04:12 <oerjan> the first version will only work in a lazy language.
10:04:51 <oerjan> the trick is to make something that becomes f when applied to itself.
10:05:43 <oerjan> so ``h h x = ``g f x = ``g `hh x
10:06:08 <oklopol> so it won't evaluate them too early? or?
10:07:17 <oerjan> To avoid early evaluation, the first step is to modify g.
10:08:05 <oerjan> Make a g' such that ``g' h x = ``g `hh x
10:08:53 <oerjan> but such that g' only applies h to itself when really needed.
10:09:09 <oklopol> okay, this gets too hard for me
10:09:37 <oklopol> i just wanted `XS -> `I`XS
10:09:58 <oerjan> that's not overly hard since I is the identity.
10:10:08 <oklopol> i would need an interpreter to learn this
10:10:31 <oklopol> it's not overtly hard maybe, too hard for me though
10:10:53 <oerjan> i mean, `XS is _always_ `I`XS :D
10:11:49 <oklopol> but i'm having a hard time convincing myself about turing completeness
10:11:59 <oklopol> since all expressions seem to die right away
10:12:11 <oklopol> so i wanted to make an S expression evaluate to itself
10:12:43 <oerjan> ` ``sii ``sii will not die.
10:13:27 <oerjan> let me explain it a different way.
10:14:13 <oerjan> 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 <oklopol> yeah, that i figured, i just needed to see one simple example of S reducing into itself
10:15:43 <oerjan> well I just gave you one, ```sii``sii
10:16:18 <oklopol> 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 <oklopol> i wish this world was smaller
10:16:38 <oklopol> i might do something original sometime
10:16:57 <oklopol> i'll play with cheese for a while then
10:18:31 <oerjan> It should be ```sii``sii
10:18:57 <oklopol> indeed, but i understood it
10:19:25 <oerjan> Another one: ```sii``s`kk``sii
10:19:45 <oklopol> but, it basically just... sii doubles it's argument and applies it to itself, so it's trivial
10:20:09 <oerjan> but it needs lazy evaluation, hm...
10:20:15 <oklopol> but i learned these yesterday so they are not so clear yet i could write these things myself
10:20:23 <oklopol> i have to convert the big one to python :D
10:20:40 <oklopol> lambda a,b,c : (a(c))(b(c))
10:21:34 -!- nazgjunk has joined.
10:21:55 <oklopol> is there a nice command line kind of unlambda interpreter?
10:22:13 <oklopol> i'd make one fast in python though if just s and k and i
10:22:14 <oerjan> They are all command line aren't they?
10:22:22 <oerjan> The ones in the distribution.
10:22:40 <oklopol> because i've not seen one, i'll search if there are many then
10:22:41 <oerjan> And a few more on my web page
10:23:10 <oklopol> this is a language i'll prolly start making interpreters when learning languages, since it's so simple
10:23:32 <oerjan> Essentially what I did
10:23:52 <oklopol> can i see your web page? :D
10:24:09 <oerjan> Although getting C right requires some understanding.
10:24:14 <oerjan> oerjan.nvg.org/esoteric
10:24:25 <oklopol> yes, that's why i'll leave that until later
10:25:21 <oklopol> i might bug you later that is :D
10:25:50 <oerjan> I'm afraid I'll be leaving the house in 5 minutes
10:26:16 <oerjan> but feel free to ask me later
10:27:15 <oklopol> later tonight, i'll play with unlambda first
10:28:17 <oerjan> No, you can use stdin by giving no argument
10:30:27 <oerjan> I wrote it in a pretty old version of Haskell, no hierarchical libraries - NVG isn't quite up to date on Haskell
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:21:05 <oklopol> i'm making output by passing a list around xD
15:21:57 <oklopol> i want to get that working before actually learning haskell io
15:22:48 <oklopol> i made a vector drawing thingie the other day
15:24:14 <SevenInchBread> Actually... I might rig up a CLI to a programming language specifically for drawing pretty pictures.
15:45:45 -!- crathman has joined.
15:51:13 <oklopol> 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 <oklopol> haha once again my interpreter was perfect but i couldn't use it xD
16:03:30 <oklopol> well, not perfect but worked as i'd intended it to
16:03:39 <oklopol> 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:37:58 <SevenInchBread> ...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:21 <oklopol> 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 <oklopol> hmm... not that fast though xD
16:41:18 <oklopol> *::=++++++++[>++++++++<-]>+.+.+.+.+.+.+.:
16:41:29 <oklopol> has been running for 2 minutes now
16:42:49 <oklopol> i will try when i know it better
16:46:55 <oklopol> 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:34:06 <oklopol> made a thue interpreter in python in 25 min :P
17:34:32 <oklopol> a little learning with haskell is needed...
17:35:04 <oklopol> i was actually just starting to eat... but had to write it... my food's cold maybe :\
17:48:34 <oklopol> okay, might be i just used bad techniques
17:48:58 <oklopol> since i didn't really reason what the best way to do it would be
17:54:11 <SevenInchBread> 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))):
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 <oklopol> rules=filter(lambda a:a!=['']and a!=['',''], map(lambda a:a.split("::="),filter(lambda a:a!=' ',str).split("\n")))
18:12:28 <oklopol> that's not the optimal way though :PP
18:17:15 <oklopol> http://www.pastebin.ca/362275 this is quite sucky :P
18:19:53 -!- ShadowHntr has joined.
18:20:19 <oklopol> i don't know how to parse that with them
18:20:39 <oklopol> maybe you did it there, that will not compile in my python 2.2
18:20:46 <oklopol> 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:48 * SevenInchBread has the latest version of Python... so yeah... probably isn't compatable.
18:21:55 <oklopol> prolly, i just have [.. for .. in ... if ...]
18:22:04 <oklopol> and no other list comprehensions
18:22:18 <SevenInchBread> 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 <oklopol> okay, i don't know what that means
18:25:04 <SevenInchBread> 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 <SevenInchBread> list comprehensions are eager... generator expressions are lazy.
18:26:55 <oklopol> i got it now that i read your code thoroughly
18:27:19 <oklopol> except.. what is (x.partition("=")[::2] ?
18:27:57 <oklopol> tell me what it does there
18:28:05 -!- UpTheDownstair has joined.
18:29:27 -!- nazgjunk has quit (Connection reset by peer).
18:31:03 <oklopol> yeah, i thought it's like that, but now partition returns left, mid, right, mid being the thing by which it was partitioned?
18:32:21 <oklopol> can i do [:1:2] or something to get 1,3,5 etc
18:32:50 <oklopol> and btw i think it's brilliant they have these [stuff here] things for easy sublists etc
18:33:03 <oklopol> but, how would i get them?
18:33:21 <oklopol> i don't know python's terminology that well
18:34:27 <SevenInchBread> yeah... comma-delimited list of expressions surrounded by brackets... makes a list.
18:34:53 <oklopol> list literal, i didn't parse that in my head it seems :P
18:35:04 <oklopol> i mean (list here)[stuff here]
18:35:16 <SevenInchBread> [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:46 * SevenInchBread has never really figured out step... he just knows that setting it to 2 skips all the even indices.
18:36:44 <SevenInchBread> [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 <SevenInchBread> heh... you can do all sorts of nifty stuff with slices if you make your subclasses of list. :)
18:38:44 <oklopol> hey... range(100)[1::2:3] would that be something?
18:39:14 <oklopol> would've been a fun way to slice
18:39:32 * SevenInchBread brings up numpy... which uses some kickass multidimensional slicing.
18:58:46 <SevenInchBread> >>> x = numpy.array([range(10), range(10,20), range(30,40), range(40,50)])
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 <oklopol> can you take sub-squares from a 2d-array?
19:01:50 <SevenInchBread> I think you can... I'm just trying to figure out how. :P
19:02:15 <SevenInchBread> it's also pretty damn efficient... most of NumPy's array stuff is in C.
19:03:55 <SevenInchBread> as long as you maintain a solid shape you can just use multiplication.
19:04:17 <oklopol> yeah, asm does that faster than it does actualy multiplication
19:05:40 <SevenInchBread> heh... there's a function for initializing an arbitrary array to nothing but zeros... perfect for a BFer :)
19:06:22 <oklopol> well, it's kind of obvious there's one :P
19:07:10 <oklopol> i think it is... maybe not :\
19:08:47 -!- Sgeo has joined.
19:10:50 <oklopol> i don't... i'll get a newer python too if i get it
19:11:00 -!- UpTheDownstair has changed nick to nazgjunk.
19:12:06 <SevenInchBread> 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:28 <oklopol> 100 x 100 is pretty much an empty array :)
19:14:00 <SevenInchBread> well... using Python lists it would have taken up a signifigant amount of memory.
19:14:37 <oklopol> i'm used to python being unbelievably slow
19:15:04 <SevenInchBread> I haven't experience much of anything else... as far as for actual use.
19:15:45 <oklopol> i know at least c++, java, python and vb thoroughly
19:15:57 <SevenInchBread> 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 <oklopol> thoroughly being i know pretty much all the things normal people use with them :)
19:21:53 <SevenInchBread> hmmm... alright... so a 100 by 100 by 100 by 100 matrix of zeroes made my computer bog down for a minute.
19:23:39 <SevenInchBread> 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 <oklopol> it's not the time that's the issue there :)
19:25:04 <oklopol> good, c had a restriction of 12 dimensions at some point :P
19:25:05 <SevenInchBread> but... since that would be well over a gigabyte... it sorta... preemptively stopped me.
19:25:16 <oklopol> (might be a lower lever restriction though)
19:25:56 <oklopol> a bit more if you consider the idiotic 1024==1000 thing
19:26:00 <SevenInchBread> 10 gigabytes.... of zeros... talk about useful memory.
19:27:06 <SevenInchBread> typ... the dimensions look arbitrary... just however much memory we can hold.
19:30:07 <SevenInchBread> >>> 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 <SevenInchBread> ValueError: sequence too large; must be smaller than 32
19:30:40 <SevenInchBread> Still... that should be plenty of dimensions for most scenarios... unless you're doing some freaky theoretical physics shit
19:30:59 <oklopol> yeah, but it wouldn't make it harder to code to make it n dimensions...
19:34:21 <SevenInchBread> well... I tried to make a bigger dimension... but xrange() gave out on me before the trust list could.
19:35:40 <SevenInchBread> oh ho! but itertools and its trusty count function save the day.
19:35:56 <oklopol> i was just about to press paste on the same pieceeh
19:40:15 <oklopol> 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:39 <SevenInchBread> 10000000000000000000000000000000-d list took too long...
19:40:55 <oklopol> fucking python installation ....
19:41:06 -!- GregorR has changed nick to GreggorR.
19:41:41 <SevenInchBread> Python's list/iterative-stuff is probably one its stronger features...
19:41:57 -!- GreggorR has changed nick to GregorR.
19:42:58 <SevenInchBread> theoeretically speaking... Python can have infinitity-d lists.
19:44:02 <oklopol> well, any list can have any-dimension lists :)
19:44:42 <SevenInchBread> hmm... I actually don't think Python can create infinite-length lists...
19:48:58 <oklopol> you can't have an infinite length list because of the implementation
19:49:11 <oklopol> i don't think python has but memory limits on length
19:49:15 -!- sebbu2 has joined.
19:49:37 <SevenInchBread> oklopol, well... with linked lists you can simply reference the pairs beforehand...
19:49:47 <oklopol> i'd like a brainfuck os better
19:50:27 <oklopol> why the fuck does the taskbar not hide?!?!?!?!?!?!?
19:50:49 <oklopol> why did they put a randomizer on every fucking task
19:51:06 <oklopol> i closed about 40 programs just now to get it down
19:53:07 -!- digital_me has joined.
19:53:12 <oklopol> 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:54:32 <oklopol> i forgot python had pointers
19:55:06 <oklopol> mutable is different, i mean addressable
19:55:34 <SevenInchBread> maybe in the implementation... but it's transparent at the top.
19:56:07 <SevenInchBread> the pointing and addressing and all that is automatic.
19:56:29 <oklopol> you don't see the pointers as numbers
19:56:35 <oklopol> that's the only difference
19:57:04 <SevenInchBread> yeah well... by that logic... there's no much difference in assembly and Python.
19:57:58 <oklopol> 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:24 <oklopol> BUT you don't have a real difference like in functional langs you would
19:58:33 <oklopol> where you can't know where something is
19:58:34 <SevenInchBread> totally... I'd rip my hair out if I had to mess around with pointers.
19:58:41 <oklopol> and it isn't really anywhere
19:59:02 -!- goban has quit (Read error: 54 (Connection reset by peer)).
19:59:07 <oklopol> but i forgot python is any-style programming... there's a nice term for it
19:59:14 -!- goban has joined.
19:59:36 <SevenInchBread> usually they can be simulated in part... they are nice though.
20:00:02 <SevenInchBread> I've got a fairly interesting language in my head... that resembles Smalltalk... but fairly different.
20:00:24 <oklopol> that's a bit too vague to be interesting tbh :D
20:01:09 <SevenInchBread> 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:02:54 <oklopol> you mean OO features or attitude
20:03:17 <oklopol> and yes, i know that much about smalltalk
20:03:33 <SevenInchBread> It was one of the first to do "everything is an object"...
20:03:51 <oklopol> i know all the trivia stuff, just not anything real :)
20:03:54 <SevenInchBread> It doesn't really remind me of other OO languages though.
20:04:28 <oklopol> it has a metaclass everything is derived from, the metaclass being derived from itself, that's how much i know :P
20:04:41 <oklopol> because everything HAD TO be derived from something
20:06:46 <SevenInchBread> 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 <SevenInchBread> 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 <SevenInchBread> more flowery than implementation-specific... but eh... it's the best description I could find. :P
20:09:32 <oklopol> i like technical descriptions better.. but i'll read that if it's not long
20:09:56 <SevenInchBread> 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 <oklopol> i finally managed to read it :)
20:35:33 <oklopol> there was nothing i didn't know
20:36:34 <SevenInchBread> so... other languages don't have something similar to list[x:y]?
20:37:01 <oklopol> that does not mean there isn't one
20:37:11 <oklopol> since i know mostly esoteric alngs
20:37:25 <SevenInchBread> Some Python-like languages probably do it... I'd guess Ruby and maybe Perl.
20:37:58 <oklopol> yeah, i don't know those languages... i should learn the languages everyone knows...
20:38:00 <SevenInchBread> Hmm... I think in Smalltalk slicing is like list from: x to: y
20:38:40 <oklopol> that kind of sublisting syntax can of course be implemented in c++ in 10 min
20:39:10 <oklopol> but i won't do that :\ so it has to be in the language itself
20:39:22 <SevenInchBread> I'm surprised C(++) doesn't have... Python's for loop.
20:39:40 <oklopol> it is considered to be added
20:39:54 <oklopol> but c++ is slow to change nowadays
20:40:02 <oklopol> it will take the java syntax
20:40:08 <SevenInchBread> well... maybe not in C.... arrays aren't quite as versatile as lists.
20:40:40 <oklopol> for (int i : integer_list) {}
20:40:52 <oklopol> 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 <oklopol> but you have iterators in c++, it's the same thing but no nice syntax for it
20:41:18 <SevenInchBread> I've never actually used that language... just read about it.
20:41:39 <SevenInchBread> conditionals are like.... bool ifTrue: function ifFalse: function
20:44:34 <SevenInchBread> math looks like any other math... because of the binary syntax form... 2 + 2 2 / 2
20:45:48 <oklopol> the if thing i don't understand
20:45:53 <oklopol> but i know math is like that
20:46:10 <SevenInchBread> booleans are equipped with an ifTrue and an ifFalse method.
20:50:46 <SevenInchBread> 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 <oklopol> i still don't know anything about smalltalk :)
20:55:35 <oklopol> "..." print outputs a string
20:55:36 <SevenInchBread> 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 -!- UpTheDownstair has joined.
20:55:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
20:56:33 <oklopol> i don't know syntax, i don't know the language
20:57:04 <SevenInchBread> there's basically thee kinds of expressions... and a few literals.
20:58:08 -!- goban has quit (Read error: 54 (Connection reset by peer)).
20:58:11 <oklopol> messages... how i see it is that functions are rather sent messages to objects that contain instructions
20:58:36 <SevenInchBread> unary... which goes object message binary... which goes object message arg1 and keyword object message1: arg1 message2: arg2 message3: arg3 ... ... ..
20:58:43 <oklopol> i don't know what is referred to by a "message"
20:58:49 -!- tgwizard has quit (Remote closed the connection).
20:59:27 <oklopol> yeah, so exactly how i guessed, but it wasn't clearly said there
20:59:44 <oklopol> by "message" i assumed an erlang-type message
20:59:50 -!- UpTheDownstair has changed nick to nazgjunk.
21:01:11 <oklopol> 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 <oklopol> the in the function that the process-id points to there can be "on receive this and this message"
21:02:18 <oklopol> you should read about erlang
21:02:40 <oklopol> runs 25 million threads smoothly i hear
21:03:02 <oklopol> yeah, functions can stop to wait for messages from other functions
21:03:12 <oklopol> and when you call a function you store it's process id
21:03:25 <oklopol> that's the basic thing you do in erlang
21:04:10 <oklopol> (though the name actually comes from a guy named erlang, quite a coincidence)
21:04:12 <SevenInchBread> you could easily fork real OS subprocesses and wrap them as erland functions.
21:05:09 <oklopol> 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 <SevenInchBread> hmm.... ah... that's interesting... so it stores processes as memory... that's usually not done.
21:05:38 <oklopol> i haven't even seen an implementation for erlang, i just read a book about it... i think
21:05:56 <oklopol> yeah, a running function is kinda like an object
21:06:03 <oklopol> 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:27 <oklopol> but long executions don't matter since they are in a stabilized state when waiting for messages
21:07:03 <oklopol> actually... a function waiting for a message is kinda like an object with a state
21:07:05 <SevenInchBread> Id-ified responses... sounds like a step-up in human-like communication... since communication is rarely linear.
21:07:12 <oklopol> ...only a lot sexier if you ask me
21:07:23 <SevenInchBread> ah... all the local variables are held like an object's state?
21:07:28 -!- goban has joined.
21:07:43 <oklopol> you have pattern-matching and vars
21:08:06 <SevenInchBread> ...I've actually had an idea like that before... frozen functions with object-like state.
21:08:14 <oklopol> has all the nice functional list convenience
21:08:25 <oklopol> yep, i just realized it now actually
21:08:35 <oklopol> and started to like erlang a lot more :)
21:09:23 <oklopol> because they can have vars, calling is an object constructor, vars are the stored state, receiving messages is waiting for function calls
21:09:52 <SevenInchBread> 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 <SevenInchBread> yeah.. I've noticed you can use coroutines to make objects..
21:10:30 <oklopol> yeah, well, in java threads are easy, but erlang beats it
21:10:40 <oklopol> and with most langs threads are shitty
21:11:31 * SevenInchBread incorporates some of that into his smalltalk/lisp mix.
21:11:45 <oklopol> 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 <SevenInchBread> the coroutines I've seen though are far more limited than that though.
21:13:06 <SevenInchBread> 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:09 <oklopol> erlang doesn't have return values
21:15:36 <SevenInchBread> 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 <oklopol> 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 <oklopol> "universal syntax and symbols" what does this mean?
21:16:31 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:16:40 <oklopol> i don't know lisp that well
21:16:52 <SevenInchBread> well... Lisp just has one and only one syntax.... (func arg1 arg2 ...)
21:18:06 <SevenInchBread> so... Lisp can directly access its variables as a data type... a symbol data type.
21:18:36 <SevenInchBread> so... to assign a symbol to a value in Lisp... you do (set 'symbol value)
21:19:04 <SevenInchBread> ' being a special literal that keeps an expression from evaluating... and returns it as a symbol.
21:19:40 <SevenInchBread> if you have it so that every object understands the "becomes" message.
21:19:42 -!- ShadowHntr has quit ("End of line.").
21:20:06 <SevenInchBread> you can change reference to objects... or you can change objects themselves.
21:20:10 <oklopol> in common lisp is not used with defun, set and such specialties... or?
21:20:48 <oklopol> i read this book from the seventies...
21:20:55 <SevenInchBread> 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:40 <oklopol> set and defun they were in the book
21:22:23 <oklopol> and let and something to make functions and vars in functions...
21:22:24 <SevenInchBread> but in my language... there won't be macros... and thus no special way to make variable assignment.
21:22:40 <oklopol> 3 different ways to make functions
21:22:50 <SevenInchBread> you just have to send a becomes message to a symbol object..
21:24:38 <SevenInchBread> `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 <SevenInchBread> so in the second one... -all- references to foo would be pointing to bar now.
21:25:42 <SevenInchBread> and instead of tiny little memory blocks... you have entire objects.
21:27:19 <SevenInchBread> 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:30:32 <SevenInchBread> 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:23 <SevenInchBread> actually... variable assignation copies the memory into the new block.
21:38:06 <SevenInchBread> well... the benefits are basically what you get with pointers... except less complicated (I think).
21:38:42 <SevenInchBread> 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 <oklopol> well... the syntactical inconvenience of c pointers can easily be circumvented in c++
21:42:11 <SevenInchBread> the symbol design works really nice for prototype-oriented OO... familiar with it?
21:45:47 <SevenInchBread> you make new objects by spawning copies of previous objects and altering their contents.
21:46:11 <SevenInchBread> which is really all classes do... make copies of themselves...
21:46:21 <SevenInchBread> now we just remove the distinction of class and object altogether.
21:46:34 <oklopol> nopol does that... but it's classes and functions are the same thing
21:46:42 <oklopol> so... it's a bit different
21:47:37 <oklopol> i don't know any of them:<
21:47:59 <SevenInchBread> 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 <SevenInchBread> like delegation... which is basically arbitrary inheritance.
21:48:36 <SevenInchBread> but... I'm not going to use any sort of inheritance... because you don't need it.
21:48:52 <oklopol> yeah... modularity is for wimps
21:53:05 <SevenInchBread> nah... you just copy everything over... you've still got modularity..
21:53:34 <oklopol> if you have duckish typing
21:53:50 <SevenInchBread> 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 <SevenInchBread> oh definetely... I'd have trouble even conceiving of a language that can't duck type.... Python has spoiled me.
21:55:35 <oklopol> well, duck typing circumvents inheritance
21:56:09 <oklopol> because you can have similar interfaces with similar objects
21:56:25 <oklopol> with duck typing you jsut don't tell that to the compiler until at run-time
21:56:55 <oklopol> a bit slower if bad implementation, maybe a bit less clear for someone who reads the code
21:57:05 <oklopol> and makes a lot of things less verbose
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 <oklopol> you don't have to specify in the code which things do what
21:59:06 <oklopol> but you just hope they abide by the interface that is needed
21:59:17 <oklopol> i don't know if you follow what i'm trying to say
21:59:29 <SevenInchBread> 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 <oklopol> yeah, but it reduces run-time errors
22:00:17 <oklopol> because if you don't tell it it can't tell you you did an error
22:00:30 <SevenInchBread> 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 <oklopol> yes, but with non-duck typing you also know what kind of things do what kind of stuff
22:01:34 <oklopol> 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:02:37 <SevenInchBread> 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:03:16 <oklopol> yeah... that can be done with or without duck-typing
22:03:28 <oklopol> but without it you do it with inheritance
22:04:12 <oklopol> and then it's more "agreed" that it does what it's required to do
22:04:24 <oklopol> with duck-typing it's run-time checked
22:05:36 -!- anonfunc_ has quit.
22:09:11 <oklopol> if something is inherited from something else it has the method the parent has
22:09:27 <oklopol> so if a function need some methods a, b and c
22:09:31 -!- nazgjunk has quit ("mrahaha").
22:09:37 <oklopol> and then that class is derived from
22:09:48 <oklopol> with duck-typing you don't need that
22:09:56 <oklopol> because you can send ANY object to it
22:10:12 <oklopol> doesn't have to be derived from the class that has the methods that function needs
22:10:28 <oklopol> and the function then fails if the object it got doesn't have the methods
22:10:35 <oklopol> and this is a runtime error
22:10:55 <oklopol> without ducking it would've been a compile time type error
22:11:38 <oklopol> in my first sentence method -> methods
22:13:10 <oklopol> i think if you do the duck you oughtta have direct string manipulation for method names... which python incidentally does :P
22:16:09 <oklopol> 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 <oklopol> because a function can only use a method it's argument has
22:16:45 <oklopol> (casting can be done of course but considered bad in most cases)
22:22:10 <SevenInchBread> it does add a layer of security to a procedure... but usually one that isn't needed...
22:23:08 <SevenInchBread> Actually... I think a nice way to do typing is by category.
22:23:44 <oklopol> well, that's interfaces for you
22:26:10 <SevenInchBread> if something doesn't work... let it explode on its own...
22:29:24 <SevenInchBread> in a purely OO language... the worst that could happen is the object doesn't implement the method.
22:30:21 <oklopol> 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:33:31 <SevenInchBread> oh... another thing I like about the smalltalk-like syntax I'll be using.
22:33:50 <SevenInchBread> there's absolutely no distinction between function calls or attribute reading.
22:34:10 <SevenInchBread> because all attributes are messages... which are function-like-things.
22:34:11 <oklopol> i don't know if it's like that with other langs, but from what i hear, it is towards that direction
22:35:15 <SevenInchBread> yeah... everybody's trying to make languages that are good for shelling out programs quickly and efficiently...
22:35:25 <SevenInchBread> I mean... whatever happend to having fun whilst programming?
22:35:57 <oklopol> 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 <SevenInchBread> fully automatic unicode support... that's another thing I'll put in this language. :)
22:36:43 <oklopol> 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:37:15 <SevenInchBread> ...if everyone followed that logic... no one would be making tools.
22:38:21 <oklopol> yeah... i said something like that, they said you don't get money if you do stuff yourself
22:39:01 <oklopol> i thought you must be young with your constant ideas
22:39:42 <oklopol> c++ has it, java has it, python has it, what doesn't?
22:39:57 <SevenInchBread> 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:28 <oklopol> ah, yeah, indeed it doesn't
22:41:02 <SevenInchBread> but I don't it's impossible to have automatic management of encodings.
22:42:02 <SevenInchBread> it'll convert to long, short, floating-point whatever.
22:43:18 <oklopol> yes, exactly what i thought
22:43:30 <SevenInchBread> simply because it, mathematically, operates differently.
22:43:35 <oklopol> exactly what python has, right?
22:43:54 <SevenInchBread> Python still distinguishes between integer and floating point.
22:44:06 <SevenInchBread> long and short are automatically converted... but they're still separate data types.
22:44:32 <oklopol> you don't see the data-types really
22:44:56 <SevenInchBread> with true division being implemented though... it's getting close to that.
22:45:14 <SevenInchBread> but... there's still distinguishments in the type hierarchy... which is what I was talking about removing.
22:45:31 <SevenInchBread> the data would be represented internally in multiple ways... but abstractly it's just a "number".
22:45:32 <oklopol> you wanna get floating points perfect, you make a lazy system that NEVER calculates a function unless for output
22:45:45 <oklopol> and still maintains the actualy functional representation
22:46:08 <oklopol> and makes it nicer when it finds rules like + - x 1 1 = x etc
22:47:26 <SevenInchBread> maybe a rational data type... but that's mainly only useful for algebraic solver applications.
22:47:51 <oklopol> i thought about making this math lang
22:48:10 <oklopol> since i could easily do better than matlab with basic mathematics
22:48:20 <oklopol> not the neural networks etc of course :P
22:48:32 <SevenInchBread> I like how math can be implemented without using special syntax...
22:48:59 <SevenInchBread> 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:50:08 <SevenInchBread> 2 + 2 isn't special syntax in the language I'm thinking of.
22:51:48 <oklopol> which is 5 * (4 + (5 * 2))
22:52:38 <SevenInchBread> the operators don't need special syntax... it's not exactly like math.
22:53:00 <SevenInchBread> over *... but they can both be included and mean the same thing.
22:53:49 <oklopol> well, if you have vectors, you can have '*', '.' and 'x' be different multiplications :)
22:54:20 <SevenInchBread> see... that's the thing... all the objects define what all the operators mean
22:54:36 <oklopol> yeah, operator overloading
22:54:51 <SevenInchBread> the operators are just... defined on the objects anyways.
22:55:12 <oklopol> you make a new datatype, it has everything already?
22:55:34 <SevenInchBread> depends on where you copied from... remember there aren't really any "typeS" here... just objects.
22:56:19 <oklopol> hmm.. i still don't see where exactly you tell the computer what the multiplications mean...
22:56:51 <oklopol> i'm pretty sure there's something wrong with my s
22:57:09 <SevenInchBread> it'll be builtin code defining what multiplication does... but it can be overriden...
22:57:30 <SevenInchBread> it doesn't matter -how- the method is defined... simply that it is associated with the right name.
22:59:03 <SevenInchBread> thus making all references to the True object now point to False instead.
22:59:24 <oklopol> yeah, you told that before
22:59:37 <oklopol> that's fun for esoteric purposes
22:59:43 <SevenInchBread> eh... well... boleans are kind of singletonish anyways... so `True becomes False would have much of the same effect.
23:00:10 <oklopol> but you should never have ANYTHING have any side-effect upwards without declaring it clearly in an upper lever
23:00:13 <SevenInchBread> except other symbols point to True would still be pointing to True.
23:01:00 <oklopol> i have a thing called infinite nesting theory
23:01:11 <oklopol> i'm not going to try and explain here
23:01:26 <SevenInchBread> restricting possibilities just because someone might use them stupidly is a bad idea.
23:01:51 <SevenInchBread> The Python developers do that a lot... much to my chagrin
23:02:47 <oklopol> yeah... it kind of takes the point of wanting things high-level if you can do low-level fuck-ups :P
23:05:41 <oklopol> 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:06:56 <oklopol> no, reserve that for your two-dimension pointer needs
23:07:36 <oklopol> yeah yeah, i wasn't serious.
23:08:00 <oklopol> you don't wanna know what i meant
23:10:02 <oklopol> 10 base 2 would be [1,0,1,0] if you ask me
23:10:55 <SevenInchBread> I want to use like... base 50 represented by sequences of base 5
23:13:19 <SevenInchBread> different bases will simply be represented by different objects.
23:13:43 <oklopol> mmm okay, what did "base 50 represented by sequences of base 5"
23:14:29 <oklopol> i hope you don't see a connection between the numbers 50 and 5
23:15:20 <oklopol> 11 only has special properties in 10-base
23:15:30 <oklopol> that's the reason for all the hoping
23:21:50 -!- oerjan has joined.
23:23:17 <oerjan> hm... or it could be a list [5,2]
23:23:39 <oklopol> oerjan i got the thue working :P
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:24:17 <oerjan> SevenInchBread: Have you heard of the Fibonacci base?
23:25:42 <oerjan> I think he means http://en.wikipedia.org/wiki/Fibonacci_coding
23:27:23 <SevenInchBread> hmm... maybe a mixed radix notation that alternates between 3-base and 5-base
23:28:37 <oerjan> alternating means essentially using 15-base, I think
23:29:13 <oerjan> unless you use a weird alternating scheme - like one based on Fibonacci numbers :)
23:32:12 <oklopol> http://en.wikipedia.org/wiki/Zeckendorf%27s_theorem
23:32:37 <oerjan> i understand that. but if the mix is strictly alternating, it will be just base 15.
23:32:38 <oklopol> ai auto-proved that in a second when i heard fibonacci base
23:33:29 <oerjan> I had this urge to reedit that article to say "slightly" before the "more difficult"
23:33:32 <SevenInchBread> heh.... base 0.1 is pretty cool... it's base-10 backwards.
23:33:35 <oklopol> well, for any alternation n1, n2, ... nN it will essentially be || nX base
23:33:58 <oklopol> where || is sigma for multiplication...
23:34:09 <oklopol> i'm not good with terms :)
23:34:33 <oklopol> multiplication of a list...
23:34:52 <oklopol> sum has the E thing, multiplication a || thin with a lin on top
23:35:12 <oklopol> list.. math doesn't call them lists
23:35:23 <oerjan> like, the minutes/seconds notation is essentially itself mixing base 6 and 10 to make 60...
23:36:07 <SevenInchBread> it's essentially base 15... but you get to write it in a confusing manner.
23:36:22 <oerjan> they are capital greek Sigma and Pi.
23:36:42 <oklopol> looks like capital pi, didn't know it was though
23:36:51 <oklopol> and i don't have the letter on this keyboard
23:36:53 <oerjan> in 3:10:15, the digits after the colons can only be 0-5
23:37:44 <oklopol> 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 <oerjan> that may be true but I think the ancient babylonians wrote their base 60 in two parts as well
23:38:31 <oerjan> otherwise, just too many digits
23:38:42 <oerjan> i'm not completely sure of it.
23:39:14 <oklopol> they invented fractions actually i think... i think i read about this exact thing somewhere
23:39:26 <oerjan> the length of the year is close to 360 days.
23:39:53 <oklopol> yeah... 6 * 60, plus 10 for the history of finger calculation
23:39:57 <oerjan> actually fractions are frequently base 60 because the babylonians invented them, and had a base 60 system
23:40:19 <oerjan> i vaguely recall it merging from a base 6 and base 10 system.
23:41:09 <SevenInchBread> it was base 60... but the didn;t represent it with 60 individual symbols
23:43:47 <oerjan> heh, the mixed base article says the Mayans used 20 except for second place, where they used 18
23:44:46 <oklopol> the other way around of course
23:44:47 <oerjan> why, they would use base 14 of course, having that many digits...
23:46:36 <oklopol> i wish my parent would've taught me hex only :\
23:46:44 <oerjan> btw: (S)igma for (S)um, (P)i for (P)roduct.
23:49:12 <SevenInchBread> It's like base-10... except there's a tiny offset as you go up.
23:49:20 <oerjan> and that part i said about using a weird mixing, i meant using what is called Fibonacci substitution.
23:50:42 <oerjan> 0 -> 01, 1 -> 0, repeat indefinitely to form infinite sequences.
23:51:33 <oerjan> Then use such a sequence to decide which base to use at which position.
23:53:45 <oerjan> In Haskell: fibseq = '0' : concatMap s fibseq; s '0' = "01"; s '1' = "0"
23:55:30 <oerjan> Make that fibseq = '0' : tail (concatMap s fibseq) where s '0' = "01"; s '1' = "0"
23:58:19 <oerjan> The first 50 digits: 01001010010010100101001001010010010100101001001010
23:59:05 <oerjan> with half-notes you need base 12, plus notation for octave
00:00:05 <oerjan> C C# D D# E F F# G G# A B B# if that is right in English.
00:00:37 <oerjan> Or do they use H for B# too?
00:00:41 <oklopol> C C# D D# E F F# G G# A A# B is english
00:01:02 <oerjan> wait, I got that backwards
00:01:07 <oklopol> and all of them too crappy to use
00:01:19 <SevenInchBread> wow... I didn't even realize there was another standard.
00:01:41 <oklopol> it was you who misguided me :P
00:01:59 <SevenInchBread> so we don't have to deal with those missing half-tones.
00:02:05 <oerjan> in Norwegian at least, for historical reasons Bb is B while B is H
00:02:05 <oklopol> because pythagoras was an idiot
00:02:15 <oerjan> typographical reasons, in fact.
00:03:03 <oerjan> They were written as different font versions of B, and one of them resembled H...
00:03:18 <oerjan> so eventually turned into it.
00:04:09 <oklopol> i don't hear clearly other than 12, since i didn't hear them early enough
00:04:29 <oklopol> note ear i one thing you only learn young (note ear?)
00:04:55 <oerjan> It's 7 because that is how many there are in a single scale
00:05:11 <oklopol> yeah, but it's a stupid system
00:06:49 <oklopol> i should make my music language... then i could start playing with automatic music generation
00:06:59 <oerjan> 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 <oklopol> that's pretty no-man's-land
00:07:43 <oklopol> wouter's page has a nice article on that
00:07:45 <SevenInchBread> yeah... I had an idea for a rhythm-based language... that broke up a beats into infinitely-divisible sub beats...
00:08:04 <SevenInchBread> even on a finite tape of memory its theoretically infinite due to fractional divisions
00:08:19 <oklopol> but the whole scale thing is just a too-far-gone abstraction...
00:08:40 <oerjan> hm... brainfuck with an infinitely divisible tape might be something
00:10:02 <SevenInchBread> divisions just "expand" the tape... as things kind of break down
00:14:13 <oerjan> You mean http://wouter.fov120.com/rants/hertz_12notes.html ?
00:14:51 <oklopol> the only rational thing i've heard said about numbers
00:15:13 <oklopol> but most musicians have no idea... about anything
00:15:50 <oklopol> it's hard explaining why a riff is good if ppl can't understand it's mathematical idea
00:16:09 <oklopol> wouter of course talked about a different thing that riffs etc
00:19:28 <oklopol> well, of course what has a good idea always sounds good
00:22:37 <SevenInchBread> it's a fairly context sensitive means of expression...
00:23:02 <SevenInchBread> If we just used instruments capable of bending across any number of frequencies... you'd have the full range of options...
00:23:25 <SevenInchBread> 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:24:45 <SevenInchBread> the frets serve as landmarks... but most of the tones are somewhere inbetween.
00:25:03 <SevenInchBread> can't do that with a piano... which always has an exact tone for an exact position.
00:25:21 <oklopol> you can do that with most instruments
00:26:05 <SevenInchBread> 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 <oklopol> 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 <SevenInchBread> styles, I guess... both genres center heavily on the penatonic.
00:27:41 <oklopol> 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 <SevenInchBread> that's true... istars are usually one note at a time, with the resonating strings usually doing octaves.
00:28:38 <oklopol> indeed, it gets too complicated otherwise
00:28:41 -!- wooby has quit.
00:28:53 <oklopol> i've always liked dissonance though
00:28:54 <SevenInchBread> 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 <oklopol> my piano teacher always yelled at me when i played tritonus all the time in my compositions
00:30:06 <SevenInchBread> it would be interesting to find some way to represent near-human-like performances via something like a programming language.
00:30:34 <oklopol> you mean like... make the computer sound like a human playing?
00:30:42 <SevenInchBread> like... you could create frequency abstractions... rhythm abstractions... melodic patterns (and a way to make slight changes to that pattern)...
00:31:16 <oklopol> dl quitar pro 5 and see how good the technology is today...
00:31:37 <oklopol> everything is recorded from real instruments and it sounds terrible
00:31:54 <oklopol> (though prolly not the best possible program for it...)
00:32:27 <oklopol> and there is this tiny thingie in the loudspeaker
00:32:38 <oklopol> 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:33:00 <oklopol> and at certain intervals it takes the next number and moves the thingien in there in the right place
00:33:31 <oklopol> mp3 uses something very mathematical and clever, but everything is always reduced to wav when playing
00:33:50 <oklopol> since the physical way to represent sound in a loudspeaker is done like that
00:34:04 <SevenInchBread> hmm... so if you could make abstractions of all the various musical patterns (rhythm, harmony, melody, timbre(?))
00:34:40 <oklopol> i don't care about sound that much, i'm more interested in melody
00:34:49 <oklopol> i mean, mathematically at least
00:35:11 <SevenInchBread> I want to create worthwhile music with nothing but a computer program... basically.
00:36:02 <oklopol> 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:28 <oklopol> since 0 255 is one wave only
00:37:24 <oklopol> so you do 50 0's, then 50 255's, then 50 0's etc to make the "a" note
00:38:19 <SevenInchBread> you would need very very very subtle changes in the frequency... to make it sounds good.
00:38:22 <oklopol> square is used in old games and a the base of a few soloish tunes of a synthesizer
00:39:04 <oklopol> that is done - suprisingly - with a sin()
00:39:12 <SevenInchBread> or like... some sort of imaginary number oscillator thing?
00:39:43 <oklopol> t meaning we are playing the t:t'h time step of the note
00:39:52 <SevenInchBread> but even then... that's going to be a very very steady wave... hardly "the real deal".
00:40:02 <oklopol> natural sounds are done with addition of sine waves and random generation
00:40:10 <oklopol> and i don't care about it that much
00:40:16 <oklopol> so i can't tell you a lot about is
00:40:57 <oklopol> you can't make natural sounds since NO ONE has EVER been able to do them
00:41:18 <oklopol> you can record them and clone them as you wish
00:41:25 <oklopol> but it's the same as cloning humans
00:41:41 <oklopol> it works but how it really works is unknown
00:41:59 <SevenInchBread> 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 <SevenInchBread> simulate the release of air from vocal chords pressing against a microphone.. etc
00:42:28 <oklopol> you can make a continuation in python that returns values for the thingie (0-255) one step at the time
00:42:36 <oklopol> and use it to fill a wav file
00:42:57 <SevenInchBread> with some couroutinal crap you could send in some input for mild alterations based on surrounding stuff.
00:43:03 <oklopol> i did a random music generator once :P
00:43:11 <oklopol> it randomized the tone and the melody
00:43:25 <oklopol> i liked the melodies... no one else did
00:44:13 <oklopol> 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:24 <SevenInchBread> It would be cool to apply some fractal-like mathematic stuff...
00:44:44 <oklopol> i randomized a sequence for the thingie, not a mathematical formula for the sine waves
00:44:51 <oklopol> so it rarely randomised good tones
00:46:12 <oerjan> yeah, oklopol is just really fond of white noise :)
00:46:15 <oklopol> 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 <oklopol> 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 <oklopol> so it has some coolness in it
00:47:18 <oklopol> but, i must confess, i like white noice
00:48:16 <oklopol> 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:24 <SevenInchBread> I don't know why it never occured to me that I could play around with sound using programs.
00:48:50 <oklopol> yeah, i love to find out i've actually done stuff in the past
00:49:11 <oklopol> with a bad memory like me you often get a feeling you've wasted 17 years and archieved nothing
00:49:16 <SevenInchBread> hmmm... maybe a BF-like language that does something with sine waves?
00:49:35 <oklopol> i've been designing brainsick
00:50:23 <oklopol> brainfuck with everything in it, music, 3d graphics, networking, gui, etc
00:51:48 <oklopol> i once made a language for creating music... i don't think i ever finished it
00:53:02 <oklopol> 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 <oklopol> just now == 4 months or smth
00:53:48 <oklopol> i've done a lot of interpreters, always used one data class with a void pointer and enum for type :D
00:54:09 <oklopol> maybe i'll stop the monolog and go to sleep
00:56:36 <SevenInchBread> hrm... I'm a bit rusty on my wave physics / mathematical represenatations of that.
00:57:22 <SevenInchBread> if you have two wave functions going over the same medium... they usually add together right?
00:57:51 <oerjan> superposition, yes i think so
00:59:14 <SevenInchBread> string instruments produce standing waves, harmonics, fundamental frequency, partial tones etc
00:59:38 <oklopol> standing waves are the same thing
00:59:53 <oklopol> because we only consider the wave, not how it begins
01:00:14 <oklopol> harmonics -> result of the addition
01:00:36 <SevenInchBread> the standing wave is the result of the original wave being plcuked and reflrected across the string.
01:00:59 <oklopol> yes, it results in a wave in air :)
01:01:28 <SevenInchBread> 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 <oklopol> partial tones: actual_note sin(n) = sin(n) + 1/2*sin(n*2^(7/12)) + 1/4*sin(2n)
01:02:45 <oklopol> 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:55 <SevenInchBread> hmmm... oh that's neat... Haskell can define functions implicitly?
01:03:01 <oklopol> haskell couldn't understand that
01:03:28 <oklopol> if i understand what you mean
01:04:05 <SevenInchBread> well see... I'm trying to get more than just the note here..
01:04:09 <oerjan> it's nearly correct Haskell, just change ^ to ** and add a missing * I think
01:04:29 <oklopol> but it's not what i meant :)
01:04:32 <SevenInchBread> you start off with a simple wave... from plucking... which oscilates and reflects over itself.
01:05:02 <SevenInchBread> I want the sound of that initial startoff too... not just the result of it.
01:05:55 <oerjan> partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics.
01:06:02 <SevenInchBread> 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 <oerjan> 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:45 -!- oklofok has changed nick to oklopol.
01:08:58 <oerjan> partial tones is essentially the result of Fourier transforming any period signal - it is pure mathematics.
01:09:01 <oerjan> 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:16 <oklopol> that's what i was trying to say earlier
01:09:54 <oklopol> 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 <SevenInchBread> yes, unsurprisingly, the mathematics behind music is pure mathematics... however there's obviously something missing from a mathematical model.
01:10:18 <oklopol> there is a lot missing from it
01:10:37 <oklopol> there is no mathematics behind music yet, i mean no popular theories
01:10:41 -!- crathman has quit (Connection reset by peer).
01:10:55 -!- crathman__ has joined.
01:10:57 -!- crathman__ has changed nick to crathman.
01:10:59 <oklopol> there is wave theory but that's trivial
01:11:35 <oklopol> anyways, functions can't represent waves that well
01:11:44 <oklopol> i have a brilliant idea for the music lang
01:11:53 <oklopol> but it's not in it's final form yet
01:12:02 <oklopol> and requires some learning
01:12:15 <oerjan> heh the earlier mention of list slicing syntax:
01:12:31 <oklopol> it's basically you can use a function as a list of all it's values... but a bit different
01:12:47 <SevenInchBread> 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 <oerjan> You _could_ do map (list !!) [10..20] in Haskell, but it would be horribly inefficient.
01:12:54 <oklopol> makes certain things handy... i wish i had more time :\
01:13:14 <oklopol> SevenInchBread yeah, it's kinda like that
01:13:24 <oklopol> you do a continuation for the wave
01:13:29 <oklopol> then generalize it into a note
01:13:46 <oklopol> since these things are always used the same way i'll insert them into the language
01:14:12 <SevenInchBread> 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 <oklopol> if you know the language well, it's a perfect composition tool assuming i get the playing without wav files working
01:14:30 <SevenInchBread> so you feed values into the coroutine to create that change.
01:14:38 <oklopol> but you can also play with harmonics etc easily
01:14:59 <oklopol> that's basically what i'll insert into the language
01:15:14 <oklopol> you have maths for sine wave so that basically you only change the derivative
01:15:27 <oklopol> as if you were just calcing more values to a list
01:15:45 <oklopol> it's all calculated to a simple sine function that just changes over time
01:16:13 <oklopol> i don't know if that makes sence, i'm not good at explaining my thoughts
01:17:05 <SevenInchBread> and to handle the addition we shall isntantiate WaveHandlerHandlers.
01:17:23 <oklopol> you know the bad thing is you have to understand math to make a wave gradually decrease in pinch
01:17:40 <oklopol> but with changing the derivative only it's a trivial mental task
01:18:21 <oklopol> i'd need paper at this point...
01:18:47 <oklopol> 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:35 <oklopol> it needs no language support
01:20:02 <oklopol> that you can do with power or 1/x
01:20:26 <oklopol> changing pitch at a rapid rate on the other hand is complicated
01:20:42 <oklopol> and i have _some_ methods of making it easy to do
01:21:06 <oklopol> i'm saying it is complex to make pitch change over time
01:21:15 <SevenInchBread> well... lets's figure out why the change in pitch occurs.
01:21:20 <oklopol> amplitude is of course not
01:21:51 <oklopol> ...because the programmer wants it to?
01:22:24 <SevenInchBread> I think you could use a combination of math and some randomality to make it sound more natural.
01:22:44 <oklopol> yes, randomality is another thing of complexity
01:22:53 <SevenInchBread> 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 <SevenInchBread> the best way is to simply look at some waves in action. :)
01:23:33 <oklopol> 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 <oklopol> well, you can deduce the math for changing pitch on the fly
01:24:39 <oklopol> i've been designing this 2d-music generator where you make blocks more in patterns you specify
01:25:07 <SevenInchBread> depending on the instrument... and how you transition between notes.
01:25:08 <oklopol> and little circles bounce around making waves that - when hit the ceiling - produce sound
01:25:16 <SevenInchBread> there's going to be some interplay of multiple pitches going on
01:25:28 <oklopol> yes, as oerjan said earlier
01:27:11 <oklopol> you mean when changing pitch?
01:27:24 <SevenInchBread> hmmm... I bet Erland would be good for this kind of job...
01:28:41 <oklopol> 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 <SevenInchBread> 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:09 <oklopol> pitch n = 440 * (2^(n/12)), where n is the distance between "a" and the wanted note in half-steps
01:30:36 <SevenInchBread> assuming we're on guitar... the pitches would change in stair-case like manner...
01:32:15 <SevenInchBread> when you slide across the strings really fast.. it makes a shrill little screech.
01:32:30 <oklopol> that i'm not familiar with
01:32:47 <oklopol> that's not really a guitar thing... random noise
01:33:03 <oklopol> you could implement smashing the quitar then as well :P
01:33:37 <SevenInchBread> 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:34:14 <SevenInchBread> 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:49 <oklopol> well, i don't care about real life
01:35:14 <oklopol> it does not have to sound like a guitar if you ask me
01:56:18 -!- ihope has joined.
02:19:20 <ihope> Stop using the calendar as toilet paper.
02:19:38 <oerjan> and stay away from fans.
02:20:12 <ihope> Especially if you're in North Korea.
02:22:39 <ihope> Anyway, about those ordinal numbers...
02:26:48 <ihope> Well, grok them yet?
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:54:37 <oerjan> alternatively, \g.SII(\f.g (f f))
04:08:14 -!- ooooo has quit (Nick collision from services.).
04:15:02 <bsmntbombdood> !bf ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
04:15:29 <oerjan> 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 <GreaseMonkey> Uryyb rirelbar! V whfg znqr n EBG13 rapbqre/qrpbqre :Q
08:02:30 <GreaseMonkey> man ROT13 is fun once you have a decoder/encoder
08:03:03 <wooby> :Q is a funny emote
08:03:27 <wooby> person holding magnifying glass to mouth / person smoking
08:03:28 -!- puzzlet has joined.
08:07:01 <GreaseMonkey> http://pastebin.ca/363217 <-- my encoder/decoder
08:09:53 <GreaseMonkey> 29 lines of C code. converts fast apart from the console routines
08:11:07 <wooby> GreaseMonkey: nice
08:11:11 <wooby> i shall attempt a shorter one :)
08:11:16 <GreaseMonkey> oh, and btw, i managed to beat hackthissite.org's permanent programming challenge
08:11:49 <GreaseMonkey> excluding includes and blank lines, 25 lines of code.
08:15:36 <GreaseMonkey> 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:22:14 -!- nazgjunk has joined.
08:22:17 -!- nooga has joined.
08:23:32 <nooga> Zmglvgs bvvamgrt ;p
08:28:33 -!- puzzlet has quit (Read error: 104 (Connection reset by peer)).
08:28:51 -!- puzzlet has joined.
08:49:28 <wooby> http://pastebin.ca/363277
08:53:13 -!- GreaseMonkey has quit (Read error: 110 (Connection timed out)).
09:01:31 <wooby> an attempt without a lookup table
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:22 <wooby> 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 <Keymaker> 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 <Keymaker> http://koti.mbnet.fi/yiap/programs/miscellaneous/SUM.PRM
13:41:23 <Keymaker> 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 <oklofok> nooga, finally, i made the quicksort
13:44:48 <oklofok> 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 <Keymaker> 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 <Keymaker> 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: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:35:46 -!- FabioNET has quit (Remote closed the connection).
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").
21:08:35 -!- kxspxr has joined.
21:12:42 <SevenInchBread> pfft... if he weren't writing it in C he would have saved some time. :P
21:22:19 -!- UpTheDownstair has changed nick to nazgjunk.
21:23:28 <bsmntbombdood> for i in range(500): print "I will not throw paper airplanes in class"
21:25:02 <voodooattack> for i as integer = 0 to 500:print "I will not throw paper airplanes in class":next
21:26:25 <SevenInchBread> print "I will not throw paper airplanes in class" * 500
21:26:29 <SevenInchBread> print "I will not throw paper airplanes in class\n" * 500
21:27:27 <SevenInchBread> hurray for string multiplication and its aid to spammers worldwide.
21:27:45 <bsmntbombdood> ~exec sys.stdout("I will not throw paper airplanes in class\n" * 3)
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:27:47 <bsmnt_bot> I will not throw paper airplanes in class
21:29:03 <voodooattack> do:var i=0:print "I will not throw paper airplanes in class":i+=1:loop while i<500
21:30:13 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c3206c>
21:30:57 <bsmnt_bot> ['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 <bsmnt_bot> ort', 'print_callbacks', 'raw', 'raw_regex_queue', 'readbuffer', 'realname', 'register_raw', 'save_callbacks', 'socket', 'sockfile', 'verbose']
21:33:01 -!- bsmnt_bot has quit.
21:33:05 -!- bsmnt_bot has joined.
21:33:13 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~quit ?(.*)', 'do_quit'),
21:33:13 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~raw (.*)', 'do_raw'),
21:33:13 <bsmnt_bot> ('^\\S+ PRIVMSG \\S+ :~ctcp (\\S+) (.+)', 'do_ctcp'),
21:33:14 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG (\\S*) :~pexec (.*)', 'do_exec'),
21:33:15 <bsmnt_bot> ('\\S+ PRIVMSG (#esoteric|#baadf00d|#bsmnt_bot_errors) :~exec (.*)',
21:33:17 <bsmnt_bot> ('\\S+ PRIVMSG \\S+ :~ps', 'do_ps'),
21:33:19 <bsmnt_bot> ('^:bsmntbombdood!\\S*gavin@\\S* PRIVMSG \\S* :~kill (.*)', 'do_kill'),
21:33:21 <bsmnt_bot> ('^ERROR :Closing Link:.*', '<lambda>')]
21:38:24 <SevenInchBread> ~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 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:39:39 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:40:27 <SevenInchBread> bsmntboobdood, your hackish thread thing doesn't update the global scope.
21:40:52 <SevenInchBread> or... for that matter... it's making closures mess up.
21:42:12 <SevenInchBread> ~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 <SevenInchBread> ~exec sys.stdout.write(self.AAAAAAAAA("bsmnt is a terrible bucket cleaner!?"))
21:42:52 <SevenInchBread> ~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 <SevenInchBread> ~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 <bsmntbombdood> ~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:49:07 -!- bsmnt_bot has quit (Excess Flood).
21:49:10 -!- bsmnt_bot has joined.
21:55:28 -!- bsmnt_bot has quit (Excess Flood).
21:55:30 -!- bsmnt_bot has joined.
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 <GregorR> Y'know what would be awesome?
23:42:54 <GregorR> Pneumatic AND/OR gates are possible, right?
00:11:34 -!- sebbu2 has quit ("@+").
00:55:15 <oklopol> i made bf with wav output :P
01:29:03 <SevenInchBread> hmmm... it's odd how different my mindset was before I started programming.
01:42:14 -!- oerjan has joined.
01:53:54 -!- ShadowHntr has joined.
02:05:05 -!- kxspxr has quit.
02:50:06 <SevenInchBread> bsmnt so why doesn't the normal mode of execution simply go to the "globals"?
02:52:03 <oerjan> doesn't exec take two environment arguments, one for the globals and one for the locals? So you could have both.
02:52:35 <bsmntbombdood> but if you say something like "x=2", x goes in the locals
02:52:40 <SevenInchBread> it's neither local nor global... it's whatever you decide to put it in.
02:53:00 <SevenInchBread> in my opinion it would be more convient to simply (and more intuitive) to treat everything as globals..
02:54:08 <oerjan> but then you couldn't do tricks like ihope's extra bot inside the bot
02:54:22 <SevenInchBread> it doesn't make any sense to, nor is it even useful to, by default, bind variables to a temporary local scope.
02:54:51 <bsmntbombdood> I could copy the globals dict, then add the need locals into i
02:55:52 <oerjan> but if self is global you cannot have two bots!
02:56:08 <bsmnt_bot> {'command': 'pprint.pprint(locals(), sys.stdout)',
02:56:08 <bsmnt_bot> 'message': ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout)',
02:56:08 <bsmnt_bot> 'r': <_sre.SRE_Match object at 0xb7c55cc8>,
02:56:08 <bsmnt_bot> 'self': <__main__.IRCbot instance at 0xb7c4208c>}
02:56:46 <oerjan> threading would mess up horribly then, wouldn't it? or do threads have different global directories?
02:57:37 <oerjan> so it doesn't work, because multiple execs run in separate threads.
02:57:50 <oerjan> and they might need different selfs.
02:58:05 <oerjan> it doesn't work to make self global.
02:58:27 -!- bsmnt_bot has quit.
02:58:29 -!- bsmnt_bot has joined.
02:58:36 <SevenInchBread> it would work... if each bot were a different process.
03:00:19 <bsmnt_bot> <__main__.IRCbot instance at 0xb7bd508c>
03:00:40 <bsmntbombdood> it looks like it generates an empty local scope if you dont' give it one
03:01:14 <oerjan> hm... can you pass it globals(), globals() ?
03:01:55 -!- bsmnt_bot has quit (Client Quit).
03:01:57 -!- bsmnt_bot has joined.
03:02:08 <SevenInchBread> that would make global declarations act screwy though...
03:03:07 <bsmntbombdood> but without making a copy, I can't put self into it
03:03:53 -!- bsmnt_bot has quit (Client Quit).
03:03:56 -!- bsmnt_bot has joined.
03:03:56 <oerjan> Sheesh. Rewrite the bot in Erlang or something :)
03:05:00 <oerjan> and self must not be shared.
03:05:10 <SevenInchBread> if you rewrite self each time... it effectively doesn't matter.
03:05:28 <oerjan> execs can run simultaneously
03:05:38 <bsmntbombdood> all the execs running use the last exec executed's self
03:05:41 <oerjan> and will, if some are long-running computations
03:06:14 <oerjan> What, sane persons, in #esoteric? Perish the thought.
03:07:47 <oerjan> i thought that was the way it was working already
03:07:56 <SevenInchBread> a global declaration in this case means "all bots can share"
03:08:10 <SevenInchBread> locals are basically just discarded after a thread is executed.
03:08:52 -!- bsmnt_bot has quit (Client Quit).
03:08:55 -!- bsmnt_bot has joined.
03:09:39 <bsmnt_bot> {'x': 12, 'self': <__main__.IRCbot instance at 0xb7c0008c>}
03:09:43 <oerjan> eh, wait, are you making the local directory persistent?
03:11:09 <SevenInchBread> makes managing scopes between bots far less of a pain in the long run.
03:11:31 <bsmntbombdood> might delay updates to the dictionary untill finished executing
03:12:26 <SevenInchBread> so two processes on the same thread don't like... murder each other.
03:13:04 <oerjan> what is wrong with the old idea that execs that wanted persistence add attributes to self?
03:13:08 <SevenInchBread> basically... python's scoping makes inter-process memory weird.
03:14:16 <SevenInchBread> well.. the problem with that is that functions defined on self don't have the closure of their local scope.
03:15:17 <bsmntbombdood> <bsmnt_bot> NameError: global name 'self' is not defined
03:15:31 <oerjan> i thought the expected behavior in Python is that scope hardly makes sense ;)
03:15:57 <SevenInchBread> eh... scope makes sense in Python... to me anyways... but that's because I've been using it... a lot.
03:17:16 <SevenInchBread> and a closure is just an encapsulation of the globals() at the time of definition.
03:17:55 <SevenInchBread> 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:20:45 <SevenInchBread> I think it would be cool if python.exe could take URLs as pathnames.
03:29:47 * oerjan suddenly has a realization: mime types cannot possibly handle sound data.
03:37:22 <bsmntbombdood> oerjan: this configuration is equivalent to adding attributes to self
03:38:49 <oerjan> but what if an exec needs private local variables?
03:39:57 <SevenInchBread> now you're just moving the namespace to self.__dict__... when you could easily just keep a special self.localnamespace dictionary.
03:40:28 <SevenInchBread> Python's scoping is very good for handling three scopes (a thread scope, a bot scope, and an all-bot scope)
03:41:24 <SevenInchBread> Python basically just recognizes two scopes... I kind of wish it could use a list of scopes.
03:44:06 <lament> SevenInchBread: you do realize you're completely wrong, right?
03:49:44 <SevenInchBread> that's a closure... either way... a Python variable still only have two scopes it can be found in.
03:49:52 <lament> i see a bunch of scopes here.
03:50:09 <lament> 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:51:17 <lament> to look up x from baz, we check baz, then bar, then foo.
03:51:40 <SevenInchBread> no... we check the functions closure... which is one namespace.
03:51:55 <SevenInchBread> it doesn't "slide upwards"... although that's the effect given.
03:57:20 <SevenInchBread> I take that back... functions have -three- namespaces.
04:01:02 -!- bsmnt_bot has quit (SendQ exceeded).
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 <oerjan> xor: Do you know that the xor operation can be defined on ordinal numbers? ;)
04:32:54 <xor> I wonder if there's a way to find xors non-bitwisely
04:33:28 <oerjan> Xor is "nimber" addition, and nimbers can be identified with ordinals.
04:34:11 <xor> I know i^j = (j & i) - (j | i)
04:34:14 <oerjan> Alas, it also boils down to ordinals having base 2 representations.
04:34:49 <oerjan> Any base too... the omega base was the one previously mentioned as "Cantor normal form"
04:35:32 <oerjan> You mean i^j = (j | i) - (j & i)
04:36:15 <oerjan> And that works because the bits in the second part are all set in the first, so - requires no borrow and becomes bitwise.
04:39:17 <oerjan> Basically if you have three heaps, of size x, y and z, then the first player loses iff x == y ^ z.
04:39:49 <oerjan> Which is equivalent to x ^ y ^ z == 0
04:40:33 <oerjan> It may not be practical, but there is no mention of bits in it :)
04:41:28 <oerjan> (Assuming both players play perfectly, as usual in mathematical game theory.)
04:42:18 <oerjan> And relax, ordinals are not mentioned either unless your heaps are infinite.
04:42:34 <xor> i don't get it
04:42:53 <xor> each turn you add one to a heap?
04:43:24 <oerjan> No, each turn the player takes as many iterms as he wishes from one heap.
04:45:36 <oerjan> It turns out there is a large class of games that can all be reduced to Nim and assigned nimbers to their positions.
04:47:24 <oerjan> 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 <oerjan> In addition, all games must end.
04:48:40 <oerjan> (Well-foundedness, through which the ordinals creep in if you have infinitely many positions)
04:49:55 <oerjan> 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 <oerjan> *natural = ordinal, if games are infinite.
04:51:04 <oerjan> Oh, and one final property, the first player who cannot make a move loses.
04:51:14 <oerjan> And there are two players.
04:52:00 <oerjan> For Nim, the nimber of a single heap is its number of items, naturally.
04:52:27 <oerjan> For several heaps you can prove that it is the xor of the heap sizes.
04:53:40 <oerjan> 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 <nooga> about that: http://fukung.net/v/720/school.gif
08:20:39 <nooga> 500.times {print "yadda yadda"}
08:24:30 -!- oklobot has joined.
08:24:52 <oklopol> !exec 500["yadda yadda"PrntNlDrp1SubDbl]
08:25:10 -!- oklobot has quit (Read error: 104 (Connection reset by peer)).
08:28:21 <nooga> but in ruby it's more elegant :>
08:29:10 <nooga> !*",211yadda yadda,3500
08:29:23 <nooga> !sadol !*",211yadda yadda,3500
08:29:25 <EgoBot> BDSM: Invalid argument types for '*': string, integer (index: 1, row: 1, col: 2)
08:29:34 <nooga> old interpreter ;p
08:30:05 -!- GreaseMonkey has quit ("gnight").
08:30:21 <oklopol> i added that to oklobot quite late to
08:30:47 <oklopol> it's still not turing complete :P
08:31:12 <oklopol> nooga i have a lot shorter quicksort than the page
08:31:38 <oklopol> i'll search... no idea where it is
08:33:01 <oklopol> okay... was in a folder named posakdif
08:35:13 -!- Sgeo has quit (Remote closed the connection).
08:36:18 <oklopol> http://www.pastebin.ca/364621
08:37:05 <oklopol> i had a lot shoter one than that... put i did some very strange things
08:37:11 <oklopol> and it failed from time to time
08:37:37 <nooga> but you must admit that reversed quine is genious
08:37:43 <oklopol> something like using then same operator many times...
08:38:04 <nooga> (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:48 <oklopol> 7( in the end... eof can be there?
08:39:07 <nooga> it's within a string
08:40:09 <oklopol> hard to say, i can't read that anymore
08:40:25 <nooga> need to make indents
08:40:59 <nooga> in that quine, to see the structure
08:41:30 <oklopol> haven't played with sadol after you were here last
08:42:25 <nooga> well.. bbl, classes start in 10 mins
08:43:20 <nooga> http://esolangs.org/wiki/SADOL here's the cheat sheet
08:49:39 <oklopol> i just came up with trecursion :)
08:50:23 <oklopol> 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:43 -!- oklofok has changed nick to oklopol.
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 <ais523> I was impressed with Keymaker's Underload interpreter in Brainfuck
11:16:56 <ais523> so I wrote a Brainfuck (minus input) to Underload compiler: http://pastebin.ca/364737
11:21:21 <EgoBot> Use: daemon <daemon> <daemon-command> Function: start a daemon process.
11:21:48 <ais523> !daemon ul bf http://www.bf-hacks.org/hacks/uload.b
11:23:39 <EgoBot> To use an interpreter: <interpreter> <program> Note: <program> can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem.
11:24:26 <ais523> !daemon ul bf http://www.bf-hacks.org/hacks/uload.b
11:24:38 <oklopol> "<program> can be the actual program" means you can write the binary there i assume?
11:24:55 <ais523> You can write the source code straight in, like this:
11:25:04 <ais523> !bf +++++++++++++++++++++++++++++++++++.+.+.+.+.
11:25:27 <ais523> but for some reason, daemoning the Underload compiler doesn't seem to take
11:25:28 <oklopol> i reada quickly, though program meant the interpreter
11:25:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
11:25:40 <EgoBot> 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 <ais523> !daemon ul bf8 http://www.bf-hacks.org/hacks/uload.b
11:27:49 <ais523> !daemon dup bf >+[>,]<[<]>[>.]<[<]>[>.]
11:28:26 <ais523> That's strange, there's no output but there isn't an error message either.
11:28:35 <ais523> !this makes no sense and should cause an error message
11:29:55 <ais523> !daemon dup bf >++++++++++++++++++++++++++++++++[>,----------]<[<]>[++++++++++.>]<[<]>[>.]
11:30:08 <EgoBot> *Hello, world!Hello, world!
11:30:42 <ais523> The problem seems to be that EgoBot is interpreting newline as newline (10), not EOF
11:31:40 <ais523> There are still two broken daemons lying around, it seems
11:32:00 <EgoBot> Use: eof <pid> Function: send EOF to a process
11:32:22 <ais523> !bf http://www.bf-hacks.org/hacks/uload.b
11:34:28 <EgoBot> Use: usertrig <command> <trig-command> Function: manage user triggers. <command> may be add, del, list or show.
11:35:50 <EgoBot> 45 +++++++++[>+++++>++++++++++>><<<<-]>--.>+.++. [473]
11:36:21 <ais523> I'm sure that >><< bit can be shortened
11:40:54 <ais523> !bf http://www.bf-hacks.org/hacks/uload.b
11:42:09 <ais523> Underload is a good language for writing quines in
11:43:10 <oklopol> StringIO's eof check in python?
11:45:28 <ais523> 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:37:02 <oklopol> can i reach a var of the parent functions in a subfunction
12:38:52 <oklopol> hmm... globals might be the answer, can a global be global in a function?
12:43:24 <oklopol> i feel leetish when i write an interpreter and then close python without saving :)
12:43:42 <oklopol> "lol i can rewrite this in 5 min"
12:54:32 -!- helios24 has joined.
12:54:46 <oklopol> python 2.5 won't work... something about a refused connection...
12:57:46 <oklopol> is there True?true_stuph:false_stuph in python?
12:57:54 <oklopol> cond?true_stuph:false_stuph in python?
12:58:39 <oklopol> python 2.5 works fine until i click ok on these all-ways-on-to error messages
12:59:21 <ais523> ~exec sys.stdout(true?"True":"False")
12:59:37 <ais523> seems as though Python doesn't have a ?: operator
12:59:52 <ais523> ~exec sys.stdout("The previous line would have worked if I had a ?: operator")
12:59:52 <bsmnt_bot> The previous line would have worked if I had a ?: operator
13:01:49 <oklopol> ~exec sys.stdout(True?"True":"False")
13:02:08 <oklopol> ~exec sys.stdout(("True" if True else "False"))
13:02:33 <oklopol> ~exec sys.stdout((if True then "True" else "False"))
13:03:19 <oklopol> ~exec sys.stdout((["True" for i in [True] if i]+["False"])[0])
13:03:27 <oklopol> ~exec sys.stdout((["True" for i in [False] if i]+["False"])[0])
13:07:55 <oklopol> def cond_to_for(cond,true,false):
13:07:56 <oklopol> ([true for i in [cond] if i]+[false])[0]
13:08:03 <oklopol> i don't know how to use exec it seems
13:16:34 <oklopol> http://www.pastebin.ca/364857
13:16:46 <oklopol> i have some serious mental problems :<
13:16:54 <oklopol> exec... wtf, this is metaproggin
13:17:44 -!- helios24 has quit ("Leaving").
13:39:17 -!- jix has joined.
13:39:20 <oklopol> (23)+(23,6424)+(23534,653) -> (23,23,6424,23534,653) <<<<<< how is that done?
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.
14:03:33 <oklopol> is there something like StringIO in haskell?
14:03:40 <oklopol> it would be a cheat of course
14:03:49 <oklopol> but i suppose you have one anyway
14:04:07 <oklopol> python's StringIO, the one bsmntbombdood used
14:18:02 -!- helios24 has quit (Remote closed the connection).
14:22:23 -!- tgwizard has joined.
14:24:37 <nooga> http://strlen.com/aardappel/index.html this might be interesting
14:25:08 -!- helios24 has joined.
14:26:28 <nooga> yeah, but false is not as good as sadol :d
14:29:38 <nooga> what really lacks in sadol is classic higher order functions
14:30:30 <nooga> sadol is completely functional but not in the normal wa
14:32:41 <nooga> 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:43:25 -!- oklofok has changed nick to oklopol.
14:43:48 <nooga> once i had an idea to write simple lisp interpreter in SADOL
14:45:31 <oklopol> we all snap from time to tim
14:46:54 <nooga> and even not so hard
14:47:19 <nooga> but it requires enormous amoun of time I don't have
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 <SimonRC> My compiler lecturer is a bastard.
16:26:16 <SimonRC> 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 <GregorR> SimonRC: He's really just a programmer using a class of students to cheat for his company :P
16:35:05 <oklopol> SimonRC that sounds fun imo
16:35:32 <GregorR> That sounds like quite possibly the least fun thing imaginable.
16:36:12 <GregorR> "Tedius" would be a better word.
16:37:25 <oklopol> well, if you do it manually
16:37:40 <oklopol> i assume it's a metaprogramming task
16:45:45 <SimonRC> Ah, I forgot to mention...
16:46:06 <SimonRC> http://www.boundvariable.org/um-spec.txt
16:46:36 <SimonRC> 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:31 -!- oklofok has changed nick to oklopol.
16:52:05 <oklopol> my project in the uni is to create a jave class that can randomize a poker hand and check for straight and flush...
16:53:23 <oklopol> 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:44 <oklopol> actually, the example documentation is 15 pages
16:55:05 <SimonRC> The assignment is supposed to be about 10h work.
16:56:23 <oklopol> 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:42:54 <ais523> I'll have to complain again about a lack of context, after reading the previous two lines and today's logs
18:47:52 <ais523> !bf http://www.bf-hacks.org/hacks/uload.b
18:48:21 <ais523> !i 1 (:*)(:::::::*******)^(*)~^S
18:48:25 <EgoBot> ****************************************************************************************************************************************************************************************************************************************************************
18:53:14 -!- sp3tt has quit (Read error: 54 (Connection reset by peer)).
18:55:52 <ais523> I was getting EgoBot to run Underload
18:56:11 * GregorR doesn't know what underload is ^^
18:56:23 <ais523> http://esolangs.org/wiki/Underload
18:56:58 <ais523> I can't daemon Keymaker's interpreter, though, because it expects EOF at the end of the program rather than newline
18:57:36 <GregorR> It could be modified ... but BF is sort of write-only coding ^^
18:58:18 <ais523> 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 <ais523> 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 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
19:04:00 -!- sp3tt has quit (Read error: 104 (Connection reset by peer)).
19:04:21 <GregorR> OK, so it closes after receiving one line ;)
19:04:25 <ais523> The modified version ends after it runs one program, though
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 <SimonRC> exercise: write a turing-machine evaluator in the lambda calculus.
23:15:50 <SimonRC> evil exercise: write a lambda-calculus evaluator for the turing machine
23:16:42 * xor just wrote a ski calculus interpreter
23:19:01 <xor> unparse(simp(parse("```S`KKIx"))) ==> "`Kx"
23:22:35 -!- tgwizard has quit (Remote closed the connection).
23:22:45 <xor> unparse(simp(parse("```S``SI`KS`KKx"))) ==> "``xSK"
23:25:19 -!- SevenInchBread has joined.
23:25:37 * oklopol leaves feeling embarrassed -->
23:27:18 <SevenInchBread> It's basically a binary tree of arrays of characters (a tree of strings).
23:28:21 <SevenInchBread> so to concatenate ropes you just make a new node, with the two ropes being the branches.
23:32:26 <SevenInchBread> IT apparently makes concatenation operations faster... at the expense of a few extra chunks of memory lying around.
23:36:56 <xor> I wonder how to make it reduce things like S(KK)I automatically
23:37:30 <xor> (using extensionality)
23:38:36 <SevenInchBread> 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 <xor> concantenation of strings is only O(n)
23:40:27 <SevenInchBread> 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.
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:21:58 <GregorR> 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 <bsmntbombdood> supercoolness: http://bsmntbombdood.mooo.com/ski_repl.py
04:32:29 <GregorR> I want to make a pneumatic computer.
04:32:52 <GregorR> Make it base-6 so it can be a sextit.
04:33:26 <SevenInchBread> I was going for base-5 because of The Law of Fives... but base-6 would actually have the digit 5 in it.
04:34:05 <SevenInchBread> http://en.wikipedia.org/wiki/Discordianism#The_Law_of_Fives
04:36:42 <SevenInchBread> 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 <SevenInchBread> base-3 is actually fairly feasible... -1, 0, 1 corresponding to the polarity of the volts.
04:48:39 <SevenInchBread> hmm... but you can't reliably represent 5 states with a typical transistor can you?
04:58:50 -!- GreaseMonkey has quit ("gtg").
05:08:04 <SevenInchBread> 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 <SevenInchBread> hmmm... are there any analog computers out there that use sound as their medium?
05:36:23 <SevenInchBread> I'd imagine it would make quite a bit of racket... unless you keep it out of the range of human hearing.
05:36:41 <GregorR> Same as the point of a pneumatic computer.
05:36:48 <GregorR> It's pure, unadulterated awesomeness.
05:37:10 <SevenInchBread> hmmmm.. well sound is kind of like pneumatic... but with totally different processes.
05:37:21 <SevenInchBread> vibrating air... air pressure... totally different things.
05:39:11 <SevenInchBread> with some hydraulic stuff thrown in just for the awesomeness of sloshing sounds (and a water fountain as an output device)
05:56:16 <SevenInchBread> 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 <Sukoshi> 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:18:14 <GregorR> ... regardless of breaking or anything else, a switch is one jump.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:06:56 <SevenInchBread> should esoos ever become complete... it needs an OS-tan.
08:07:26 <GregorR> And even if it doesn't :-P
08:08:56 -!- ShadowHntr has joined.
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.
15:30:09 -!- crathman has joined.
15:59:02 -!- goban has quit (Read error: 110 (Connection timed out)).
16:07:10 -!- oerjan has joined.
16:14:28 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]").
16:16:39 <nooga> have you invented something new?
16:17:30 <oerjan> i have mostly designed a Malbolge dialect which I am calling "Malbolge Unshackled"
16:18:03 <oerjan> the implementation is far from ready though.
16:18:17 <nooga> what about the spec?
16:18:23 <oerjan> basically, i was thinking how to make Malbolge Turing complete
16:18:34 <oerjan> still only in my head.
16:18:43 <oerjan> by removing size limits
16:19:08 <oerjan> for Malbolge, this has various problems.
16:21:12 <oerjan> 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 <oerjan> 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 <oerjan> (Since op(0,0) == 1 on trits, this is necessary to make the definition independent of tritwidth)
16:24:03 <oerjan> but rotation is more awkward.
16:24:55 <oerjan> because what should happen to the trit that is shifted off rightward?
16:25:56 <oerjan> rotation is the only way in Malbolge to create values larger in width than those you already have, an essential for Turing completeness.
16:50:29 <oerjan> oklofok: What is StringIO?
16:54:37 <oerjan> sounds like the Writer monad.
17:05:32 <oerjan> but doing it properly is hard without duck typing, i guess.
17:07:30 <oerjan> 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: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 <oklofok> oerjan bsmntbombdood used it in his *ii -parser
20:08:27 -!- oklofok has changed nick to oklopol.
20:11:23 <oerjan> iota = (char 'i' >> I) <|> (char '*' >> liftM2 App iota iota)
20:11:54 <oerjan> data Iota = I | App Iota Iota
20:12:27 <oerjan> import Text.ParserCombinators.Parsec
20:12:40 <oerjan> except the import has to be first.
20:12:53 -!- n[a]zgjunk has changed nick to nazgjunk.
20:13:38 <oerjan> eh, that I should be return I
20:15:08 <oerjan> * is application isn't it?
20:16:13 <oerjan> it's defined in the data statement.
20:17:02 <oklopol> i'm not that familiar with haskell's type system :D
20:17:44 <oerjan> well it's a kickass type system
20:18:40 <oerjan> it defines a type Iota with two constructors I and App, the last of which takes two arguments.
20:19:31 <oerjan> both themselves of type Iota.
20:21:32 <oklopol> 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:22:23 -!- sebbu has joined.
20:22:31 <oklopol> i just don't like erasing stuff i've already written
20:23:23 <oerjan> maybe add S and K to the type, then you can use the equations on the wiki page.
20:24:09 <oerjan> step (App I x) = App (App x S) K
20:24:55 <oklopol> i don't know how iota works
20:24:58 <oerjan> step (App (App K x) y) = x
20:25:35 <oerjan> step (App (App (App S x) y) z) = App (App x z) (App y z)
20:25:49 <oerjan> well S and K are the usual combinators.
20:27:05 <oerjan> step (App x y) = App (step x) y
20:30:46 <oerjan> That step definition will loop once the expression is in head normal form, however, which may not be quite what you want.
20:32:25 <oerjan> But anyhow, something like this and a couple of lines more should give an entire Iota interpreter.
20:39:53 <GregorR> 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:33:41 <GregorR> bsmntbombdood: An email I sent today :P
22:42:16 <lament> to twonge or not to twonge?
22:43:00 <GregorR> 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:44:33 <GregorR> OK, I think we're done with the word "twonge" X_X
22:45:10 <SevenInchBread> 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:49:15 * oklopol 's been reading http://strlen.com/files/lang/aardappel/thesis.pdf
23:13:22 <Sukoshi> Ah... sounds ... engaging?
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.
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:26:32 -!- wooby has quit (Client Quit).
01:26:38 -!- wooby has joined.
01:49:31 -!- Sgeo has joined.
02:25:49 <bsmntbombdood> 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 <SevenInchBread> It's like... a huge concurrent PATH-like language with coroutines and support for files and sockets.
02:29:03 <SevenInchBread> 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.
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:11:21 <SevenInchBread> It's funny to note that unihan probably takes up less storage space than latin text.
04:11:58 <SevenInchBread> 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:34:33 -!- oerjan has joined.
05:44:58 <oerjan> yeah, i eventually looked it up.
05:52:44 <oerjan> on second thought I saw a Stream module in Haskell that was quite similar to StringIO.
05:52:58 <voodooattack> damn.. i want one of these http://www.superssd.com/products/tera-ramsan/ :/
05:54:40 <oerjan> i think it used a type class for which strings and file handles were particular instances.
05:56:12 <oerjan> i guess that one wants to be accompanied by Intel's terachip :)
05:56:30 <oerjan> for full tera-coverage
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:34:47 <GregorR> That's almost /ignore-worthy.
07:39:40 -!- sebbu has joined.
07:44:38 <SevenInchBread> which is just like... Python stuff that turns around and does Tk/Tcl stuff
07:53:22 -!- ShadowHntr has joined.
07:53:35 <oerjan> Is it impolite to write an implementation of someone's language right after they have presented it?
07:54:22 <SevenInchBread> I'd love it if someone implemented all the languages I came up with it.
07:54:48 <oerjan> because i got this idea for how to implement V and started writing.
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.
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 <ais523> !bf http://bf-hacks.org/hacks/underload.b
15:44:45 <ais523> I must have got the wrong URL, so it interpreted it as -.
15:45:10 <ais523> !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 <ais523> err... what just happened?
15:46:30 <ais523> Maybe I should try a program slightly shorter than a kilobyte
15:47:41 <ais523> !i 1 http://pastebin.ca/raw/367737
15:48:18 <ais523> I suppose it might take a while to interpet what I've given it
15:49:07 <ais523> or maybe it was in an infinite loop due to trying to interpret the URL as a program
15:50:23 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
15:50:35 <ais523> !ul http://pastebin.ca/raw/367737
15:51:52 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
15:53:52 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
15:54:03 <ais523> !ul (/me is trying to send a message starting "/me")S
15:54:06 <EgoBot> /me is trying to send a message starting "/me"
15:54:17 <ais523> doesn't work with EgoBot, it seems
15:55:33 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
15:56:16 <ais523> !ul (~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170"))S
15:56:18 <EgoBot> ~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170")
15:56:19 <bsmnt_bot> !daemon ul bf http://pastebin.ca/raw/365170
15:57:14 <EgoBot> 1 bsmnt_bot: daemon ul bf
15:58:08 <SimonRC> I think you need to read about ACTION in the IRC RFC.
15:59:16 -!- oerjan has joined.
16:00:36 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
16:00:38 <EgoBot> 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:01:18 <ais523> !daemon ul bf http://pastebin.ca/raw/365170
16:01:28 <ais523> !ul (~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170"))S
16:01:30 <EgoBot> ~exec sys.stdout("!daemon ul bf http://pastebin.ca/raw/365170")
16:01:31 <bsmnt_bot> !daemon ul bf http://pastebin.ca/raw/365170
16:01:32 <oerjan> Still takes just one line before dying?
16:01:49 <ais523> I haven't got to modifying Keymaker's program any further
16:02:18 <ais523> 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 <oerjan> 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 <ais523> and I also have a gender-neutral name in RL, as it happens
16:07:50 <SimonRC> ais523: you appear to be in birmingham uni
16:09:00 <ais523> yes, I haven't hidden my IP
16:09:24 <SimonRC> I haven't even bothered hiding my name
16:15:06 -!- jix__ has changed nick to jix.
16:19:41 <ais523> !daemon ul bf http://pastebin.ca/raw/367770
16:21:12 <EgoBot> 1 bsmnt_bot: daemon ul bf
16:21:14 <EgoBot> 2 ais523: daemon ul bf
16:21:27 -!- pjd has quit.
16:21:35 <ais523> !daemon ul bf http://pastebin.ca/raw/367770
16:22:18 <ais523> The problem is that there isn't a final newline on the output
16:23:19 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:23:36 -!- goban has quit (Read error: 104 (Connection reset by peer)).
16:23:52 -!- goban has joined.
16:24:04 <ais523> This ought to work as long as nothing is left on the stack at the end of the program
16:27:42 <ais523> !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*):^
16:28:12 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:28:23 <ais523> !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^
16:28:31 <ais523> !ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^
16:28:34 <EgoBot> ~exec sys.stdout("!ul (a("!ul )~*(:^")*a(~exec sys.stdout)~*S):^")
16:29:08 <ais523> Python seems not to understand nested quotes, so this quine's going to take a bit of work
16:29:29 <ais523> but it's hard to see how any language could understand nested " as quotes
16:29:38 <ais523> that's why I like directed quotes
16:37:11 <tokigun> ais523, how about triple-quoted string? ("""xxx""")
16:37:33 <ais523> the problem is whatever delimiters are used outside the string will end up inside it
16:37:43 <ais523> due to the nature of this sort of quine
16:38:00 <oklopol> ais523 you making your first quine?
16:38:19 <tokigun> 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 <ais523> And as for directed quotes:
16:39:25 <oerjan> I.e. another word for parentheses :)
16:39:39 <ais523> Parentheses are used as directed quotes in Underload
16:39:45 <ais523> but Capuirequiem uses []
16:39:58 <ais523> and STATA (a nasty non-esoteric language) uses `" "'
16:40:02 <oerjan> I realized (and I think INTERCAL may use it) that alternating " and ' also allows for arbitrary deep nesting
16:40:22 <ais523> INTERCAL can do it even without alternating in most cases
16:40:32 <ais523> alternating is only necessary in tricky bits of array markup
16:41:05 <ais523> 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 <oklopol> ..translates c to intercal?
16:42:21 <ais523> translates INTERCAL to C
16:42:40 <oklopol> okay, i was very close to calling you a lier :)
16:42:42 <ais523> or to be precise, it translates a dialect of INTERCAL commonly also called C-INTERCAL to C
16:44:44 <ais523> http://esolangs.org/wiki/C-INTERCAL
16:45:36 <oerjan> hm... I did not quite remember the weirdness.
16:49:24 -!- goban has quit (Connection timed out).
16:49:38 <ais523> DO .1 <- ,3SUB",2SUB.1".2~.3"".4
16:50:05 <ais523> the entire statement could be parsed a different way up to the third double-quote
16:50:27 <ais523> 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 <ais523> 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 <ais523> !ul (()(*))()(~:^:S*a~^a~!~*~(/)S):::::*****^!!
16:58:31 <EgoBot> */*/**/***/*****/********/
16:58:56 <ais523> !ul (()(*))()(~:^:S*a~^a~!~*~(/)S)::::::::********^!!
16:58:59 <EgoBot> */*/**/***/*****/********/*************/*********************/**********************************/
16:59:32 <oklopol> !ul (Hello, world!)aaaaaaaaaaaaaaaaS
16:59:35 <EgoBot> ((((((((((((((((Hello, world!))))))))))))))))
17:00:26 <ais523> 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:01:48 <oklopol> i seem to remember the language pretty well
17:04:04 <oklopol> !ul (a)a*S <<< shouldn't this output aa or smth?
17:04:40 <ais523> 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:58 <oklopol> a == enclose, yeah, i failed
17:05:34 <oklopol> i figured that's the reason
17:05:52 <ais523> Yes. Underload is a subset of a much larger language that I haven't released yet
17:06:03 <ais523> because I haven't figured out the details
17:06:13 <ais523> '1' doesn't mean anything, so it's an error
17:06:21 <ais523> all strings have to be quoted in brackets
17:06:51 <ais523> What's surprising me at the moment is how errorproof the interpreter's being at the moment
17:07:03 <ais523> considering that it's written in Brainfuck and does no error checking
17:07:25 <ais523> It's Keymaker you'll have to thank for that, not me
17:07:34 <ais523> I just modified it for EgoBot use
17:07:40 -!- helios24 has quit ("Leaving").
17:07:54 <ais523> http://pastebin.ca/raw/367774
17:08:11 <ais523> based on the original http://www.bf-hacks.org/hacks/uload.b
17:08:54 <oklopol> hmm... why haven't i thought of []-comments
17:09:15 <ais523> !ul (This is a comment)!(Hello, world!)S
17:09:29 <ais523> You can create a comment by enclosing it in brackets and then throwing it away with !
17:09:45 <ais523> Oh, I see you were referring to BF's [] comments
17:10:06 * ais523 didn't think of them in an earlier revision, either, and added them for the latest version
17:10:27 <oklopol> i've always stripped my comment off bf commands
17:11:46 <oklopol> pretty omg our programming tasks, today i had to write a method for iteratively calculating list length on the whiteboard
17:13:58 <ais523> I have to write an interactive game of Snakes-and-Ladders over a network
17:14:17 <ais523> which is a bit confusing, as the players have no input into snakes-and-ladders anyway
17:17:36 <oklopol> i'm starting to learn towards functional languages nowadays
17:19:12 <oklopol> 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 <ais523> I tend to lean towards pure languages
17:19:47 <oklopol> c/c++ still makes me tick though... java not so much
17:20:06 <ais523> whether it's pure functional like Unlambda or pure procedural like C
17:20:36 <ais523> Java has a lot of annoying quirks
17:20:39 <oklopol> or purely imperative like brainfuck!
17:20:41 <oerjan> what about pure multiparadigm like Oz? :)
17:20:45 <ais523> such as having to use a file-system for quoting
17:21:06 <oerjan> (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 <ais523> By the way, Underload is a pretty pure concatenative language
17:26:51 <EgoBot> ais523 was wondering whether EgoBot responded to private messages
17:29:26 <SimonRC> ais523: BF is close to a Turing machine.
17:30:01 <ais523> with lots of states but a limit on which states can go where, and what each state can do
17:30:06 <ais523> and with only a semi-infinite tape
17:30:17 <ais523> and lots of possible symbols for each tape cell
17:31:23 <ais523> that's an illegal program in most BF implementations
17:31:34 <ais523> but Turing machine tapes are infinite both ways
17:31:42 <oklopol> that is not semi-infinite.
17:32:18 <oklopol> INF - 0 = INF, INF - (-INF) = 2INF = INF
17:32:36 <oklopol> it's just different, not semi-infinite
17:32:50 <ais523> Would you object to the term 'half-line' for a ray in geometry, which is quite common
17:33:06 <ais523> I suppose 'semi-infinite' means 'infinite half of two ways', or one way
17:33:22 <oklopol> 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 <ais523> You have a structure consisting of a binary tree and a linked list of binary trees?
17:38:51 <oerjan> well, i guess you could call it that. It's just a zipped binary tree.
17:39:16 <oerjan> of infinite height both ways.
17:39:54 <ais523> For Underload's superset language, Overload, I'm using a data structure which is effectively a doubly-linked binary tree
17:40:09 <ais523> analogous to a doubly-linked list
17:40:29 <SimonRC> ITYM "binary tree with upward links".
17:40:50 <ais523> Yes, except that I have to do some compression
17:40:57 <ais523> because the trees are also infinite
17:41:09 <lament> compression usually helps with infinite stuff.
17:41:53 <ais523> It's the only language I've ever come across where I had to optimize 99 bottles of beer
17:41:59 <ais523> to prevent the computer running out of memory
17:43:09 <SimonRC> 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 <ais523> All data types were equivalent
17:43:52 <SimonRC> like ([('x', "f(z)"), ('z', "g(x)")], id).
17:44:10 <SimonRC> ais523: corection: all data types of the same cardinality are equivalent.
17:44:13 <ais523> so the character '!' was equivalent to the number 34 (because it used incremented ASCII as a character set)
17:44:31 <SimonRC> and any data type of greater cardinality can emulate any one of lower cardinality.
17:44:49 <ais523> newline was 11 and space was 33
17:44:54 <ais523> so that EOF could be 0
17:46:14 <oklopol> oaky could be the name of a tree-based lang
17:46:18 <ais523> 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:59 <ais523> how does this tree-based language work, then?
17:47:38 <oklopol> i should really make a lang for every idea i get, since they kinda stack up
17:48:05 <ais523> Overload was invented as a language for writing esolang interpreters in
17:48:19 <ais523> You can compile both Unlambda and Befunge into it, I think
17:48:30 <ais523> and because I haven't finished the specification yet, I can just change it until you can
17:49:03 <oklopol> ah, a lang with self-modification and support for most esolang features
17:49:31 <ais523> The shortest possible quine, apart from the null quine, works by reading the program source and printing it out
17:49:39 <ais523> It's only three characters long
17:50:07 <oerjan> that's a cheating quine
17:50:44 <ais523> Shortest possible in the language
17:50:45 <lament> i thought Q was defined to not cheat :)
17:51:16 <ais523> just like X is defined to make the language Turing-complete
17:51:22 <oerjan> that would be rather hard to achieve.
17:51:43 <ais523> It wouldn't be the first time that an esolang was impossible to implement
17:51:45 <lament> heh, who came up with the X
17:52:00 <oerjan> i implemented it at least.
17:52:00 <ais523> IIRC Homespring had a clause to make it uninterpretable
17:52:11 <ais523> " . " was defined to cause a temporal paradox
17:52:41 <lament> oerjan: implemented X?
17:53:02 <ais523> I think his interpreter added a random number to each character of the program
17:53:05 <ais523> and then ran it as Perl
17:53:23 <lament> oh wow, somebody wrote a Fugue compiler
17:53:51 <ais523> 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 <ais523> It certainly compiled it into English well enough
17:54:15 <nooga> and i'm trying to design MACRO SADOL and then write a raytracer in it
17:54:18 <ais523> So I suppose it could be a Fugue to IRP compiler if needed
17:54:44 <ais523> I didn't write the compiler, just the only Fugue programs I've ever come across
17:55:21 <lament> oh wow, that's a nice hello world
17:55:28 <ais523> The Fugue compiler writer goes by the username of Mrosenau on the wiki
17:55:41 <lament> does it compile to Prelude?
17:56:22 <ais523> 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:58 <ais523> 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:52 <lament> strange, i remember putting example Prelude programs somewhere and now can't find them
17:59:16 <ais523> I wrote a BF-to-Prelude compiler: http://esolangs.org/files/prelude/util/bf2pre.c
17:59:29 <ais523> It was the first step in creating the Hello, World! program
18:01:15 <lament> i remember there was a fairly pretty fibonacci Prelude program using three voices...
18:02:26 <nooga> i wonder how it sounds
18:02:57 <lament> cause two voices is borign :)
18:03:41 <oklopol> what's the term for haskell 'f . g' or 'o' in math
18:04:20 <oklopol> is there a name for the actual sign? (composition fits though)
18:04:31 <oklopol> or is it the composition sign or smth
18:04:46 <oklopol> it's 'ball' in finnish :PP
18:04:53 <lament> http://en.wikipedia.org/wiki/Function_composition
18:05:13 <lament> http://en.wikipedia.org/wiki/Composition_operator
18:06:29 <ais523> because composing functions is the same as multiplying numbers:
18:06:53 <ais523> !ul (::**)(::**)*((+)S)~*^
18:07:04 <lament> Fugue needs a composition operator :)
18:07:28 <ais523> !ul (::**)(::**)*((+)S)~^^
18:08:26 <ais523> ::** is 3, so multiplying two of them gives 9 +'s
18:09:26 <ais523> Composition in Fugue would be like the CREATE operator in CLC-INTERCAL, though
18:09:49 <ais523> 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 <ais523> 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 <ais523> (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 <lament> eh, whatever the interpreter does
18:13:26 <lament> probably the top from the second since that would make sense
18:15:49 <lament> b = stacks[voice].pop()
18:15:49 <lament> a = stacks[voice].pop()
18:15:50 <lament> stacks[voice].push(a-b)
18:16:51 <SimonRC> nooga: a predecessor to V?
18:17:12 <lament> okay, i will update the specification and the wiki article
18:17:38 <ais523> http://esolangs.org/wiki/V
18:17:47 <oerjan> lament: Was that you redirecting your name to your user page on the wiki?
18:18:36 <lament> having two pages is bizarre
18:21:25 -!- crathman has joined.
18:24:00 <oerjan> well, redirecting to user pages is against policy, graue is pretty strongly against it.
18:24:29 <oerjan> See Esolang_talk:Authors
18:26:04 <lament> http://esoteric.voxelperfect.net/wiki/Nikita_Ayzikovsky
18:26:44 <ais523> What do you think of the way I've fixed it?
18:27:20 <lament> i think graue's on crack
18:27:29 <ais523> A small amount of information on the wiki page, and a link to the userpage
18:27:35 <lament> and i think having _two_ pages about me is a little extreme
18:27:39 <ais523> Compare http://esolangs.org/wiki/Catatonic_Porpoise
18:27:46 <ais523> and http://esolangs.org/wiki/User:Graue
18:28:07 <lament> two pages, containing the same information
18:28:20 <ais523> but probably written by different people
18:28:34 <lament> okay, i'll redirect User:Lament TO nikita aizikovsky then :)
18:28:58 <ais523> I think the point is that we can have a page http://esolangs.org/wiki/Donald_R._Woods
18:29:04 <ais523> even though he doesn't contribute
18:30:02 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
18:30:03 <lament> we still can do that regardless of the policy on userpages
18:30:03 <ais523> 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 <ais523> (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 <ais523> I suppose the major difference is that user pages are treated as personal
18:33:36 <ais523> whereas pages in the article namespace are treated to the rigors of the wiki process
18:34:08 <ais523> 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 <lament> i understand the reasoning
18:34:24 <lament> it works for wikipedia
18:34:50 <lament> in practice, you end up with two almost identical pages
18:35:22 <ais523> 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 <ais523> and what people are most likely to write about for a person is a list of languages they've created
18:35:48 <lament> i guess somebody like Pressey has enough info about them that it makes sense to actually have a page
18:36:01 <lament> 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 <oerjan> We could always make up some lies about you being a convicted serial killer :)
18:38:07 <ais523> but we don't have a {{citation needed}} tag to put on them, so they'd have to be deleted
18:40:46 <lament> oerjan: what do you mean lies
18:41:07 <lament> heh @ http://www.esolangs.org/wiki/Category:Unusable_for_programming
18:41:10 <ais523> "Nikita Ayzikovsky": 71 google results, so it might be a bit hard to write an article
18:41:30 <ais523> "ais523": 10100 google results, mostly sites pretending to be Wikipedia or Google Groups
18:41:50 <ais523> (Strangely, Esolang is second nowadays, behind my Wikipedia user page; it never used to be like that!)
18:42:09 <ais523> "lament": about 10300000 google results
18:42:13 <ais523> mostly irrelevant, of course
18:43:37 <lament> wow, these google results leave a horrible impression :)
18:44:42 <ais523> Some more statistics: Did you know that http://esolangs.org is the 1684148th most viewed website on the Internet
18:45:06 <ais523> and it's visited by 0.000025% of Internet users?
18:46:52 <ais523> http://alexa.com/data/details/traffic_details?url=esolangs.org
18:50:24 <ais523> void ab() {char c; putchar('a'); c=getchar(); if(c=='y') ab(); putchar('b');}
18:50:45 <ais523> It's a program designed to be easy to implement in most languages, but very difficult to express in UML
18:51:07 <lament> how do you express programs in UML?
18:51:19 <ais523> 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 <lament> i thought uml was for object relationships
18:51:34 <ais523> It is, but you're meant to use it to model the entire system
18:51:52 <lament> i've never seen UML used to model program flow
18:52:16 <ais523> 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 <ais523> and people keep trying to change the notation for loops because they don't like the official one
18:53:09 <ais523> They are written in terms of passing messages around, but you can't send a message to the user
18:53:32 <ais523> 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:49 -!- SevenInchBread has quit ("haaaaaaaaaa").
18:53:53 <ais523> so you'd effectively need to write an interpreter rather than a program to do what I've written above
18:53:58 <lament> so add a dummy user object
18:54:21 <ais523> That doesn't help, because it can't communicate with the user either except by having a message sent to it
18:54:55 <ais523> and sending messages while there's still methods running is impossible to draw, as far as I know
18:55:04 <lament> doesn't that approach fail just as badly with real-world programs as with your example?
18:55:23 <ais523> As far as I can tell, yes, but there are normally ways to work around it
18:55:53 <ais523> 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 <ais523> But it's very easy to get confused and draw an impossibilty with the diagram still seeming to make perfect sense
18:56:59 <lament> but even microsoft-like GUIs have state
18:57:26 <ais523> 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 <ais523> 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 <lament> but isn't "waiting for user input" an extremely common hting to do?
18:59:00 <lament> even in a GUI, it happens
19:00:02 <oerjan> can you do continuation passing style?
19:00:23 <lament> can you model a GOTO? :)
19:00:24 <ais523> lament: More often than it should, in my experience
19:00:44 <ais523> oerjan: probably, but it would clutter the diagram awfully
19:01:17 <ais523> 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:44 <lament> #esoteric made me kill and eat my little brohter. It was worth it, though!
19:03:49 <oerjan> of course it was worth it, but what has #esoteric to do with it?
19:05:20 <lament> the subliminal messages you keep sending me
19:05:44 <oerjan> (Disclaimer: I have no little brothers.)
19:05:57 <lament> that brainwash me into becoming a cruel maniac fratricidal antropophage
19:06:30 <lament> i have no little brothers, either!
19:08:40 <oerjan> There is no such thing as a subliminal message.
19:08:53 <oerjan> The gnomes have made that abundantly clear to me.
19:12:26 <oerjan> And now we return to our regularly scheduled programming.
19:14:26 <lament> NOOOO!!! NOT THE REGULARLY SCHEDULED PROGRAMMING!! AAARGH
19:16:15 <oerjan> 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 <oklopol> with a random number that is not turing complete
19:20:21 <oklopol> 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 <oerjan> did you read my wiki post a moment ago?
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: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.").
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: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 <SimonRC> bsmntbombdood: ITYM "dumb quotes"
01:22:10 <SimonRC> They fuck up everything non-microsoft
01:25:06 <SimonRC> It was not until modern times that time-decay has become detectable, but it is really irritating when you encounter it.
01:25:28 <SimonRC> It is the way that time starts to slightly decay as it gets futher into the pase.
01:25:49 <SimonRC> It was not noticeable until electronic media came around.
01:26:24 <SimonRC> 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:28:40 <SimonRC> Hint: What is the real cause of the noted Usenet phenomenon?
01:37:40 <SimonRC> 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 <SimonRC> I was joking about the time decay
01:42:18 <bsmntbombdood> 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 <SimonRC> bsmntbombdood: I nicked the ide but not the name from The Brightonimicon.
01:45:40 -!- oklopol has joined.
03:24:28 -!- ShadowHntr has joined.
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:30:28 <nooga> my noname-lame-language to SADOL2 compiler works !!1
07:37:30 <nooga> http://pastebin.ca/368682
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:58:42 -!- SevenInchBread has quit ("haaaaaaaaaa").
09:02:42 -!- Sgeo has quit ("Leaving").
09:45:05 <oklopol> "[21:16:24] <oerjan> 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 <oerjan> oklopol: http://esoteric.voxelperfect.net/wiki/Talk:CHIQRSX9_Plus
10:37:29 <oerjan> and in general, http://esoteric.voxelperfect.net/wiki/Special:Recentchanges
10:40:36 <oerjan> 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 <oerjan> i mean, try to pick one of the otherwise equivalent hostnames.
10:43:07 * oerjan has come down with something infectious, so he may not think especially clearly today.
10:44:14 <nooga> i've got my lame-noname-language to SADOL2 compiler
10:45:26 <oklopol> i used 3 hours yesterday to get vc++6 to open a file
10:45:32 <oklopol> some day i'll find a better compiler
10:46:16 <oklopol> fstream rec=fstream("D:\\smth.rec");
10:46:45 <oklopol> 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:59 <oerjan> is that supposed to be a recursive definition somehow?
10:47:01 <oklopol> and i can't set up librarys, too hard
10:47:10 <oklopol> oerjan it's a constructor :P
10:47:22 <oklopol> fstream(...) creates an fstream object
10:47:51 <oerjan> yes it was the rec i was wondering about
10:48:57 <oklopol> fstream var creates an fstream object, if you assign the constructor to it, it'll become it
10:49:07 <oklopol> and i'm explaining very well again...
10:49:19 <oklopol> maybe it'd be clearer in java
10:49:31 <oklopol> Fstream rec = new Fstream("D:\\smth.rec");
10:49:37 <fizzie> Isn't that usually "fstream rec("d:\\smth.rec")" to avoid creating a silly temporary?
10:50:04 <oklopol> hmm, actually, you're right :D
10:50:20 <oklopol> okay, might actually be my mistake then
10:51:06 <oerjan> no, use raw casts to (void*) from integer constants.
10:51:53 <nooga> waaa 113 shift-reduce conflicts ;/
10:53:18 <oerjan> what language are you parsing?
10:54:00 <oerjan> can i see the grammar?
10:54:12 <nooga> no, i'm in school ;|
10:54:57 <oerjan> well are you having many binary operators? then you need to assign precedences.
10:55:59 <nooga> i have precedences ;p
10:56:12 <oerjan> then that's probably bad.
10:56:54 <nooga> everything is in exp rule
10:57:31 <nooga> and there are things like exp '[' exp ']'
10:59:04 <oerjan> i guess then both '[' and the rule itself (or ']') needs a precedence
11:00:40 <nooga> i'll fix that later
11:01:12 <nooga> basically only user is me
11:01:32 <nooga> so there's even no error reporting ;>
11:01:50 <oerjan> basically that's usually the case.
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:53:23 -!- oerjan has joined.
14:54:26 <nooga> http://pastebin.ca/369022 xD
14:56:01 <oerjan> is that <...> some kind of inline SADOL assembler?
14:56:25 <nooga> <% xxx %> outputs xxx literally
14:57:41 <nooga> i plan to write a raytracer in this shit
14:59:31 <oerjan> are you still getting shift/reduce errors?
15:00:17 <oerjan> it looks to me a bit like a cross between perl and python
15:02:09 <oerjan> well i don't see anything in that syntax that should mean it is hard to parse.
15:03:58 <nooga> http://pastebin.ca/369031 it's really lame
15:04:10 <nooga> i did it last night when my mind was gone ;p
15:09:51 <oerjan> is '^' exponentiation? then it may be better to have it right associate
15:10:45 -!- UpTheDownstair has joined.
15:11:31 <oerjan> ah, your if is dangling :)
15:12:02 <oerjan> well it would shift by default
15:12:18 <oerjan> which is often the right thing.
15:14:17 <nooga> it works somehow, so nevermind
15:16:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
15:19:30 <nooga> i don't know why e/e does not work
15:21:26 <oerjan> since i minded anyhow: i don't see any rule where the default precedence would be grossly unintuitive.
15:21:54 <oerjan> maybe there is a SADOL error?
15:23:18 <nooga> http://pastebin.ca/369057
15:23:56 <nooga> it's a strange error
15:24:22 <oerjan> oh. so it's the parser.
15:24:31 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)).
15:25:25 <nooga> compiled again and it suddenly works ;>
15:25:58 <oerjan> mismatched file versions, perhaps.
15:26:24 <oerjan> if you are not using make.
15:27:23 <nooga> yea, it could be the reason
15:27:30 <nooga> i've got quite a mess
15:29:55 <nooga> now i can write a raytracer
15:30:50 <nooga> hm, i think it would be useful to indent generated code instead of printing it as one big line
15:34:19 <oerjan> I am cleaning up the SADOL web page a little. What is your answer to:
15:34:29 <oerjan> * ''Code'' is a list of ''function calls''. <!-- How are these separated? -->
15:35:30 <oerjan> is it like i suspect that they aren't? :)
15:36:00 <nooga> because we know that all identifiers are 1 char long
15:36:24 <nooga> and we now how many arguments to pass every time we call a func
15:37:06 <oerjan> right. the latter is the same as with my Reaper (and the non-esoteric Logo, I think)
15:38:13 <nooga> a45b67c3123 {a(4,5); b(6,7); c<3>(1,2,3) c<3> means that c will take 3 args }
15:40:07 <oerjan> oh, not quite the same then.
15:41:03 <oerjan> why don't a and b need an <n>? Is it used only for currying?
15:42:38 <nooga> arities of a and b are known to be 2
15:43:20 <nooga> bcs a and b were defined to take 2 args
15:43:59 <nooga> and c was definefined to take unknown count of arguments, and that count must be specified when calling c
15:45:07 <nooga> SADOL is not functional in a traditional way
15:45:34 <nooga> or maybe it's not functional at all
15:46:01 <nooga> I like to call it 'expression oriented'
15:47:13 <oerjan> can you pass functions as arguments or return them as results?
15:48:05 <oerjan> If it cannot do those, I wouldn't call it functional.
15:48:18 <nooga> it was included in my spec
15:48:29 <nooga> but implementation does not cover it
15:48:46 <nooga> so it's rather imperative but functional wannabe ;p
15:51:14 <nooga> suprisingly it's quite nice to code in it
15:53:05 <oerjan> It's sort of like compressed Logo.
15:54:30 <nooga> 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:55:09 <oerjan> although i wouldn't know if that extends to more than the syntax.
15:56:21 <oerjan> number -> string conversion, is that like the usual decimal format?
15:57:12 <nooga> what do u mean more than the syntax?
15:58:44 <oerjan> 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 <nooga> it's a reversed quine
15:59:29 <nooga> a program that writes out itself but from the end to the begining
15:59:31 <oerjan> i guess that could be difficult in Logo.
16:00:27 <oerjan> it looks almost like a palindrome
16:00:52 <oerjan> can the reversed program be run?
16:01:41 <oerjan> what would be cool is if that produced the original program.
16:02:15 <nooga> i think it could not be run
16:03:03 <nooga> the end: 9822,"C:7( will be printed as: (7:C",2298
16:03:30 <nooga> ,2 indicates that there will be 2 args, and these are 2 and 9
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:44:15 <SimonRC> Nonono, _The Newsquiz_ is great comedy from Radio 4.
18:55:45 <oklopol> 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 <oklopol> SDL crashes if the exe is given arguments :)
20:02:52 <oklopol> 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: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:34 <SevenInchBread> I think I'll use Ogham runes as the preprocessor directives.
21:46:26 <SevenInchBread> stan shall represent the coroutines main IO stream. :)
21:47:42 <SimonRC> Alas I do not seem to have a font with U+16E5 in it.
21:48:00 -!- goban has quit (Read error: 104 (Connection reset by peer)).
21:48:17 -!- goban has joined.
21:48:25 -!- UpTheDownstair has joined.
21:48:43 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
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:35 <oklopol> don't you have a hex mode in your client?
22:01:33 <nazgjunk> i can do it by holding shift+ctrl and type u16E5
22:06:25 -!- SimonRC_ has joined.
22:07:18 <SimonRC> it seems something about irssi is not quite right
22:07:28 <SimonRC> they both look the same in each window
22:07:44 <SimonRC> this one shows individual characters, but
22:07:59 <SimonRC_> this one shows the proper appearance
22:09:00 <SevenInchBread> I'd rather just have some kind of syntax for typing them in directly.
22:10:24 <SevenInchBread> 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 <SevenInchBread> 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:13:43 <SevenInchBread> yeah... this is a concurrent fungeoid with a bunch of streams and processes.
22:15:12 <SevenInchBread> 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:17:27 <nazgjunk> that sounds a small bit like a Piet-variant i discussed with... you? few weeks ago, anyway.
22:18:12 <SevenInchBread> big bugs and little bugs.. crawling through tunnels... and... asexually reproducing?
22:19:22 <nazgjunk> you'd have to think out a new universe, and use metaphors from there in the terminology
22:19:33 <SevenInchBread> 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 <SevenInchBread> 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:23:30 <SevenInchBread> 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:32:45 <SimonRC> your rounding errors are worse than mine, it seems
22:35:03 <fizzie> (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:40:16 -!- tgwizard has joined.
22:47:00 -!- crathman has joined.
23:04:39 <SevenInchBread> and restrict access to stream sockets in this language.
23:19:42 -!- Arrogant has quit (Read error: 113 (No route to host)).
23:28:47 <oklopol> i don't know what that is.
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 ("@+").
00:19:57 <bsmnt_bot> the peeple tell me to due bad things
00:25:10 <SimonRC> *BOGGLE* http://www.mixedtraffic.net/images/funnies/14067.jpg
01:01:05 <SevenInchBread> 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:20:53 -!- nazgjunk has quit ("Bi-la Kaifa").
01:48:16 -!- Arrogant has quit ("Leaving").
01:52:29 -!- nazgjunk has joined.
01:52:37 <SevenInchBread> ...hmmm... I should equip egobot with a befunge that can read multiline befunge programs.
01:54:14 <SevenInchBread> 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.
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:14:03 <SevenInchBread> I wonder if you could take advantage of swapping two values in an esolang.
02:14:22 <SevenInchBread> that was the original idea I had for an infinitely visible BF.
02:14:48 <SevenInchBread> if you swap two values with the same value... the net effect is a NOP...
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 <ihope> 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 <ihope> ~exec self.ihope = IRCbot("80.32.164.76", "Python", "nope", "ihope", "Now 100% Real", 9999, "#lobby", True, ["#lobby"], "#", True); self.ihope.listen()
04:01:33 <ihope> I'm struggling with bsmnt_bot!
04:01:54 <ihope> Because it isn't working like I want it to and I don't know what to do.
04:02:45 <ihope> How do I make the bot execute everything it receives in a PRIVMSG?
04:03:39 <ihope> That won't only execute stuff with an #exec?
04:03:49 <ihope> Then again, that's what I wanted to do anyway :-P
04:04:09 <ihope> Um, yeah, so how does it work?
04:06:09 <ihope> #exec self.register_raw(r"\S+ PRIVMSG ([^#]\S+) :(.*)", blah)?
04:06:29 * ihope ponders disconnecting without warning
04:06:40 <ihope> So what would blah be? do_exec?
04:07:54 <ihope> It's not doing anything.
04:16:31 -!- bsmntbombdood has left (?).
04:16:40 -!- bsmntbombdood has joined.
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:33:31 -!- digital_me has quit ("Lost terminal").
06:54:34 -!- oerjan has joined.
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 <oklopol> haha i just invented lazy evaluation :D
10:10:41 <oerjan> next: fire or the wheel? :)
10:11:30 <oklopol> 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:13 <oklopol> i wish i'd born in the fifties
10:13:36 <oerjan> do you read Lambda the Ultimate? There was a recent thread on "the golden age" of the sixties and seventies.
10:13:57 <oklopol> sounds something i'd like to read
10:14:14 <oerjan> it's a weblog about programming languages, at http://lambda-the-ultimate.org/
10:15:27 <oerjan> it is often very high-level, though.
10:15:33 -!- sebbu has joined.
10:16:05 <oerjan> they encourage links to research articles and the like.
10:16:21 <oklopol> you mean i wouldn't understand it?
10:17:13 <oerjan> well maybe not all of it, but there is somewhat lighter fare on its "discussion forum"
10:18:19 <oerjan> which actually is the majority of threads.
10:18:22 <oklopol> where can i see an article list there?
10:18:59 <oklopol> the front page changes daily and contains the link to the article?
10:19:38 <oklopol> too much text and links, there should just be a big button
10:19:42 <oerjan> changes immediately with a new main topic, i guess.
10:20:08 <oklopol> a link to the article of the day :D
10:20:20 <oklopol> i get dizzy when there's so much links
10:20:34 <oerjan> there can be more than one article, and there are several editors.
10:21:16 <oerjan> 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 <oerjan> *articles and comments
10:22:19 <oerjan> besides the main page doesn't contain the forum topics.
10:24:40 <oerjan> btw the topic i mentioned at the start is first on the next page.
10:31:47 <oklopol> i understand the article they have now
10:32:37 <oklopol> i think i might start reading daily, i like reading junk, usually just randomly search for that kind of stuff
10:33:28 <oklopol> i happen to know erlang and actors quite well though
10:33:48 <oklopol> but maybe i know everything, i don't know what i don't know
10:33:56 <oklopol> i don't know cobol though, i wanna know it
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 <oerjan> what is the word for an explanation why something might be worth considering?
15:40:14 <oerjan> *sigh* i'll try with "rationale"
15:55:59 <oerjan> wrong word class, sorry.
15:56:21 <oerjan> anyway it was just for an edit summary
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:26 <bsmntbombdood> "Lowering: A Static Optimization Technique for Transparent Functional Reactivity"
18:41:59 <SimonRC> SevenInchBread: http://doi.acm.org/10.1145/142137.142162
18:42:24 <SimonRC> "02:11 < SevenInchBread> I wonder if you could take advantage of swapping two values in an esolang."
18:42:58 <oerjan> um, he has heard of Smetana, hasn't he? :)
18:44:31 <oerjan> how are you telling it to quit?
18:48:02 <oerjan> hopefully you are not using print in it.
18:48:33 <oerjan> or you would hit the stdout problem :)
18:49:21 <bsmnt_bot> <module 'ski_repl' from '/bot/ski_repl.py'>
18:50:18 <SimonRC> If you haven't seen it, read the link I just gave about Linear LISP.
18:51:08 <SimonRC> O(1) copy, O(1) equality testing, EQ is the same as EQUAL, and no GC required!
18:51:51 <bsmntbombdood> ~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 <SimonRC> 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 <bsmntbombdood> ~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:40 -!- bsmnt_bot has quit (Remote closed the connection).
18:52:44 -!- bsmnt_bot has joined.
18:53:11 <bsmntbombdood> ~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:19 -!- bsmnt_bot has quit (Remote closed the connection).
18:53:21 -!- bsmnt_bot has joined.
18:54:11 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
18:54:19 <bsmntbombdood> ~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:55:25 <bsmntbombdood> sometimes it leaves things partially unreduced though
18:56:29 * SimonRC tries to remember what the simple infinite loop is.
18:58:01 <oerjan> so it is not actually _meant_ to stop prematurely?
18:58:12 -!- kxspxr has quit.
18:59:19 <oerjan> eh, it's called "correct implementation" ;)
19:02:44 <SimonRC> Gargh! What twat at mozilla decided the put the "quit without confirmation" key right next to the "close tab" key.
19:10:16 <oerjan> i think i know a way to fix that simp.
19:10:51 <oerjan> Simplify simp[0] _before_ checking for the test cases.
19:13:48 <oerjan> why, isn't that the point? ;)
19:13:57 <oerjan> Then you need to include a resource limit.
19:14:16 <SimonRC> keep track of the number of reductions that take place or something
19:15:24 <SimonRC> 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 <oerjan> it should be enough to do it for the S case.
19:17:12 <oerjan> since that is the only one that can increase the expression size.
19:21:43 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
19:21:54 <bsmntbombdood> ~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:23:23 <oerjan> well i take it you have to stop somewhere?
19:24:14 <oerjan> what does your new simp return when the resource limit is exceeded?
19:24:43 <oerjan> and where is that limit checked?
19:25:29 <oerjan> hm... simplify t[1] before returning even in that case.
19:26:09 <oerjan> then only S reductions will be avoided, I think.
19:26:40 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
19:27:03 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
19:27:09 <bsmntbombdood> ~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:42 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
19:28:49 <bsmntbombdood> ~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:29:06 * oerjan wonders how much of that is actually necessary
19:31:30 <oerjan> globals are looked up every time they are referenced, not? So you should definitely not need to redo the register_raw.
19:32:50 <oerjan> it's not perfect for functional programming, i take.
19:40:56 -!- jix__ has joined.
19:45:08 <bsmntbombdood> ~exec self.register_raw(".*tell me x.*", lambda m: self.raw("PRIVMSG #esoteric :%s" % x))
19:45:18 -!- bsmnt_bot has quit (Remote closed the connection).
19:45:21 -!- bsmnt_bot has joined.
19:45:36 <bsmntbombdood> ~exec self.register_raw(".*tell me x.*", lambda m: self.raw("PRIVMSG #esoteric :%s" % x))
19:46:16 <bsmntbombdood> ~exec self.raw_regex_queue[-1][1].func_globals = locals()
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 <SimonRC> ooh, esoteric: http://home.pipeline.com/~hbaker1/sigplannotices/COMFY.TXT
20:32:15 -!- jix__ has joined.
20:38:33 <oerjan> 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 <oerjan> although this seems much earlier, if those 60's references are a guide.
20:40:54 <oerjan> 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 <GregorR> Heeeeeeeeeeeeeeeeeeeeeey calamari, you speak Java ... ^^
21:29:19 <calamari> my Java might be a little rusty now
21:29:35 <calamari> but we can speak JCL if you'd like
21:30:08 <oerjan> JCL? The infamous IBM language?
21:30:13 <GregorR> http://groups.google.com/group/nestedvm/browse_thread/thread/f11cc0b0e9a9b584 < I need sys_select in NestedVM to port Java.
21:30:15 -!- goban has quit (Read error: 104 (Connection reset by peer)).
21:30:29 <GregorR> But reading that code just makes my head swim :(
21:30:30 -!- goban has joined.
21:33:38 <calamari> why are you porting a perfectly good c++ program to java? seems rather cruel
21:37:24 <SimonRC> it makes the object's allocation policies into part of its interface
21:38:14 <GregorR> SimonRC: Blah blah blah don't care.
21:38:23 <GregorR> calamari: I'm just trying to make it usable from Java so I can make an applet of it.
21:38:40 <GregorR> SimonRC: Blah blah blah it's not built in, get yourself Boehm GC and shaddap ^^
21:39:09 <calamari> and you're sure you need select?
21:39:23 <calamari> I don't think I've needed that for any of my java irc stuff
21:39:39 <GregorR> calamari: IRC only had one socket, no?
21:39:54 <GregorR> calamari: DirectNet has X sockets.
21:40:01 <GregorR> calamari: Where X is a number often greater than 1.
21:40:22 <calamari> well, I guess threads don't really scale well
21:40:26 <GregorR> I stopped using threads in DN a long time ago ... and NestedVM doesn't have threads support.
21:41:24 <calamari> unfortunately my knowledge of nio is nil, sorry
21:41:56 <GregorR> 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 <calamari> or you could write some kind of browser plugin to support c++ programs ;)
21:43:35 <calamari> then the user would hate you when they go to a site and it wipes their system due to lack of security
21:44:51 <calamari> GregorR: btw where do you work?
21:45:18 <GregorR> Sorry, tried to dereference a NULL pointer.
21:45:25 <GregorR> Somewhat, not desperately.
21:45:50 <GregorR> I still have 1.5 years 'til I have an undergrad degree.
21:45:55 <calamari> IBM has it's embedded Linux operations in Oregon
21:46:11 <calamari> thought you might enjoy something like that
21:46:21 <GregorR> But couldn't get the job :P
21:46:28 -!- tgwizard has quit (Read error: 110 (Connection timed out)).
21:46:40 <calamari> I could put in a good word for you
21:46:41 <GregorR> Well, lesse ... I have no degree.
21:46:52 <calamari> you could be a co-op first, not a problem
21:47:11 <fizzie> Co-op first, deathmatch later. (Sorry, free association.)
21:47:49 <calamari> 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 <GregorR> Well, I intend on going to grad school.
21:48:21 <GregorR> I'm considering professorship *shrugs*
21:48:31 <calamari> they have tuition reimbursement
21:48:53 <calamari> those who can, do.. those who can't, teach
21:51:25 <calamari> 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 <SimonRC> 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 <SimonRC> Plus compiler optimisations can seriously fuck it up.
21:56:28 <calamari> can't wait to build my computer.. want to try out linux amd64
22:01:29 <calamari> 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 <SimonRC> the main parsing routine is a sight to behold
22:16:19 -!- goban has joined.
22:17:14 <SimonRC> 1200 lines of code, repeatedly re-using the half-a-dozen local variables to which it is restricted.
22:17:35 <SimonRC> and a map at the beginning to help you understand it all.
22:19:05 <SimonRC> 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 <SimonRC> oh, yeah, and it's written in a language mostly less powerful than C.
22:22:01 -!- goban has quit (Read error: 104 (Connection reset by peer)).
22:27:27 <oerjan> is this intended to be a general statement? :)
22:43:11 -!- goban has joined.
22:50:47 <oerjan> what about it? not that i know/remember the details, but it is hardly the state of the art.
22:51:13 <bsmntbombdood> it iterates through the entire memory like 4 times each run
22:53:43 <oerjan> that's sort of like crying because Turing machines are slow... :)
22:56:26 -!- SevenInchBread has quit ("haaaaaaaaaa").
23:21:16 -!- jix__ has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
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:26:35 <SimonRC> 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 <SimonRC> Remember, the programmer can only do static analysis of a program, but the RTS can do dynamic analysis.
00:27:22 <SimonRC> 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 <SimonRC> copying collectors are particularly good at improving locality
00:50:59 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
00:51:10 <bsmntbombdood> ~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:53:45 <bsmntbombdood> ~exec replace = lambda t,a,b: (t == a and b) or [replace(t[0], a, b), replace(t[1], a, b)]
00:55:55 <bsmnt_bot> {'replace': <function <lambda> at 0xb7c046bc>,
00:55:55 <bsmnt_bot> 'self': <__main__.IRCbot instance at 0xb7c0308c>,
00:55:55 <bsmnt_bot> 'ski_repl': <module 'ski_repl' from '/bot/ski_repl.py'>,
00:55:59 -!- ihope has joined.
00:57:28 <ihope> ~exec sys.stdout(replace([[1,2],[3,1]],1,2))
00:57:41 <ihope> I think you need to define replace.
00:58:22 <ihope> ~exec sys.stdout(replace(1,1,2))
00:58:28 <ihope> ~exec sys.stdout(replace([[1,2],[3,1]],1,2))
00:58:48 <bsmntbombdood> ~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)])
01:06:02 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09").
01:09:08 -!- ihope has joined.
01:22:59 <bsmntbombdood> ~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:25:40 <bsmnt_bot> [['S', [['S', 'I'], ['K', 'S']]], ['K', 'K']]
01:26:56 <bsmntbombdood> ~exec un_iota = lambda x: replace(x, iota_comb, "i")
01:28:19 <ihope> ~exec sys.stdout(ski_repl.parse("C"))
01:28:22 <bsmntbombdood> ~exec iota = lambda x: ski_repl.unparse(un_iota(ski_repl.simp(replace(ski_repl.parse(x), "i", iota_comb))))
01:28:31 <ihope> ~exec sys.stdout(ski_repl.parse("`CK"))
01:29:02 <ihope> ~exec sys.stdout("C".(ski_repl.parse))
01:29:14 <ihope> Well, that clearly didn't work.
01:29:18 <ihope> ~exec sys.stdout("C".ski_repl.parse)
01:29:20 <oerjan> somehow i doubt that :)
01:29:33 <ihope> ~exec sys.stdout("C".parse.ski_repl)
01:30:04 <ihope> ~exec foo = sys.stdout; ski_repl.parse("C").foo
01:30:16 <ihope> Indeed, it... hmm.
01:30:28 <oerjan> ~exec sys.stdout(ski_repl.parse("`.i`.Hi"))
01:30:40 <ihope> Okay, doesn't work.
01:30:41 <oerjan> nah, it can't parse Unlambda ;)
01:32:02 <SimonRC> 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:33 <oerjan> that one is just too old :)
01:32:46 <bsmntbombdood> ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK")
01:33:00 <bsmntbombdood> ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i")
01:33:25 <bsmntbombdood> ~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:59 * ihope ponders Unlambda input combinators
01:34:03 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c0308c>
01:35:14 <ihope> You need a combinator that applies its argument to ?x, where x is the current character.
01:35:31 -!- bsmnt_bot has quit.
01:35:35 -!- bsmnt_bot has joined.
01:35:40 <bsmntbombdood> ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK")
01:35:44 <bsmntbombdood> ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i")
01:36:00 <bsmntbombdood> ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK")
01:36:08 <bsmntbombdood> ~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:40 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
01:37:11 <bsmntbombdood> ~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:23 <bsmntbombdood> ~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:38:56 -!- bsmnt_bot has quit (Client Quit).
01:39:01 -!- bsmnt_bot has joined.
01:39:39 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
01:39:53 <bsmntbombdood> ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK")
01:40:03 <bsmntbombdood> ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i")
01:40:34 <bsmntbombdood> ~exec self.iota_comb = self.ski_repl.parse("``S``SI`KS`KK")
01:40:59 <bsmntbombdood> ~exec self.un_iota = lambda x: self.replace(x, self.iota_comb, "i")
01:42:35 <bsmntbombdood> ~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: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:55:22 -!- bsmnt_bot has quit.
01:55:25 -!- bsmnt_bot has joined.
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:05:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)).
02:06:03 -!- nazgjunk has joined.
02:12:35 <oerjan> wow. my Malbolge Unshackled interpreter works.
02:12:59 <oerjan> 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:15:03 <oerjan> essentially, with automatically growing memory size
02:15:40 <oerjan> no, i've tried to keep as close to the spirit as possible.
02:16:25 <oerjan> only some subtle changes to make values practically unbounded.
02:17:00 <oerjan> but i didn't expect the changes to be subtle enough to make the cat program work. :)
02:18:21 <oerjan> this must be an evil omen :D
02:24:00 -!- nazgjunk has joined.
02:24:20 <oerjan> now uploaded: http://oerjan.nvg.org/esoteric/Unshackled.hs
02:26:17 <oerjan> how else could I properly juggle the combined infinite Trie and linked list of Trits? :)
02:27:22 <ihope> You could do it in Unlambda.
02:27:25 <oerjan> of course a more efficient implementation might be possible.
02:27:40 <ihope> bsmntbombdood: fancy spelling of "tree", isn't it?
02:27:55 <ihope> Also, can I call you and your bot bb and b_? :-P
02:28:59 <oerjan> 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 <oerjan> e.g. the trinary number 021 would be at the first child of the second child of the zeroth child of the root.
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:51 <LeaLeaLea> .. 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:51:14 -!- SevenInchBread has joined.
03:52:32 <LeaLeaLea> What say we grab a cuppa, old bean?
03:56:32 -!- bsmnt_bot has quit.
03:56:36 -!- bsmnt_bot has joined.
03:56:42 <bsmnt_bot> <__main__.IRCbot instance at 0xb7ca208c>
03:58:34 -!- bsmnt_bot has quit (Client Quit).
03:58:36 -!- bsmnt_bot has joined.
03:58:42 <SevenInchBread> ~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:59:26 <SevenInchBread> ~exec for x in xrange(10): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!")
04:01:25 <SevenInchBread> ~exec print "Lol... inconsistent print statement too..."
04:01:43 <SevenInchBread> basically... you've fucked up the environment with threading and shit. :)
04:01:51 <bsmntbombdood> ~exec types.FunctionType(self.x.func_code, globals(), closure=locals())
04:02:06 <ihope> ~exec self.x = lambda: bot
04:02:16 <ihope> ~exec sys.stdout(self.x())
04:02:17 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:02:18 <ihope> ~exec sys.stdout(self)
04:02:19 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:02:58 <bsmntbombdood> ~exec types.FunctionType(self.x.func_code, globals())
04:03:01 <bsmntbombdood> ~exec types.FunctionType(self.x.func_code, globals())()
04:03:17 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())())
04:03:18 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:03:23 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, globals()))
04:03:39 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:04:02 <SevenInchBread> ~exec for x in xrange(5): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!")
04:04:11 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, globals()))
04:04:12 -!- anonfunc has joined.
04:04:15 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())())
04:04:15 <ihope> I like messing people up.
04:04:25 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, locals())())
04:04:25 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:04:32 <ihope> Sorry. Didn't mean to do that.
04:05:26 <SevenInchBread> ~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:21 <ihope> You're banned form #python?
04:09:15 <ihope> If you really want to get in, change your nickname and username.
04:10:00 -!- bsmntbombdood has changed nick to xor\.
04:10:03 -!- xor\ has changed nick to xor.
04:10:38 <xor> apparently, just the nick
04:11:02 <ihope> "bsmntbombdood!*@*" and "*!n=gavin@*."
04:11:22 <ihope> Why there's a period I don't know.
04:12:28 <xor> well, passing in the locals as the globals to create the function works
04:18:56 <xor> imma jenus
04:22:40 -!- SevenInchBread has quit ("haaaaaaaaaa").
04:24:31 <xor> ~exec self.foo = __import__("foo")
04:24:57 <xor> ~exec self.foo = __import__("foo")
04:25:22 <xor> ~exec self.foo.hack_closure(lambda: self, locals(), globals())
04:26:09 <xor> ~exec globals()["types"] = __import__("types")
04:26:11 <xor> ~exec self.foo.hack_closure(lambda: self, locals(), globals())
04:26:28 <xor> ~exec self.foo = __import__("foo")
04:26:31 <xor> ~exec self.foo.hack_closure(lambda: self, locals(), globals())
04:26:57 <xor> ~exec reload(self.foo)
04:27:01 <xor> ~exec self.foo.hack_closure(lambda: self, locals(), globals())
04:27:12 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()))
04:27:18 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())())
04:27:33 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals)
04:27:34 <bsmnt_bot> {'IRCbot': <class __main__.IRCbot at 0xb7c7f32c>, 'inspect': <module 'inspect' from '/usr/lib/python2.4/inspect.pyc'>, '__builtins__': <module '__builtin__' (built-in)>, '__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 <bsmnt_bot> 'bsmntbombdood!\\S*gavin@\\S*'}, 'IRCFileWrapper': <class __main__.IRCFileWrapper at 0xb7c7f35c>, 'sys': <module 'sys' (built-in)>, 'thread_info': <thread._local object at 0xb7d18890>, 'pickle': <module 'pickle' from '/usr/lib/python2.4/pickle.pyc'>, '__name__': '__main__', 'exec_global_tracer': <function exec_global_tracer at 0xb7c82a74>, 'types': <module 'types' from '/
04:27:35 <bsmnt_bot> usr/lib/python2.4/types.pyc'>, 'copy': <module 'copy' from '/usr/lib/python2.4/copy.pyc'>, 'socket': <module 'socket' from '/usr/lib/python2.4/socket.pyc'>, 'thread': <module 'thread' (built-in)>, 'traceback': <module 'traceback' from '/usr/lib/python2.4/traceback.pyc'>, 'os': <module 'os' from '/usr/lib/python2.4/os.pyc'>, 'pprint': <module 'pprint' from '/usr/lib/python2
04:27:40 <bsmnt_bot> .4/pprint.pyc'>, 'bot': <__main__.IRCbot instance at 0xb7c9608c>, 'marshal': <module 'marshal' (built-in)>, 're': <module 're' from '/usr/lib/python2.4/re.pyc'>, 'time': <module 'time' from '/usr/lib/python2.4/lib-dynload/time.so'>, 'threading': <module 'threading' from '/usr/lib/python2.4/threading.pyc'>, 'SysWrapper': <class __main__.SysWrapper at 0xb7c7f38c>, 'exec_loca
04:27:45 <bsmnt_bot> l_tracer': <function exec_local_tracer at 0xb7c97454>, '__doc__': None, 'math': <module 'math' from '/usr/lib/python2.4/lib-dynload/math.so'>}
04:28:02 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals["self"])
04:37:38 <xor> ~exec reload(self.foo)
04:37:54 <xor> ~exec sys.stdout(lambda: self, locals(), globals()))
04:38:17 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()))
04:38:24 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())())
04:38:24 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:38:44 <xor> ~exec (lambda: self)()
04:38:53 <xor> that's why it's needed
04:59:35 <oerjan> made a wiki page on Malbolge Unshackled, explaining the differences (but not the commonalities)
05:01:51 -!- mike_the_person has joined.
05:04:34 <xor> ~exec self.raw("QUIT")
05:04:35 -!- bsmnt_bot has quit.
05:04:39 -!- bsmnt_bot has joined.
05:04:44 <xor> ~exec this is an error
05:05:32 -!- mike_the_person has quit (Client Quit).
05:06:11 <xor> ~exec self.raw("QUIT")
05:06:12 -!- bsmnt_bot has quit (Client Quit).
05:06:15 -!- bsmnt_bot has joined.
05:06:17 <xor> ~exec this is an error
05:06:55 <xor> ~exec self.raw("QUIT")
05:06:56 -!- bsmnt_bot has quit (Client Quit).
05:06:59 -!- bsmnt_bot has joined.
05:07:02 <xor> ~exec this is an error
05:07:55 <xor> ~exec self.raw("QUIT")
05:07:56 -!- bsmnt_bot has quit (Client Quit).
05:07:59 -!- bsmnt_bot has joined.
05:08:01 <xor> ~exec this is an error
05:08:53 <xor> ~exec self.raw("QUIT")
05:08:54 -!- bsmnt_bot has quit (Client Quit).
05:08:57 -!- bsmnt_bot has joined.
05:08:59 <xor> ~exec this is an error
05:09:00 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
05:09:16 <xor> ihope: there
05:09:58 <ihope> But why's there a space before it now?
05:10:12 <xor> there always has been
05:10:31 <xor> i'll take it off...
05:10:57 <ihope> Doesn't look like there always has been to me.
05:11:17 <ihope> <bsmnt_bot> NameError: name 'raw' is not defined
05:11:25 <ihope> No space, and that was over three hours ago.
05:11:54 <xor> that's odd
05:12:03 <xor> ~exec self.raw("QUIT")
05:12:04 -!- bsmnt_bot has quit (Client Quit).
05:12:07 -!- bsmnt_bot has joined.
05:12:13 <xor> ~exec this is an error
05:12:14 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
05:14:03 -!- xor has changed nick to bsmntbombdood.
05:14:07 -!- bsmnt_bot has quit (Client Quit).
05:14:10 -!- bsmnt_bot has joined.
05:14:15 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
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 <Sukoshi> 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 <Sukoshi> 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 <oklopol> properties of or prevent me from answering
11:42:22 -!- nooga has joined.
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:36:19 <oerjan> 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 <oerjan> 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 <oerjan> 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:30 <bsmnt_bot> ZeroDivisionError: integer division or modulo by zero
18:02:26 -!- nazgjunk has joined.
18:03:46 <bsmntbombdood> ~exec sys.stdout = StringIO(); sys.stdout.write("foo")
18:04:09 <bsmntbombdood> ~exec sys.stdout = StringIO(); sys.stdout.write("foo"); print sys.stdout.getvalue()
18:07:33 <bsmnt_bot> TypeError: exceptions must be classes, instances, or strings (deprecated), not cStringIO.StringO
18:07:40 <bsmnt_bot> TypeError: exceptions must be classes, instances, or strings (deprecated), not builtin_function_or_method
18:08:53 <bsmnt_bot> TypeError: __init__() takes at least 5 arguments (1 given)
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:57:30 <bsmntbombdood> thought that error message would be more interesting
19:59:34 <oerjan> bsmnt_bot: you have a lousy memory if you think that is exceptional :)
20:00:48 <bsmntbombdood> ~exec exec "class BoredError(Exception): pass\n\nself.bored = BoredError"
20:02:07 <bsmntbombdood> ~exec exec "try:\n raise self.bored\nexcept Exception: \nraise \"not allowed to be bored\"\n"
20:02:08 <bsmnt_bot> IndentationError: expected an indented block (line 4)
20:02:28 <bsmntbombdood> ~exec exec "try:\n raise self.bored\nexcept Exception:\n raise \"not allowed to be bored\"\n"
20:03:41 -!- tgwizard has joined.
20:33:16 -!- sebbu has joined.
20:39:10 -!- oklopol has joined.
20:41:06 <oerjan> i don't remember, can you cross between asia and america?
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)).
21:00:15 <oerjan> for a byte, that sounds like 8 but should be 256, I think
21:20:41 <oerjan> use a language with proper types :)
21:22:29 <oerjan> although i suppose i _could_ make the crash function in my interpreter segfault if I used the unsafePerformIO loophole.
21:22:50 <oerjan> for now it just runs out of memory.
21:23:18 <bsmntbombdood> quitting with an error message doesn't tell you anything
21:31:56 <oerjan> return a default, possibly inserting it first.
21:37:06 <bsmntbombdood> and any data can be used as a key, without a hash function
21:48:20 <SimonRC> rm is giving me "text file busy" but lsof is listing nothing when I say lsof <filename>
21:52:17 <SimonRC> I would like to be Hu*Ki bimorph but it ain't going to happen.
21:52:32 <SimonRC> maybe that should be Ki*Hu
21:55:56 <SimonRC> how did you know what "bimorph" meant/
21:56:23 <oerjan> i guessed, from bi- and -morph
21:56:41 <SimonRC> Darn, i am not used to people being able to do that.
21:56:56 <SimonRC> (i.e. analyse things by their classical roots)
21:57:28 <oerjan> besides any PL enthusiast should know about polymorphism
21:58:15 <SimonRC> 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:44 <oerjan> oh, your own conworld.
21:58:58 <SimonRC> oerjan: where di you learn that word
21:59:31 <SimonRC> 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:39 <oerjan> i used to subscribe to the conlang list
21:59:59 <SimonRC> bsmntbombdood: see spinnoff.com/zbb
22:00:26 <oerjan> besides i think it was mentioned in the files of yours i looked at
22:03:16 <oerjan> the world is even smaller, both at conlang and at esolangs i've met people from my local gamer's club :)
22:03:34 <SimonRC> bsmntbombdood: what are you using these tries for?
22:05:10 <bsmntbombdood> for prefix-free keys each new key takes O(keylen) more storage O.o
22:05:17 <oerjan> on the other hand i used a trie in my newest interpreter, which is how the subject came up i think
22:06:32 <SimonRC> ISTR tries have crap constants
22:06:59 <oerjan> bsmntbombdood: there is an optimization to make tries smaller.
22:07:00 <SimonRC> you might want a briefer node format
22:07:19 <SimonRC> like an array of (byte, pointer) pairs
22:07:42 <oerjan> basically, if there is only one leaf in a subtree, you save it directly.
22:07:46 <SimonRC> sounds right, for size-4 pointers
22:07:53 <oerjan> at the top of that subtree.
22:08:56 <oerjan> and you may also split bytes into say 2 nybbles, to make each node only have 16 subnodes.
22:09:13 <SimonRC> 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:10:37 <oerjan> it isn't very hard either.
22:11:14 -!- Sgeo has joined.
22:13:00 <oerjan> sounds like you got it
22:13:29 <oerjan> i guess it is a tradeoff between space and search speed.
22:18:10 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:20:13 <SimonRC> solution: use a real language
22:22:30 <SimonRC> In that case, use a language with a real typesystem.
22:23:33 <oerjan> by making it impossible to dereference a null pointer.
22:23:58 <GregorR> That just turns it into some other type of abort.
22:24:00 <SimonRC> By guaranteeing that a pointer always points at something.
22:24:06 <bsmntbombdood> It would have to raise some kind of equivelent error
22:24:08 <oerjan> or do array indexing out of bounds
22:24:15 <SimonRC> (hint: GC may be involved)
22:24:31 <GregorR> Everybody go look up D and shaddap.
22:24:34 <oerjan> sure, but that error may be at compile time
22:24:35 <GregorR> http://www.digitalmars.com/d/
22:24:49 <SimonRC> GregorR: ITYM http://www.haskell.org/
22:25:05 <oerjan> also Ocaml if you think haskell is too weird.
22:25:54 <SimonRC> Nah, you miss out on the cool shit like typeclasses and circular definitions.
22:26:19 <oerjan> yes, but on the other hand you get module functors.
22:26:29 <SimonRC> 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:57 <oerjan> essentially, functions from modules to modules.
22:26:58 <SimonRC> bsmntbombdood: seen it before
22:29:38 * SimonRC beats you all: http://e-pig.org/
22:30:01 <SimonRC> Each program contains a correctnes proof embedded in its types.
22:31:05 <oerjan> and not Turing-complete, nanana
22:31:30 <SimonRC> The developers find that you can write all sensible programs in it.
22:32:57 <oerjan> probably. I mean how many times do you need to run an algorithm that you don't know halts...
22:33:49 <oerjan> have you changed trie.c since you posted the link?
22:36:40 -!- tgwizard has joined.
22:41:31 <oerjan> i think bits is worse than 2-bits, which is only twice as good as nybbles.
22:42:42 <oerjan> because bits need 2 children but twice the depth of 2-bits which need 4.
22:44:20 <oerjan> and 4*2 is half of 16.
22:45:47 <bsmntbombdood> I wonder why the constant factor is ~400 and not 128 like it should be
22:46:39 <oerjan> 16*2*4 = 128, you mean?
22:48:42 <oerjan> i was starting to worry you had some serious over-padding there :)
22:48:56 -!- UpTheDownstair has joined.
22:49:31 <oerjan> except - that only applies without sharing.
22:49:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
22:50:04 <oerjan> right, so just the top node
22:52:16 <oerjan> a minor point - you don't need a data section for the half-byte nodes
22:53:52 -!- Arrogant has joined.
22:55:24 <oerjan> you could do it fairly cheap by putting the data section last, and just adjusting the malloc size
22:57:31 -!- UpTheDownstair has changed nick to nazgjunk.
22:59:56 <SimonRC> 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:53 <bsmntbombdood> I didn't know programming languages could get any more mathy
23:01:36 <oerjan> 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 <oerjan> 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 <oerjan> In later versions of Haskell, the type system is so powerful that it is itself Turing-complete.
23:05:56 <SimonRC> with a few command-line switches
23:06:04 <SimonRC> e.g. --allow-undecidable-types
23:06:51 <oerjan> on the other hand, the same has been said of C++.
23:07:25 <oerjan> which shows that sanity is not a requirement. :)
23:07:42 <oerjan> hm, does that mean the _type system_ of C++ is an esolang?
23:08:34 <oerjan> (disclaimer: regarding C++ i am speaking solely from prejudice, having never used it ;)
23:09:49 <oerjan> this leads to the obvious question: could we make a language whose type system is based on brainfuck?
23:11:48 <oklopol> it seems static import means the exact opposite in java and D
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:38 * oerjan bops bsmntbombdood on the head
23:52:41 <bsmntbombdood> http://upload.wikimedia.org/math/4/1/c/41c9dae376e6427b316ac0396b990d63.png
00:05:44 * nazgjunk wtf's, audibly, and then goes to sleep.
00:07:14 <bsmntbombdood> mathmaticians come up with all kinds of crazy notations
00:09:56 -!- crathman has joined.
00:11:57 <oerjan> 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:17:22 -!- crathman_ has joined.
02:29:10 <fizzie> >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' < 'Zilog Z80 assembler'
02:29:19 <fizzie> 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.
11:11:15 -!- tgwizard has joined.
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:03:09 <csaba> 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:36 <EgoBot> 1 ais523: daemon ul bf
13:49:56 <ais523> !ul (Is the Underload interpreter daemon still running after all this time?)S
13:49:59 <EgoBot> Is the Underload interpreter daemon still running after all this time?
13:53:09 <ais523> Now what's happened to EgoBot?
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:54:00 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
13:54:02 <EgoBot> 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:10 <EgoBot> 1 ais523: daemon ul bf
13:55:06 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373003
13:56:09 <ais523> That seemed to work (it sent the end of the message privately), but it could probably do without the prompts and newlines
13:59:14 <ais523> !deadfish funge93 http://pastebin.ca/raw/373012
13:59:24 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373012
14:00:40 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373016
14:02:46 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373016
14:03:12 <ais523> Deadfish has no sensible way to set its single memory value to 0
14:03:29 <ais523> 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 <ais523> !ul (~exec sys.stdout("!deadfish iisso"))S
14:21:36 <EgoBot> ~exec sys.stdout("!deadfish iisso")
14:22:51 <ais523> It would be nice if all EgoBot's interpreters were written in esoteric programming languages
14:23:13 <ais523> 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:30:08 <ais523> 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:10:00 <ais523> Oerjan, your comments lack context to me
16:11:03 <oerjan> ~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 <oerjan> ~exec self.register_raw(~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))))
16:11:53 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1)))))
16:12:00 -!- bsmnt_bot has quit (Remote closed the connection).
16:12:04 -!- bsmnt_bot has joined.
16:12:21 <oerjan> apparently not correct.
16:12:47 <oerjan> ~sys.stdout(repr(1+2))
16:12:57 <oerjan> ~exec sys.stdout(repr(1+2))
16:13:14 <oerjan> ~exec sys.stdout(repr(eval("1+2")))
16:15:30 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1)))))
16:15:36 <oerjan> ~exec sys.stdout(repr(eval("1+2")))
16:15:42 -!- bsmnt_bot has quit (Remote closed the connection).
16:15:44 -!- bsmnt_bot has joined.
16:16:12 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(y.group(1)))
16:16:41 <oerjan> ~exec self.raw_regex_queue.pop()
16:17:31 <oerjan> strange. must be that darn scope again.
16:18:00 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2)))))
16:18:27 <oerjan> >>> "Pascal" < "Python"
16:19:41 <ais523> Maybe it would be possible to do something similar to that to get an Underload/Python quine going
16:20:30 <ais523> ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2)))
16:20:35 <oerjan> >>>"C++" < "Everything"
16:20:55 <ais523> I don't really know much Python
16:22:06 <ais523> >>>"Does this work for me too?"
16:22:33 <ais523> >>>sys.stdout("Nested printing")
16:23:15 <bsmnt_bot> <_sre.SRE_Match object at 0xb7c6b0f8>
16:23:36 <bsmnt_bot> ':ais523!n=chatzill@chillingi.eee.bham.ac.uk PRIVMSG #esoteric :>>>x'
16:24:23 -!- bsmnt_bot has quit (Remote closed the connection).
16:24:25 -!- bsmnt_bot has joined.
16:24:47 <ais523> I suppose I shouldn't have done that, really, but I wanted to see how it would handle the eval loop
16:25:00 <ais523> >>>'Is this still working?'
16:25:08 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2)))))
16:25:26 <ais523> >>>"'this string contains single quotes'"
16:25:27 <bsmnt_bot> "'this string contains single quotes'"
16:25:41 <ais523> >>>"'single"+'"double'
16:26:44 <ais523> that would be a quine-by-cheating if it weren't for the repr()
16:27:22 <oerjan> I wanted it to give approximately the same output as the Python repl loop
16:28:18 <ais523> I wonder why my non-repr'd and eval'd version above didn't work?
16:28:44 <ais523> maybe it's because I can't count parentheses
16:29:05 <ais523> "~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2)))"
16:29:28 <ais523> no, I did count correctly
16:29:40 <oerjan> perhaps % has a regexp meaning
16:30:05 <ais523> 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 <ais523> but I could always change to some other character instead
16:30:29 <ais523> ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2)))
16:30:41 <oerjan> you mispled S+ as S_ in there
16:30:50 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2)))
16:31:17 <oerjan> that may have been the original problem too
16:31:37 <ais523> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:42 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:46 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:50 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:54 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:58 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:02 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:06 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:10 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:14 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:18 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:22 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:33:39 <oerjan> you might be able to do it just with ~exec sys.stdout(...) as well
16:34:13 <ais523> !daemon ul bf http://pastebin.ca/raw/36774
16:34:49 <ais523> 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 <ais523> i.e. whatever representation you use for the string delimiter, it can't be used inside the string without backslashing it
16:35:37 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:35:58 <ais523> I have no idea what random code I fed EgoBot by mistake there...
16:36:12 <oerjan> apparently it did _something_
16:36:28 <ais523> that's not difficult in BF if you have enough dots in the program
16:36:48 <ais523> but it's interesting that it came up with characters that aren't near the end of the ASCII scale
16:37:33 <oerjan> there are plenty of - in Lisp.
16:38:18 <ais523> of course, I never quite got used to using - as part of a variable name
16:38:48 <ais523> 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 <oerjan> all the loops are essentially []
16:41:42 <oerjan> my guess is the first of them is infinite, since there is only one > in the program, which comes later.
16:42:44 <ais523> yes, the program's essentially ------(lots more minuses and some dots)----[] from a BF point of view, which is pointless
16:45:44 <EgoBot> ais523 did get the right page this time
16:46:30 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
16:46:32 <EgoBot> 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 <ais523> !irp Say "Hello, world!", please!
16:47:25 <oerjan> <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373003
16:47:59 <ais523> yes, there was a call for Deadfish interpreters other than the reference one, so I wrote one in Befunge-93
16:48:06 <ais523> My first Befunge-93 program, as it happens
16:48:33 <oerjan> i thought that the poster was carelessly vague on the language :)
16:48:48 <ais523> but 373016 is the EgoBot-ised version that doesn't give prompts and which doesn't print newlines except when outputting
16:49:04 <GregorR> Y'know, I could add a sensible interpreter if you asked me to :P
16:49:07 <ais523> I even preserved the bugs in the reference interpreter
16:49:23 <ais523> !irp Tell GregorR that EgoBot does IRP now.
16:49:38 <GregorR> Well that worked great X-P
16:50:08 <GregorR> For a quarter of a second, you'd fooled me.
16:50:46 <ais523> I got it to do Underload and Deadfish without cheating, though
16:51:03 <ais523> (using Keymaker's BF code for the Underload and my Befunge-93 code for the Deadfish)
16:51:18 <GregorR> Its daemon support isn't particularly reliable *shrugs*
16:53:29 <ais523> once you get used to the requirements for newlines in strategic places, though, it's not too hard to use
16:54:27 <ais523> According to the Deadfish reference interpreter, the value becomes 0 whenever it was previously exactly -1 or exactly 256
16:54:50 <ais523> but squaring makes it possible to jump past 256, and then it's very tedious to take it back down again
16:57:57 <oerjan> squaring is module size(int), isn't it?
16:58:31 <ais523> presumably, but I don't know what maxint for the Befunge-93 interpreter is
16:58:36 <ais523> It shouldn't be too hard to find out
16:59:28 <ais523> so that's probably an indication of maxint's value
17:01:21 <ais523> because 43046721 squared is 6954FE21E3E81 in hex
17:01:42 <ais523> and -501334399 is (infinite number of F's) E21E3E81
17:02:09 <ais523> Of course, it could be anywhere from 29 bits to 36 with that information, but 32's a good guess
17:03:42 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373016
17:04:24 <EgoBot> 1 ais523: daemon ul bf
17:04:26 <EgoBot> 2 ais523: daemon deadfish funge93
17:04:28 <EgoBot> 3 ais523: daemon irp bf
17:05:52 <oerjan> this means that once you have assured the number is even, you can get it back to 0 by 5 squarings.
17:06:40 -!- jix__ has joined.
17:08:43 <oerjan> in general, 5 squarings, 1 increment, then 5 more squarings.
17:09:03 <oerjan> and you will have either 0 or 1.
17:09:23 <oerjan> which incidentally gives an actual algorithm for testing evenness
17:09:30 <ais523> 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 <ais523> Of course, sssssisssssd will get it to 0 guaranteed
17:10:33 <oerjan> does -1 have a square root? that could mess things up a bit
17:11:25 <oerjan> 256 is less important in this case, since you want to reach 0 anyhow
17:11:26 <ais523> no; -1 equals 2^(even number)-1 equals (some number)^2-1 equals (some number plus 1)(some number minus 1)
17:11:50 <ais523> 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 <ais523> and they can't share an odd factor because they differ by 2
17:13:31 <ais523> you know, with an extra register and some sort of flow control Deadfish could actually become a useful language
17:14:58 <ais523> I wonder what my JOIN message looks like from bsmnt_bot's point of view?
17:15:49 <oerjan> basically i think it is :ais523... JOIN #esoteric
17:16:04 <ais523> ~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 <bsmnt_bot> :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric
17:16:21 <oerjan> possibly JOIN :#esoteric, since they are equivalent
17:16:22 <bsmnt_bot> :oerjan!n=oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :possibly JOIN :#esoteric, since they are equivalent
17:16:58 <ais523> maybe we could get a bsmnt_bot welcoming service going
17:17:09 <oerjan> ~exec self.raw_regex_queue.pop()
17:17:38 <ais523> I was just looking for that command in the logs when you typed it...
17:18:30 <oerjan> i had it in my own history.
17:19:27 <ais523> ~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:20:01 <ais523> ~exec self.raw_regex_queue.pop()
17:20:19 <ais523> ~exec self.register_raw(r":([^!]*)[^ ]* JOIN.*", lambda x,y: sys.stdout("Hello, "+y.group(1)+"!"))
17:20:40 <ais523> that should do for now
17:21:01 <ais523> I need to add the fast-loading low-fanciness logs to the wiki
17:21:28 <oerjan> the tunes one, you mean
17:21:56 <oerjan> yeah, the others have recently become nearly unbearably slow
17:23:26 <oerjan> Something intermediate would have been nice.
17:23:44 -!- kxspxr has joined.
17:23:58 -!- kxspxr has quit (Client Quit).
17:24:17 <ais523> I think bsmnt_bot frightened them off, probably
17:24:17 <oerjan> hm, this _could_ become annoying after netsplits.
17:24:43 <ais523> but then bsmnt_bot would probably just get kicked temporarily for flooding
17:24:58 <ais523> just like happens to EgoBot if you feed it an infinite loop that outputs something by mistake
17:25:04 <oerjan> except that i think it does its own throttling
17:25:41 <oerjan> EgoBot throttles too, but I think it has problems with huge lines
17:25:45 <ais523> but bsmnt_bot isn't throttled
17:26:04 <ais523> ~exec sys.stdout("a\nb\nc\nd\ne\nf\ng\nh")
17:26:12 <oerjan> i thought i remembered bsmntbombdood saying he put throttling on sys.stdout
17:26:21 <ais523> oh, the throttle only kicks in after 4 lines
17:26:21 <oerjan> in fact i think we discussed how to do it
17:26:26 <ais523> which is why I hadn't noticed it before
17:27:03 <oerjan> on the other hand the IRC network may do its own throttling in border cases
17:27:45 <oerjan> i don't know but it's suggested by the original RFC
17:29:05 <oerjan> btw i am not sure your argument that -1 has no square root mod 2^n holds
17:29:33 <ais523> no, it's an argument that -1 has no square root mod 4^n
17:29:36 <ais523> which applies in this case
17:30:32 <ais523> 4^n-1 = (2^n-1)(2^n+1)
17:30:44 <ais523> both brackets are odd, and so have no even factors
17:30:52 <ais523> they can't both be square numbers because they differ by 2
17:31:06 <ais523> and because they differ by 2, they can't share an odd factor
17:31:15 <oerjan> but the square could be a*4^n-1
17:31:31 <ais523> of course, I missed that
17:39:29 <ais523> anyway, even if -1 is hit in the sequence it isn't a problem
17:39:35 -!- anonfunc has quit.
17:39:41 <ais523> because you still end up with 0 or 1 before the final d
17:41:24 <oerjan> 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 <ais523> 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 <oerjan> could use a strange number ring.
17:42:55 <oerjan> in which 2^32 = 0, but there are infinitely many odd numbers
17:43:30 <ais523> you could define any number that's a multiple of 2^32 to be 0
17:43:41 <ais523> much the same way as 256 is defined to be 0 in Deadfish
17:44:51 <oerjan> well, since the language already has that strangeness.
17:44:58 <ais523> the reference interpreter defines the data type to be 'unsigned int' from C
17:45:24 <ais523> it's on the wiki. I wonder if this makes the test against -1 redundant?
17:45:34 <ais523> or if the -1 is converted to unsigned before the test?
17:45:48 <oerjan> one way or the other there has to be a conversion
17:46:12 <ais523> 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 <ais523> so we may as well make it infinite
17:46:53 <oerjan> if we make it infinite we need to modify d
17:47:05 <oerjan> put the -1 test there instead.
17:47:26 <ais523> and simultaneously deal with the signed-vs-unsigned problem
17:47:38 -!- sebbu2 has joined.
17:49:25 <oerjan> i have a vague idea that there are no square roots of -1 for proper prime powers
17:49:46 <oerjan> let me look up the mobius function
17:50:18 <ais523> one of my few esolangs I never wrote an interpreter for
17:50:29 <oerjan> i have considered doing it
17:50:37 <oerjan> but never got around to it
17:52:11 <ais523> of course, Forte is limited to nonnegative integers
17:52:54 <ais523> apparently. I had to read the spec again though to make sure
17:53:12 <oerjan> how is - defined then?
17:54:17 <ais523> 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 <ais523> I'll go and fix it now
17:55:41 <ais523> OK, - is now officially undefined if it would lead to a negative result
17:56:58 <ais523> or it would be if the wiki hadn't crashed the instant I tried to save
17:58:01 <oerjan> i hope it wasn't because i immediately tried to load the page
17:58:34 <oerjan> the justification for Forte resembles the justification for Smetana :)
18:00:43 <ais523> 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 <ais523> that's why there's a colon line-break provision
18:01:26 <ais523> 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:13 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
18:07:05 -!- sebbu has quit (Connection timed out).
18:09:48 <oerjan> I think I'll change your edit into a table.
18:12:22 <ais523> Yes, that looks better.
18:14:45 -!- NK\ has changed nick to NK`.
18:19:22 -!- ais523 has quit.
18:42:58 * oerjan finds a suspicious absense of information about square roots mod n when n is a prime power
18:45:13 <oerjan> if there are none mod 4 then there cannot be any mod 4n either.
18:47:21 -!- calamari has joined.
18:48:33 <oerjan> >>> "C++" > "Calamari"
18:48:45 <oerjan> bsmnt_bot doesn't agree
18:50:24 -!- goban has quit (Read error: 104 (Connection reset by peer)).
18:51:01 <calamari> error: request for member 'allocate' in 'MyObject::pool', which is of non-class type 'Pool*'
18:51:21 -!- goban has joined.
18:51:31 <calamari> I think Java is messing me up hehe
18:54:36 <calamari> ahh, I was using . when I should have been using ->
18:59:36 -!- crathman has joined.
19:02:30 <oerjan> no, it's bsmntbombdood's
19:02:54 <oerjan> but me and ais523 played a bit with it
19:04:03 <oerjan> he is responsible for the greetings.
19:08:46 -!- goban has quit (Connection timed out).
19:08:59 -!- goban has joined.
19:18:54 -!- goban has quit (Read error: 54 (Connection reset by peer)).
19:19:09 -!- goban has joined.
19:21:24 <bsmntbombdood> oerjan: yeah, sys.stdout is throttled, but not for multiple calls
19:22:34 -!- bsmnt_bot has quit (Remote closed the connection).
19:22:37 -!- bsmnt_bot has joined.
19:22:51 <oerjan> it does only expressions.
19:23:19 <oerjan> can exec return the result?
19:25:01 <oerjan> hmph. so neither eval nor exec will work as repl for statements.
19:26:41 <oerjan> just as well to have two different commands then. But you should do something about bsmnt_bot crashing on syntax errors.
19:27:15 <oerjan> i mean, shouldn't a do_exec be isolated?
19:28:08 <bsmntbombdood> when callbacks all executed, exceptions aren't caught
19:34:02 <bsmnt_bot> NameError: name '__names__' is not defined
19:34:09 <bsmnt_bot> NameError: name '__globals__' is not defined
19:34:45 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
19:34:58 <lament> ~exec print type(type)
19:34:59 <bsmntbombdood> ~exec exec "def protected(f): try:\n return f()\n\except:\n pass\n\nself.protected = protected"
19:36:24 <oerjan> do callbacks run in threads or just do_exec's
19:36:49 <lament> ~exec sys.stdout("hello")
19:37:12 <oerjan> eh, so do_exec's don't run in threads either?
19:37:18 <lament> ~exec sys.stdout(sys.version)
19:37:32 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
19:37:34 <oerjan> that's what i thought.
19:37:44 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
19:37:51 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
19:38:06 <lament> ~exec sys.stdout(sys.path)
19:38:09 <oerjan> so protected should do so as well, otherwise a repl based on it may lock up the bot.
19:38:11 <bsmnt_bot> ['/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 <bsmntbombdood> ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected"
19:38:38 <lament> can you define functions?
19:39:15 <oerjan> sure, but you need to use exec with strings and \n escapes
19:39:52 <lament> ~~exec sys.stdout(locals())
19:39:54 <lament> ~exec sys.stdout(locals())
19:39:55 <bsmnt_bot> {'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 <lament> ~exec sys.stdout(self.__dict__)
19:40:25 <bsmnt_bot> {'commands_running_lock': <thread.lock object at 0xb7d10100>, 'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'commands_running': [('sys.stdout(self.__dict__)', 1172518674.4520161, ({'thread_info': <thread._local object at 0xb7cd5890>, 'exec_global_tracer': <function exec_global_tracer at 0xb7c3da74>, 'pprint': <module 'pprint' from '/usr/lib/python2.4/pprint.pyc'>, 're
19:40:26 <bsmnt_bot> ': <module 're' from '/usr/lib/python2.4/re.pyc'>, 'SysWrapper': <class __main__.SysWrapper at 0xb7c393bc>, 'exec_local_tracer': <function exec_local_tracer at 0xb7c4d454>, '__doc__': None, 'math': <module 'math' from '/usr/lib/python2.4/lib-dynload/math.so'>, 'IRCbot': <class __main__.IRCbot at 0xb7c3935c>, 'args': {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan
19:40:26 <bsmnt_bot> ': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d'], 'owner': 'bsmntbombdood!\\S*gavin@\\S*'}, '__builtins__': <module '__builtin__' (built-in)>, '__file__': '/bot/ircbot.py', 'inspect': <module 'inspect' from '/usr/lib/python2.4/inspect.pyc'>, 'IRCFileWrapper': <class __main__.IRCFileWrapper at 0xb7c3938c>, 'sys': <module '
19:40:29 -!- bsmnt_bot has quit (Excess Flood).
19:40:32 -!- bsmnt_bot has joined.
19:40:46 -!- goban has quit (Connection timed out).
19:41:21 -!- goban has joined.
19:41:29 <oerjan> there may be something about long lines and flooding
19:42:04 <lament> ~exec self.owner = 'lament!\\S*lament@\\S*'
19:42:24 <lament> ~exec sys.stdout(self.owner)
19:43:19 <lament> and self.owner is never looked up again?
19:44:30 <lament> ~exec open('lament', 'w').write('hello')
19:44:31 <bsmnt_bot> IOError: [Errno 13] Permission denied: 'lament'
19:45:27 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
19:45:32 <bsmnt_bot> ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'start.sh', 'better.sh', 'ircbot.py']
19:47:32 <lament> ~exec os.remove('/bot/test.pickle') and os.mkdir('/bot/test.pickle') and open('/bot/test.pickle/lament', 'w').write('hello')
19:47:33 <bsmnt_bot> OSError: [Errno 13] Permission denied: '/bot/test.pickle'
19:48:22 <oerjan> that's not immensely clever.
19:48:41 <oerjan> well, now nothing is writable.
19:49:12 <lament> oerjan: shhh, that's only until we get root
19:49:34 <bsmnt_bot> NameError: name 'sys' is not defined
19:49:51 <bsmntbombdood> SimonRC: that will only effect it for the current exec
19:49:54 -!- NK` has changed nick to NK`divx.
19:55:19 <lament> ~exec sys.stdout(os.popen('ls').read())
19:56:10 <SimonRC> ~exec sys.stdout(sys.__dict__)
19:56:11 <bsmnt_bot> {'_SysWrapper__sys': <module 'sys' (built-in)>, 'stderr': <__main__.IRCFileWrapper instance at 0xb7c2f62c>, 'stdout': <__main__.IRCFileWrapper instance at 0xb7c2f5ec>}
19:57:00 <SimonRC> ~exec [i.clear() for i in sys.__dict__]
19:57:01 <bsmnt_bot> AttributeError: 'str' object has no attribute 'clear'
19:57:17 <SimonRC> ~exec [i.__dict__.clear() for i in sys.__dict__]
19:57:18 <bsmnt_bot> AttributeError: 'str' object has no attribute '__dict__'
19:57:31 <SimonRC> ~exec sys.__dict__.clear()
19:57:35 -!- bsmnt_bot has quit (Remote closed the connection).
19:57:38 -!- bsmnt_bot has joined.
19:57:50 <SimonRC> ~exec sys.__dict__.clear()
19:58:02 <SimonRC> 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:35 -!- goban has quit (Connection timed out).
19:58:42 -!- goban has joined.
19:59:02 <bsmntbombdood> there's a method, __getattr__, that gets called when a attribute on a object that's not there is looked up
19:59:32 <bsmntbombdood> if gettattr gets an attribute from it's self that isn't there, it recurses forever
20:00:00 <SimonRC> hmm http://www.angryfacts.com/
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 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'protected'
22:30:27 <bsmntbombdood> ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected"
23:01:56 -!- digital_me has joined.
23:02:05 <oklopol> ~exec print "I wanna play too :<"
23:05:02 <oklopol> ~exec sys.stdout("Does this work?")
23:05:23 <oklopol> ~exec sys.stdout([i+1 for i in range(3)])
23:05:39 <oklopol> ~exec sys.stdout((i for i in range 3))
23:05:52 <oklopol> ~exec sys.stdout((1,2,3,4))
23:07:57 <oklopol> ~exec sys.stdout(map((lambda a : a+"."),["a","b","c","d"]))
23:08:27 <oklopol> non-pure... non-imperative?
23:08:35 <oklopol> i'm a bit lost on terms from time to time
23:09:06 <bsmntbombdood> of course, side effects would have to be _required_ to be sufficiently esoteric
23:09:55 <oklopol> i've been thinking about this esolang where functions have every arithmetic operation defined
23:10:11 <oklopol> and somehow the programmer would be forced to use that feature of course
23:11:03 <oklopol> a lang where functions are _really_ first-class citizens
23:11:22 <oklopol> that is of course already done with math
23:12:44 <oerjan> instance Num a => Num (b -> a)
23:12:52 <oklopol> can you do arithmetic for functions in haskell by default?
23:13:10 <oerjan> nope, you need the instance i mentioned :)
23:14:32 <oklopol> but i wouldn't use the same basic arithmetic operations
23:14:56 <oklopol> so it wouldn't make sence like that
23:15:35 -!- sebbu2 has joined.
23:15:51 <oklopol> i find that the same thing you did with haskell
23:16:13 <oklopol> you think too functional, i've already shifted to stacks
23:16:25 <oklopol> much more esoteric when you shuffle stack operations
23:18:30 <oklopol> 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:19:14 <oklopol> normal form might mean there is no function anymore
23:20:11 <oklopol> 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 <oklopol> the crazy operation in malbolge is boring since it seems so random, i think it should be more logical, but craziers
23:21:53 <oklopol> hmm... maybe i think about this at school tomorrow
23:22:28 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
23:22:41 <bsmnt_bot> NameError: name 'fooo' is not defined
23:23:02 -!- nazgjunk has joined.
23:23:25 <oklopol> ~exec foo="self.stdout(\"okokokoko\")"
23:23:33 <bsmnt_bot> NameError: name 'foo' is not defined
23:23:58 <oklopol> ~exec self.dict(foo)="self.stdout(\"okokokoko\")"
23:23:59 <bsmnt_bot> SyntaxError: can't assign to function call (<string>, line 1)
23:24:07 <oklopol> ~exec self.dict[foo]="self.stdout(\"okokokoko\")"
23:24:08 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'dict'
23:24:17 <oklopol> ~exec self.__dict__[foo]="self.stdout(\"okokokoko\")"
23:24:18 <bsmnt_bot> NameError: name 'foo' is not defined
23:24:24 <oklopol> ~exec self.__dict__["foo"]="self.stdout(\"okokokoko\")"
23:24:30 <bsmnt_bot> NameError: name 'foo' is not defined
23:24:40 <oklopol> ~exec exec(self.__dict__["foo"])
23:24:40 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'stdout'
23:24:59 <oklopol> ~exec self.__dict__["foo"]="sys.stdout(\"okokokoko\")"
23:25:04 <oklopol> ~exec exec(self.__dict__["foo"])
23:28:50 <oklopol> ~exec self.__dict__["oko"]=[]
23:29:00 <oklopol> ~exec sys.stdout(self.__dict__["oko"])
23:29:08 <oklopol> ~exec self.__dict__["oko"].append("sdfg")
23:29:09 <oklopol> ~exec sys.stdout(self.__dict__["oko"])
23:35:07 -!- sebbu has quit (Read error: 110 (Connection timed out)).
23:37:11 <oklopol> self.__dict__["B"].append("def brainfuck(code):")
23:37:11 <oklopol> self.__dict__["B"].append(" cntr=0")
23:37:11 <oklopol> self.__dict__["B"].append(" i=0")
23:37:11 <oklopol> self.__dict__["B"].append(" memi=0")
23:37:11 <oklopol> self.__dict__["B"].append(" mem=[]")
23:37:11 <oklopol> self.__dict__["B"].append(" for i in range(30000):")
23:37:13 <oklopol> self.__dict__["B"].append(" mem.append(0)")
23:37:15 <oklopol> self.__dict__["B"].append(" i=0")
23:37:35 <oklopol> ~exec self.__dict__["B"]=[]
23:38:29 <oklopol> ~exec self.__dict__["B"].append("def brainfuck(code):")
23:38:29 <oklopol> ~exec self.__dict__["B"].append(" cntr=0")
23:38:29 <oklopol> ~exec self.__dict__["B"].append(" i=0")
23:38:29 <oklopol> ~exec self.__dict__["B"].append(" memi=0")
23:38:29 <oklopol> ~exec self.__dict__["B"].append(" mem=[]")
23:38:30 <oklopol> ~exec self.__dict__["B"].append(" for i in range(30000):")
23:38:31 <oklopol> ~exec self.__dict__["B"].append(" mem.append(0)")
23:38:34 <oklopol> ~exec self.__dict__["B"].append(" i=0")
23:38:44 <oklopol> ~exec sys.stdout(self.__dict__["B"])
23:38:45 <bsmnt_bot> ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0']
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" while i<len(code):")
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" if code[i]==\'+\':")
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" mem[memi]+=1")
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\'-\':")
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" mem[memi]-=1")
23:39:07 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\'>\':")
23:39:09 <oklopol> ~exec self.__dict__["B"].append(" memi+=1")
23:39:11 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\'<\':")
23:39:14 <oklopol> ~exec self.__dict__["B"].append(" memi-=1")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\'.\':")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" sys.stdout(chr(mem[memi]))")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" #elif code[i]==\',\':")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" #mem[memi]=input()")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\'[\':")
23:39:28 <oklopol> ~exec self.__dict__["B"].append(" if mem[memi]==0:")
23:39:31 <oklopol> ~exec self.__dict__["B"].append(" i+=1")
23:39:33 <oklopol> ~exec self.__dict__["B"].append(" opens=1")
23:39:35 <oklopol> ~exec sys.stdout(self.__dict__["B"])
23:39:36 <bsmnt_bot> ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0', ' while i<len(code):', " if code[i]=='+':", ' mem[memi]+=1', " elif code[i]=='-':", ' mem[memi]-=1', " elif code[i]=='>':", ' memi+=1', " elif code[i]=='<':", '
23:39:36 <bsmnt_bot> 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 <oklopol> ~exec self.__dict__["B"].append(" while opens!=0:")
23:39:48 <oklopol> ~exec self.__dict__["B"].append(" if code[i]==\'[\':")
23:39:48 <oklopol> ~exec self.__dict__["B"].append(" opens+=1")
23:39:48 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\']\':")
23:40:06 <oklopol> soon either i get kickbanned or the bot dies...
23:40:11 <oklopol> ~exec self.__dict__["B"].append(" opens-=1")
23:40:11 <oklopol> ~exec self.__dict__["B"].append(" i+=1")
23:40:11 <oklopol> ~exec self.__dict__["B"].append(" i-=1")
23:40:11 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\']\':")
23:40:11 <oklopol> ~exec self.__dict__["B"].append(" if mem[memi]!=0:")
23:40:12 <oklopol> ~exec self.__dict__["B"].append(" i-=1")
23:40:23 <oklopol> ~exec self.__dict__["B"].append(" opens=1")
23:40:23 <oklopol> ~exec aelf.__dict__["B"].append(" while opens!=0:")
23:40:23 <oklopol> ~exec self.__dict__["B"].append(" if code[i]==\'[\':")
23:40:23 <oklopol> ~exec self.__dict__["B"].append(" opens-=1")
23:40:23 <oklopol> ~exec self.__dict__["B"].append(" elif code[i]==\']\':")
23:40:24 <bsmnt_bot> NameError: name 'aelf' is not defined
23:40:24 <oklopol> ~exec self.__dict__["B"].append(" opens+=1")
23:40:27 <oklopol> ~exec self.__dict__["B"].append(" i-=1")
23:40:29 <oklopol> ~exec self.__dict__["B"].append(" i+=1")
23:40:30 <oklopol> ~exec self.__dict__["B"].append(" i+=1")
23:41:17 <oklopol> ~exec self.__dict__["B"] = reduce(lambda a,b : a+"\n"+b, self.__dict__["B"])
23:41:36 <oklopol> ~exec brainfuck("+++++++.")
23:41:36 <bsmnt_bot> NameError: name 'brainfuck' is not defined
23:42:05 <oklopol> can i dump B as a function somehow?
23:42:16 <oklopol> i don't really know how that works, just testing :P
23:42:18 <bsmntbombdood> ~exec exec "\n".join(self.B) + "self.brainfuck = brainfuck"
23:42:42 <oklopol> oh, yeah, that's a nice syntax
23:43:17 <oklopol> ~exec "\n".join(self.B) + "self.brainfuck = brainfuck"
23:43:31 <bsmnt_bot> NameError: name 'brainfuck' is not defined
23:44:01 <oklopol> bsmntbombdood, help me! :D
23:44:38 <oklopol> it's a function, how do i do that? :o
23:45:06 <oklopol> ~exec eval("brainfuck(+++.)")
23:45:16 <oklopol> ~exec exec("brainfuck(+++.)")
23:46:03 <oklopol> i just took a random thingie
23:47:05 <oklopol> ~exec exec(self.__dict__["B"])
23:47:18 <oklopol> ~exec eval(self.__dict__["B"])
23:47:37 <oklopol> might be a copy paste error
23:49:02 <bsmntbombdood> look in #bsmnt_bot_errors to see where the errors are
23:49:29 <oklopol> ~exec exec(self.__dict__["B"])
23:52:53 <oklopol> 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 <oklopol> maybe i'll make a bit shorter an interpreter...
00:11:36 <oklopol> 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:18 <wooby> not a thing, how goes it RodgerTheGreat
04:40:59 <RodgerTheGreat> I have a little backburner project for a boolean logic/ queue based language that's progressing pretty nicely
04:41:23 <RodgerTheGreat> 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:19:11 <Sukoshi> Taking a break after a hectic spring vacation of 70+ pages of homework.
05:19:43 <Sukoshi> And a Chip-8 emulator in a semi-finished state.
05:20:23 <Sukoshi> I'm too tired to bug hunt now.
05:20:24 -!- digital_me has quit ("Lost terminal").
05:22:28 <RodgerTheGreat> 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:28:23 <Sukoshi> You mean, if there's an already written-to portion of the screen?
05:29:10 <Sukoshi> Well, the docs say ``if 1, then flip to 0, if 0, then flip to 1. Use XOR''
05:29:12 <RodgerTheGreat> it's actually a really clever way of allowing for "collision" with virtually no code
05:29:35 <Sukoshi> I know next-to-nothing about game programming.
05:29:39 <Sukoshi> But I know about processors :P
05:29:51 <RodgerTheGreat> 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 <RodgerTheGreat> I dabble a bit in game programming... <shameless plug>http://rodger.nonlogic.org/games/Neon2</shameless plug>
05:30:59 <Sukoshi> 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 <Sukoshi> 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:36:14 <Sukoshi> Yeah, I was too lazy to create an opcode.
05:36:45 <Sukoshi> Plus I wanted this to be as light as I could. Only two opcodes actually use arithmetic operations.
05:37:39 <RodgerTheGreat> I'll bet your compiler makes little purring sounds when you feed it your code
05:37:55 <Sukoshi> Bit-twiddling is my specialty. It always has.
05:38:04 <Sukoshi> Darn BCD code made me use arithmetic. Grr. I art angry.
05:38:27 <wooby> RodgerTheGreat: awesome
06:01:46 <RodgerTheGreat> this is hilarious: http://static.flickr.com/107/291066616_75d02b4dba_o.jpg
06:04:20 <RodgerTheGreat> of course, this will always be a classic: http://b.armory.com/~relsqui/pictures/misc/stuff.gif
06:15:00 -!- calamari has quit ("Leaving").
06:15:30 -!- wooby has quit.
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.
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 <oklopol> python's inheritance... how do i access a parent? class b(a): ... self.a.? ... ?
22:21:16 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
22:21:34 <oerjan> or perhaps not, maybe you just use the name.
22:21:54 <oklopol> self is how you access the object itself
22:22:13 <oklopol> super seems to convert type -> parent of type
22:22:48 <oklopol> not that i necessarily need inheritance, i've never really liked it
22:22:57 <oklopol> just wondering, since it seems i'm using it :\
22:23:01 <oerjan> you can always look up things in a parent class if you know its name.
22:23:26 -!- nazgjunk has joined.
22:23:31 <oklopol> yeah, but i'd like to get the underlying parent object itself off the self
22:23:59 <oerjan> python is not prototype based.
22:24:26 <oerjan> the object contains a reference to the class, but there is no object corresponding to the super-class.
22:24:44 <oklopol> hmm... i'll go around that i guess then
22:24:45 <oerjan> just a reference from the class to its super-classes.
22:25:34 <oerjan> are you maybe asking how to call a constructor?
22:27:52 <oklopol> i have copy() in my superclass
22:28:14 <oklopol> now my child class has copy too, i'd like to call the upper level copy there
22:28:37 <oerjan> right. do superclass(self,...)
22:29:14 <oerjan> any method call x.method(...) is equivalent to class.method(x,...)
22:29:50 <oerjan> *do superclass.copy(self,...)
22:30:14 <oklopol> global name superclass is not defined
22:30:48 <oerjan> by superclass i mean an expression giving you the superclass you want.
22:31:21 <oerjan> which might most simply be its name.
22:34:03 <oklopol> can i promote a to easily it's child class b if b only adds functionality?
22:35:14 <oklopol> 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 <oklopol> and the upper level copy() returns the parent
22:36:13 <oerjan> right that is specific problem with copy.
22:37:15 <oerjan> the simplest might be to just change the class of the object, i think it is possible in python.
22:37:45 <oklopol> prolly, i'm just not familiar with that kind of twiddling
22:38:08 <oklopol> i'm not familiar with anything when it comes to python actually :P
22:38:45 <oklopol> i've learned the language by writing small functions for one-time use and read a quick tutorial
22:39:09 <oerjan> i think possibly the __class__ attribute can simply be set.
22:40:57 <oklopol> the part i have to do myself :\
22:49:06 <oerjan> argh! http://www.irregularwebcomic.net/118.html
22:52:06 -!- ShadowHntr has joined.
22:57:07 <oklopol> i constantly run out of windows...
22:58:34 <oklopol> sounds like the right hobby for me
22:58:56 <oklopol> and i can't open more -_______-
22:59:42 <oerjan> are all those different programs or maybe you should get something with tabs?
23:00:22 <oklopol> not all of them are different programs
23:00:58 <oklopol> i mean, 70 processes, i only have 25 windows open
23:01:49 <oklopol> 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 <oklopol> hmm, i made no sence there
23:10:27 -!- Qaz has joined.
23:11:11 -!- Qaz has left (?).
23:13:21 -!- UnrelatedToQaz has joined.
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.
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: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: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:07:01 <EgoBot> 1 ais523: daemon ul bf
13:07:03 <EgoBot> 2 ais523: daemon deadfish funge93
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 <oerjan> ais523: you correction needs a correction
13:19:07 <ais523> why, what have I done wrong this time?
13:19:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
13:19:21 <oerjan> there is a line number 100110 :)
13:19:34 <ais523> that's correct, I had to pick an arbitary high number
13:20:12 <ais523> I suppose using 112 would have made more sense, to avoid clashes with the rest of the program
13:20:37 <ais523> 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 <oerjan> i realized that later that evening :)
13:22:05 <oerjan> 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 <oerjan> 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 <ais523> I've just finished writing a new language (although presumably refinements will be needed later)
13:37:48 <ais523> It's a bit like Thue, but deterministic, with flow control, and regexp-based
13:38:18 <ais523> 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:44 <oerjan> btw i am slowly writing a Forte interpreter
13:40:07 <ais523> I've been thinking about one too
13:40:27 <ais523> Anyway, here's the new language reference interpreter: http://pastebin.ca/375628
13:40:41 <ais523> If it had arithmetic, it might be a good language to write Forte in
13:41:03 <oerjan> well i am using Haskell, as usual.
13:41:08 <ais523> (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 <ais523> Hello, World! is a one-liner: /^=1$/Hello, world!=n=x=9/
13:43:16 -!- jix__ has joined.
13:43:22 <oerjan> btw i am adding some BASIC-like debugging commands - RUN LIST BREAK STEP
13:43:44 <ais523> does LIST list using the numbers in the source program, or does it use reassigned integers?
13:44:20 <oerjan> or at least that is the intention.
13:44:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
13:44:49 <oerjan> in fact the interpreter will not keep track of the original numbers.
13:45:06 <oerjan> (other than looking up _from_ them, of course)
13:48:50 <ais523> I need a better INPUT command in Forte
13:49:14 <ais523> 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 <ais523> sort of like gets() in C
13:49:39 <oerjan> string input could work.
13:50:34 <oerjan> you could have INPUT be a function.
13:50:50 <oerjan> so you could modify with arithmetic before storing.
13:51:01 <ais523> 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 <oerjan> but that will still end up confusing characters.
13:51:26 <ais523> so programs could make use of the fact by never modifying those numbers (probably a good idea anyway)
13:51:51 <ais523> the numbers could still be assigned to other numbers, as long as the other numbers were not then modified themselves
13:52:55 <ais523> shouldn't be a problem, for instance
13:54:01 <oerjan> but you could not handle unbounded input length. or could you?
13:54:16 <ais523> you'd just have to use an infinite number of input variables
13:54:32 <oerjan> which means they would have to be calculated.
13:54:39 <ais523> you have to use an infinite number of line labels anyway, so it's not too much of an extra stretch
13:55:00 <oerjan> you mean an infinite length program?
13:55:00 <ais523> the command would have to be INPUTCHAR expression
13:55:25 <ais523> 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:56:05 <oerjan> ok, INPUTCHAR expression it is, then.
13:56:19 <ais523> I'll go and add the INPUTCHAR command, then (what would it be called in BASIC? GET, wasn't it?)
13:56:44 <oerjan> maybe. i suppose it varies by dialect.
13:56:49 <ais523> and if we have GET we may as well have PUT to make it marginally easier to write a BF interpreter
13:57:31 <ais523> (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 <oerjan> reminds me of Unlambda too
13:58:26 <oerjan> so GET expr but PUT number?
13:59:11 <ais523> PUT expr (and INPUT expr) would be more symmetrical
13:59:27 <ais523> I wonder if that would be worth making programs easier-to-write for
13:59:34 <oerjan> in that case, why not LET expr=expr?
13:59:58 <ais523> that would lose the link with BASIC, but why not
14:00:05 <ais523> the language is hard enough to write in anyway
14:00:41 -!- jix has quit (Read error: 110 (Connection timed out)).
14:15:35 -!- nazgjunk has joined.
15:01:24 -!- nazgjunk has quit ("Leaving").
15:22:40 -!- crathman has joined.
15:43:40 <ais523> Damn, I just discovered that the IOCCC was open
15:43:50 <ais523> and that it ends midnight today UTC
15:44:00 <ais523> Luckily I had a program ready...
15:48:45 <oerjan> 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: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.