00:17:18 -!- sebbu2 has quit (Client Quit). 00:24:02 -!- UpTheDownstair has joined. 00:24:20 -!- UpTheDownstair has quit (Client Quit). 00:24:34 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 00:25:46 bsmntbombdood: bah. 00:25:52 Modern GC isn't slow. 00:26:19 oh? 00:26:35 A program using GC that is written for use with GC will generally be about as fast as one with explicit allocation. 00:26:57 Remember, the programmer can only do static analysis of a program, but the RTS can do dynamic analysis. 00:27:22 GC is sometimes faster than explicit allocation and sometimes not. 00:28:44 -!- nazgjunk has joined. 00:30:20 -!- kxspxr has joined. 00:31:04 copying collectors are particularly good at improving locality 00:50:33 ~ski ``Kxy 00:50:41 ~exec import ski_repl 00:50:59 ~exec globals()["ski_repl"] = __import__("ski_repl") 00:51:10 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~ski (.*)", lambda x,y: bot.raw("PRIVMSG %s :%s" % (y.group(1), ski_repl.unparse(ski_repl.simp(ski_repl.parse(y.group(2))))))) 00:51:21 ~ski ``Kxy 00:51:21 x 00:53:45 ~exec replace = lambda t,a,b: (t == a and b) or [replace(t[0], a, b), replace(t[1], a, b)] 00:54:58 hmm 00:55:20 ~exec sys.stdout(replace([[1,2],[3,4]], 1, 42)) 00:55:31 crap 00:55:39 scoping got messed up 00:55:54 ~exec pprint.pprint(locals(), sys.stdout) 00:55:55 {'replace': at 0xb7c046bc>, 00:55:55 'self': <__main__.IRCbot instance at 0xb7c0308c>, 00:55:55 'ski_repl': , 00:55:56 'x': 12} 00:55:59 -!- ihope has joined. 00:56:07 ~exec sys.stdout(replace) 00:56:07 at 0xb7c046bc> 00:56:17 wtf? 00:56:26 ~exec replace(1,1,2) 00:56:37 ~exec sys.stdout(replace(1,1,2)) 00:56:38 2 00:56:50 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:57:00 w.t.f 00:57:28 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:57:33 time to go all combinatory logic on his ass 00:57:41 I think you need to define replace. 00:57:48 ...wait... 00:57:48 ~exec U = lambda f: f(f) 00:57:52 i did 00:58:04 I see. 00:58:22 ~exec sys.stdout(replace(1,1,2)) 00:58:23 2 00:58:28 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 00:58:48 ~exec replace = U(lambda f: lambda t,a,b: (t == a and b) or [f(f)(t[0], a, b), f(f)(t[1], a, b)]) 00:59:07 ~exec sys.stdout(replace([[1,2],[3,1]],1,2)) 01:06:02 -!- ihope has quit ("http://tunes.org/~nef/logs/esoteric/06.08.09"). 01:09:08 -!- ihope has joined. 01:17:29 oh, oops 01:17:32 that was stupid 01:22:23 k 01:22:59 ~exec replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:23:28 ~exec sys.stdout(replace([[1,2],[3,1]], 1, 42)) 01:23:29 [[42, 2], [3, 42]] 01:23:33 guten 01:25:27 ~exec iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:25:38 ~exec sys.stdout(iota_comb) 01:25:40 [['S', [['S', 'I'], ['K', 'S']]], ['K', 'K']] 01:26:56 ~exec un_iota = lambda x: replace(x, iota_comb, "i") 01:27:17 Unlambda parser? 01:28:10 more like Lazy K 01:28:19 ~exec sys.stdout(ski_repl.parse("C")) 01:28:20 C 01:28:22 ~exec iota = lambda x: ski_repl.unparse(un_iota(ski_repl.simp(replace(ski_repl.parse(x), "i", iota_comb)))) 01:28:24 How nice. 01:28:31 ~exec sys.stdout(ski_repl.parse("`CK")) 01:28:32 ['C', 'K'] 01:28:57 yeah, it can parse unlambda 01:29:02 ~exec sys.stdout("C".(ski_repl.parse)) 01:29:14 Well, that clearly didn't work. 01:29:18 ~exec sys.stdout("C".ski_repl.parse) 01:29:20 somehow i doubt that :) 01:29:22 wow, what language is that valid in? 01:29:33 ~exec sys.stdout("C".parse.ski_repl) 01:29:40 Indeed. 01:29:52 ~exec sys.stdout(iota("`ii")) 01:30:04 ~exec foo = sys.stdout; ski_repl.parse("C").foo 01:30:16 Indeed, it... hmm. 01:30:20 Sir, you are crazed 01:30:28 ~exec sys.stdout(ski_repl.parse("`.i`.Hi")) 01:30:29 ['.', 'i'] 01:30:39 oerjan: except for that :) 01:30:40 Okay, doesn't work. 01:30:41 nah, it can't parse Unlambda ;) 01:31:43 ~exec un_iota([]) 01:31:53 oh come on 01:32:02 Problem: If you decide to be cryogenically preserved for 1000 years, future generations may not think you are worth keeping or restoring to life. Solution: Attach a sign saying "COBOL Programmer". This will ensure your safety. 01:32:06 closure are super screwed :( 01:32:33 that one is just too old :) 01:32:34 so, this scoping doesn't work 01:32:46 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:33:00 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:33:25 ~exec iota = lambda x: ski_repl.unparse(self.un_iota(ski_repl.simp(self.replace(ski_repl.parse(x), "i", self.iota_comb)))) 01:33:38 ~exec sys.stdout(iota("`ii")) 01:33:48 ?! 01:33:59 * ihope ponders Unlambda input combinators 01:34:02 ~exec sys.stdout(self) 01:34:03 <__main__.IRCbot instance at 0xb7c0308c> 01:34:10 ok borked 01:34:40 AHA! 01:35:14 You need a combinator that applies its argument to ?x, where x is the current character. 01:35:31 ~quit 01:35:31 -!- bsmnt_bot has quit. 01:35:35 -!- bsmnt_bot has joined. 01:35:40 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:35:44 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:35:56 ~exec import ski_repl 01:36:00 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:36:08 ~exec iota = lambda x: ski_repl.unparse(self.un_iota(ski_repl.simp(self.replace(ski_repl.parse(x), "i", self.iota_comb)))) 01:36:18 ~exec sys.stdout(iota("`ii")) 01:36:40 ~exec globals()["ski_repl"] = __import__("ski_repl") 01:36:43 ~exec sys.stdout(iota("`ii")) 01:37:11 ~exec self.replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:37:21 ~exec U = lambda f: f(f) 01:37:23 ~exec self.replace = U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:37:29 ~exec sys.stdout(iota("`ii")) 01:37:45 sigh 01:38:54 ~quit 01:38:56 -!- bsmnt_bot has quit (Client Quit). 01:39:01 -!- bsmnt_bot has joined. 01:39:39 ~exec globals()["ski_repl"] = __import__("ski_repl") 01:39:53 ~exec self.iota_comb = ski_repl.parse("``S``SI`KS`KK") 01:40:03 ~exec self.un_iota = lambda x: replace(x, self.iota_comb, "i") 01:40:27 ~exec self.ski_repl = __import__("ski_repl") 01:40:34 ~exec self.iota_comb = self.ski_repl.parse("``S``SI`KS`KK") 01:40:48 ~exec self.un_iota(self.iota_comb) 01:40:59 ~exec self.un_iota = lambda x: self.replace(x, self.iota_comb, "i") 01:41:01 ~exec self.un_iota(self.iota_comb) 01:42:14 ~exec self.U = lambda f: f(f) 01:42:35 ~exec self.replace = self.U(lambda f: lambda t,a,b: ((t == a and b) or (type(t) == list and [f(f)(t[0],a,b), f(f)(t[1],a,b)]) or t)) 01:42:47 ~exec self.un_iota(self.iota_comb) 01:43:02 ~exec sys.stdout(self.un_iota(self.iota_comb)) 01:44:46 -!- bsmnt_bot has quit (Remote closed the connection). 01:44:51 -!- bsmnt_bot has joined. 01:46:25 -!- bsmnt_bot has quit (Remote closed the connection). 01:46:30 -!- bsmnt_bot has joined. 01:50:26 ~exec sys.stdout(self.iota("`ii")) 01:50:27 ``SK`KK 01:50:29 there. 01:50:54 bout time 01:52:03 ~exec sys.stdout(self.iota("`i`i`ii")) 01:52:04 K 01:52:16 ~exec sys.stdout(self.iota("`i`i`i`ii")) 01:52:18 S 01:52:22 it works! 01:53:05 ~exec sys.stdout(self.iota("`i`i`i`i`ii")) 01:53:07 ``SSK 01:55:22 -!- bsmnt_bot has quit. 01:55:25 -!- bsmnt_bot has joined. 01:56:55 ~exec sys.stdout(self.iota("`i`i`ii")) 01:57:16 oh come on 01:58:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 01:58:39 -!- nazgjunk has joined. 02:01:36 -!- AfterDeath has joined. 02:02:48 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 02:02:57 -!- UpTheDownstair has joined. 02:03:46 yes, AfterDeath? 02:03:55 bsmntbombdood: ? 02:05:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 02:06:03 -!- nazgjunk has joined. 02:06:50 ~ps 02:06:51 None 02:12:35 wow. my Malbolge Unshackled interpreter works. 02:12:59 and more surprisingly, it actually manages to run the Malbolge cat program. 02:13:52 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 02:14:20 Unshackled? 02:14:38 i made a dialect. 02:14:56 Is it less ugly? 02:15:03 essentially, with automatically growing memory size 02:15:15 Fun. 02:15:40 no, i've tried to keep as close to the spirit as possible. 02:16:24 so, turing complete malbolge 02:16:25 only some subtle changes to make values practically unbounded. 02:16:29 i hope so. 02:17:00 but i didn't expect the changes to be subtle enough to make the cat program work. :) 02:18:21 this must be an evil omen :D 02:24:00 -!- nazgjunk has joined. 02:24:20 now uploaded: http://oerjan.nvg.org/esoteric/Unshackled.hs 02:24:46 not haskell! 02:24:56 of course Haskell :) 02:26:17 how else could I properly juggle the combined infinite Trie and linked list of Trits? :) 02:27:16 Trie? 02:27:22 You could do it in Unlambda. 02:27:25 of course a more efficient implementation might be possible. 02:27:40 bsmntbombdood: fancy spelling of "tree", isn't it? 02:27:42 i suppose. 02:27:55 Also, can I call you and your bot bb and b_? :-P 02:28:59 not quite. A trie is a special kind of tree, in which every key has a specific place in the tree, known at the outset. 02:30:15 e.g. the trinary number 021 would be at the first child of the second child of the zeroth child of the root. 02:30:54 *ternary 02:35:33 -!- nazgjunk has quit ("Bi-la Kaifa"). 02:50:18 -!- kxspxr has quit. 03:34:11 -!- ihope has quit (Connection timed out). 03:42:56 -!- ihope has joined. 03:48:11 -!- LeaLeaLea has joined. 03:48:16 HELLO. 03:48:30 hello 03:48:51 .. It has been ages. Good evening ladies and gentlemen. I invite each and every one of you for a walk on the promenade. Step not into the grassy knolls or you shall surely be engulfed by lava. 03:49:54 oh boy. 03:51:14 -!- SevenInchBread has joined. 03:51:52 SevenInchBread. 03:51:53 :( 03:52:06 Fancy meeting you here. 03:52:21 FANCY TIS 03:52:32 What say we grab a cuppa, old bean? 03:53:07 ...I'm uncertain 03:53:13 of how to react 03:53:15 to that 03:53:26 * LeaLeaLea grabs a cuppa. 03:53:37 * SevenInchBread squeezes the cuppa firmly. 03:53:50 mmm... quite smooth. 03:53:55 Mmm. 03:56:31 ~quit 03:56:32 -!- bsmnt_bot has quit. 03:56:36 -!- bsmnt_bot has joined. 03:56:42 ~exec sys.stdout(self) 03:56:42 <__main__.IRCbot instance at 0xb7ca208c> 03:56:57 ~exec x = lambda: self 03:57:07 ~exec sys.stdout(x) 03:57:08 at 0xb7ca3614> 03:57:12 ~exec sys.stdout(x()) 03:57:20 damnit 03:57:46 ~exec x = lambda: y 03:57:53 ~exec y = 42 03:57:56 ~exec sys.stdout(x()) 03:58:01 oh come on 03:58:33 ~quit 03:58:34 -!- bsmnt_bot has quit (Client Quit). 03:58:36 -!- bsmnt_bot has joined. 03:58:42 ~exec x = lambda: self 03:58:42 ~exec for x in xrange(100): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 03:58:43 -!- bsmnt_bot has quit (Excess Flood). 03:58:46 -!- bsmnt_bot has joined. 03:58:46 :) 03:58:50 ~exec x = lambda: self 03:58:54 ~exec sys.stdout(x()) 03:59:04 ~exec self.x = lambda: self 03:59:07 ~exec sys.stdout(self.x()) 03:59:17 wtf. 03:59:26 ~exec for x in xrange(10): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 03:59:26 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:27 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:28 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:30 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:30 closures. are. broken. 03:59:32 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:33 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:36 LeaLeaLea, YOUR HOSES IS RUNNING! 03:59:39 ~kill 0 03:59:40 Proccess 0 does not exist 03:59:46 :) 04:00:21 this is getting annoying 04:00:31 ~exec types 04:00:32 I blame it on threading. 04:00:36 nope 04:01:05 ~exec self.x 04:01:17 ~exec self.x.func_code 04:01:25 ~exec print "Lol... inconsistent print statement too..." 04:01:43 basically... you've fucked up the environment with threading and shit. :) 04:01:51 ~exec types.FunctionType(self.x.func_code, globals(), closure=locals()) 04:02:04 try new.function 04:02:06 ~exec self.x = lambda: bot 04:02:16 ~exec sys.stdout(self.x()) 04:02:17 <__main__.IRCbot instance at 0xb7c9608c> 04:02:18 ~exec sys.stdout(self) 04:02:19 <__main__.IRCbot instance at 0xb7c9608c> 04:02:58 ~exec types.FunctionType(self.x.func_code, globals()) 04:03:01 ~exec types.FunctionType(self.x.func_code, globals())() 04:03:17 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())()) 04:03:18 <__main__.IRCbot instance at 0xb7c9608c> 04:03:23 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())) 04:03:24 at 0xb7c976f4> 04:03:29 hmmm 04:03:38 ~exec sys.stdout(self.x()) 04:03:39 <__main__.IRCbot instance at 0xb7c9608c> 04:03:52 oh ihope messed me up 04:04:02 ~exec self.x = lambda: self 04:04:02 ~exec for x in xrange(5): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!") 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:03 LeaLeaLea, YOUR HOSES IS RUNNING! 04:04:08 SevenInchBread: stop doing that 04:04:11 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())) 04:04:12 -!- anonfunc has joined. 04:04:12 at 0xb7c9a6bc> 04:04:15 ~exec sys.stdout(types.FunctionType(self.x.func_code, globals())()) 04:04:15 I like messing people up. 04:04:17 :-P 04:04:25 ~exec sys.stdout(types.FunctionType(self.x.func_code, locals())()) 04:04:25 <__main__.IRCbot instance at 0xb7c9608c> 04:04:29 hmmmm! 04:04:32 Sorry. Didn't mean to do that. 04:05:26 ~exec for x in xrange(5): self.raw("PRIVMSG LeaLeaLea :YOUR HOSES IS RUNNING!") 04:05:59 -!- LeaLeaLea has quit ("Chatzilla 0.9.77 [Firefox 1.5.0.10/2007021601]"). 04:06:08 oh damn, still banned from #python 04:06:21 You're banned form #python? 04:06:23 yeah 04:07:03 What for? 04:07:11 saying "lol" 04:07:24 Really? 04:07:28 yeah 04:08:10 I need to figure out how to make cell objects 04:08:43 to make closures manually 04:09:15 If you really want to get in, change your nickname and username. 04:09:57 what's the ban on? 04:10:00 -!- bsmntbombdood has changed nick to xor\. 04:10:03 -!- xor\ has changed nick to xor. 04:10:38 apparently, just the nick 04:11:02 "bsmntbombdood!*@*" and "*!n=gavin@*." 04:11:22 Why there's a period I don't know. 04:12:28 well, passing in the locals as the globals to create the function works 04:18:50 ah ha 04:18:56 imma jenus 04:22:40 -!- SevenInchBread has quit ("haaaaaaaaaa"). 04:24:31 ~exec self.foo = __import__("foo") 04:24:57 ~exec self.foo = __import__("foo") 04:25:22 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:09 ~exec globals()["types"] = __import__("types") 04:26:11 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:28 ~exec self.foo = __import__("foo") 04:26:31 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:26:57 ~exec reload(self.foo) 04:27:01 ~exec self.foo.hack_closure(lambda: self, locals(), globals()) 04:27:12 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())) 04:27:13 at 0xb7c9a79c> 04:27:18 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())()) 04:27:25 penis 04:27:33 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals) 04:27:34 {'IRCbot': , 'inspect': , '__builtins__': , '__file__': '/bot/ircbot.py', 'args': {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d'], 'owner': 04:27:34 'bsmntbombdood!\\S*gavin@\\S*'}, 'IRCFileWrapper': , 'sys': , 'thread_info': , 'pickle': , '__name__': '__main__', 'exec_global_tracer': , 'types': usr/lib/python2.4/types.pyc'>, 'copy': , 'socket': , 'thread': , 'traceback': , 'os': , 'pprint': .4/pprint.pyc'>, 'bot': <__main__.IRCbot instance at 0xb7c9608c>, 'marshal': , 're': , 'time': , 'threading': , 'SysWrapper': , 'exec_loca 04:27:42 ~kill 0 04:27:45 l_tracer': , '__doc__': None, 'math': } 04:27:54 oops 04:28:02 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals["self"]) 04:30:08 or not 04:37:05 or yes! 04:37:38 ~exec reload(self.foo) 04:37:54 ~exec sys.stdout(lambda: self, locals(), globals())) 04:38:17 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())) 04:38:18 at 0xb7c9a87c> 04:38:24 ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())()) 04:38:24 <__main__.IRCbot instance at 0xb7c9608c> 04:38:28 sweet! 04:38:44 ~exec (lambda: self)() 04:38:53 that's why it's needed 04:51:35 :/ 04:59:35 made a wiki page on Malbolge Unshackled, explaining the differences (but not the commonalities) 05:01:51 -!- mike_the_person has joined. 05:03:36 <>:#,_e0g,@j5:" 05:04:20 ~quit 05:04:34 ~exec self.raw("QUIT") 05:04:35 -!- bsmnt_bot has quit. 05:04:39 -!- bsmnt_bot has joined. 05:04:44 ~exec this is an error 05:04:56 darn 05:05:32 -!- mike_the_person has quit (Client Quit). 05:06:11 ~exec self.raw("QUIT") 05:06:12 -!- bsmnt_bot has quit (Client Quit). 05:06:15 -!- bsmnt_bot has joined. 05:06:17 ~exec this is an error 05:06:31 oh duh 05:06:55 ~exec self.raw("QUIT") 05:06:56 -!- bsmnt_bot has quit (Client Quit). 05:06:59 -!- bsmnt_bot has joined. 05:07:02 ~exec this is an error 05:07:55 ~exec self.raw("QUIT") 05:07:56 -!- bsmnt_bot has quit (Client Quit). 05:07:59 -!- bsmnt_bot has joined. 05:08:01 ~exec this is an error 05:08:53 ~exec self.raw("QUIT") 05:08:54 -!- bsmnt_bot has quit (Client Quit). 05:08:57 -!- bsmnt_bot has joined. 05:08:59 ~exec this is an error 05:09:00 SyntaxError: unexpected EOF while parsing 05:09:05 finally 05:09:16 ihope: there 05:09:34 Pretty nice. 05:09:58 But why's there a space before it now? 05:10:12 there always has been 05:10:31 i'll take it off... 05:10:57 Doesn't look like there always has been to me. 05:11:17 NameError: name 'raw' is not defined 05:11:25 No space, and that was over three hours ago. 05:11:33 hmmm 05:11:54 that's odd 05:12:03 ~exec self.raw("QUIT") 05:12:04 -!- bsmnt_bot has quit (Client Quit). 05:12:07 -!- bsmnt_bot has joined. 05:12:13 ~exec this is an error 05:12:14 SyntaxError: unexpected EOF while parsing 05:12:26 weird 05:14:03 -!- xor has changed nick to bsmntbombdood. 05:14:06 ~quit 05:14:07 -!- bsmnt_bot has quit (Client Quit). 05:14:10 -!- bsmnt_bot has joined. 05:14:14 ~exec this is an error 05:14:15 SyntaxError: unexpected EOF while parsing 05:14:28 thar 05:15:04 -!- oerjan has quit ("Gooed knight"). 06:07:46 -!- calamari has quit ("Leaving"). 06:48:39 -!- digital_me has quit ("goodnight"). 06:54:51 -!- ihope has quit (Connection timed out). 07:20:51 -!- wooby has quit. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:34:11 -!- tokigun has joined. 08:57:40 -!- tokigun has quit ("wait a moment please."). 08:58:38 -!- tokigun has joined. 09:05:24 -!- anonfunc has quit. 09:20:43 Anyone here do/have done amateur radio? 09:32:07 -!- anonfunc has joined. 09:39:11 -!- Sgeo has quit ("Leaving"). 09:55:08 -!- sebbu has joined. 10:34:14 -!- anonfunc has quit. 10:50:04 I predict my question will be forgotten in a few more hours and another haphazard conversation will begin and be yet more forgotten. 11:05:16 properties of or prevent me from answering 11:42:22 -!- nooga has joined. 11:42:25 hi 11:47:07 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 12:01:37 -!- pgimeno has joined. 12:01:40 * nooga has found a bug in sadol interpreter 12:14:29 -!- tgwizard has joined. 12:33:07 -!- oerjan has joined. 12:35:12 Sukoshi: No. 12:36:19 nooga: There is always one more bug. (TM) 12:41:26 -!- Dominic_ has joined. 12:45:47 -!- UpTheDownstair has joined. 12:46:46 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 12:50:20 -!- nazgjunk has joined. 12:51:02 -!- Dominic_ has quit (Read error: 104 (Connection reset by peer)). 12:55:49 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 12:56:25 -!- nazgjunk has joined. 13:04:55 -!- UpTheDownstair has joined. 13:05:14 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:18:24 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)). 13:18:43 -!- nazgjunk has joined. 13:41:33 -!- UpTheDownstair has joined. 13:41:41 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 13:49:13 -!- UpTheDownstair has changed nick to nazgjunk. 14:01:22 -!- sebbu2 has joined. 14:20:41 -!- sebbu has quit (Connection timed out). 14:45:42 darn, i just realized what my last edit looks like in the Recent Changes list :D 15:01:28 -!- ihope has joined. 15:07:16 -!- jix__ has joined. 15:30:30 -!- ihope has quit (Read error: 104 (Connection reset by peer)). 15:30:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:31:11 -!- nazgjunk has joined. 15:54:50 * oerjan is starting to suspect that the cat program working is due to an interpreter bug. 15:57:13 on the positive side, that provided a good test that everything that _should_ be identical to Malbolge is working. 16:08:23 -!- SevenInchBread has joined. 16:10:10 -!- UpTheDownstair has joined. 16:12:45 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 16:17:39 -!- UpTheDownstair has changed nick to nazgjunk. 16:17:50 -!- jix__ has changed nick to jix. 16:25:14 -!- nazgjunk has quit ("Leaving"). 16:31:57 -!- oerjan has quit ("Out to eat"). 16:32:16 -!- nazgjunk has joined. 17:06:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:06:37 -!- UpTheDownstair has joined. 17:10:36 -!- nazgjunk has joined. 17:10:46 -!- UpTheDownstair has quit (Read error: 104 (Connection reset by peer)). 17:23:06 -!- Arrogant has joined. 17:52:38 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 17:59:29 ~exec 1/0 17:59:30 ZeroDivisionError: integer division or modulo by zero 18:01:29 ~exec raise "iAmBored", "Error" 18:01:30 iAmBored: Error 18:02:26 -!- nazgjunk has joined. 18:03:46 ~exec sys.stdout = StringIO(); sys.stdout.write("foo") 18:04:09 ~exec sys.stdout = StringIO(); sys.stdout.write("foo"); print sys.stdout.getvalue() 18:04:14 foo 18:07:26 ~raise StringIO() 18:07:32 ~exec raise StringIO() 18:07:33 TypeError: exceptions must be classes, instances, or strings (deprecated), not cStringIO.StringO 18:07:40 ~exec raise StringIO 18:07:40 TypeError: exceptions must be classes, instances, or strings (deprecated), not builtin_function_or_method 18:07:45 booble 18:08:43 ~raise IRCbot 18:08:52 ~exec raise IRCbot 18:08:53 TypeError: __init__() takes at least 5 arguments (1 given) 18:09:04 ~exec raise IRCbot, 1,2,3,4 18:09:05 SyntaxError: invalid syntax 18:09:36 ~exec self.foo = sys.stdout 18:09:48 hi 18:36:53 -!- wooby has joined. 18:41:47 -!- Arrogant has quit ("Leaving"). 19:35:20 -!- oklopol has quit (Read error: 110 (Connection timed out)). 19:38:17 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 19:38:51 -!- nazgjunk has joined. 19:50:53 -!- oerjan has joined. 19:54:51 -!- tgwizard has quit (Remote closed the connection). 19:56:19 the goo 19:56:41 that ba, and the ugl 19:56:45 *the 19:57:07 ~exec raise "Hi oerjan" 19:57:07 Hi oerjan 19:57:15 hi bsmnt_bot 19:57:30 thought that error message would be more interesting 19:58:18 ~exec raise Exception, "oerjan is here" 19:58:19 Exception: oerjan is here 19:59:34 bsmnt_bot: you have a lousy memory if you think that is exceptional :) 20:00:48 ~exec exec "class BoredError(Exception): pass\n\nself.bored = BoredError" 20:00:56 ~exec raise self.bored 20:00:57 BoredError 20:02:07 ~exec exec "try:\n raise self.bored\nexcept Exception: \nraise \"not allowed to be bored\"\n" 20:02:08 IndentationError: expected an indented block (line 4) 20:02:25 ;D 20:02:28 ~exec exec "try:\n raise self.bored\nexcept Exception:\n raise \"not allowed to be bored\"\n" 20:02:29 not allowed to be bored 20:02:41 back to the risk game 20:03:41 -!- tgwizard has joined. 20:29:07 I lost :( 20:33:16 -!- sebbu has joined. 20:33:31 europe fails 20:33:42 never! 20:35:52 almost always 20:36:46 you can never hold europe 20:39:10 -!- oklopol has joined. 20:40:11 too many neighbors 20:41:06 i don't remember, can you cross between asia and america? 20:41:22 yeah kamchatca-alaska or something like that 20:50:34 -!- digital_me has joined. 20:50:36 -!- tgwizard has quit (Connection timed out). 20:51:55 -!- sebbu2 has quit (Read error: 110 (Connection timed out)). 20:56:07 * bsmntbombdood reads about tries 20:56:56 * bsmntbombdood implements it in C 20:57:21 or not 20:58:35 oh, so each node has $byte_length branches 20:59:23 $byte_length? 21:00:15 for a byte, that sounds like 8 but should be 256, I think 21:00:47 yeah 21:01:15 that's what I meant 21:19:15 don't you just love segfaults? 21:20:41 use a language with proper types :) 21:21:46 well, it works 21:22:29 although i suppose i _could_ make the crash function in my interpreter segfault if I used the unsafePerformIO loophole. 21:22:50 for now it just runs out of memory. 21:23:07 with a segfault you at least get a core dump 21:23:18 quitting with an error message doesn't tell you anything 21:26:10 not sure what to do when a key isn't found :/ 21:31:56 return a default, possibly inserting it first. 21:32:09 bsmntbombdood.mooo.com/trie.c 21:32:27 thunks are ugly :/ 21:36:07 MUCH simpler implementation than a hash table 21:36:10 I like it. 21:37:06 and any data can be used as a key, without a hash function 21:39:41 insertion/extraction is O(keylen) 21:44:07 hi 21:45:38 hi 21:45:55 know anything about lsof 21:46:39 lsof(8)? 21:47:45 yeah 21:48:20 rm is giving me "text file busy" but lsof is listing nothing when I say lsof 21:49:50 I want an algorithm to play risk 21:52:17 I would like to be Hu*Ki bimorph but it ain't going to happen. 21:52:32 maybe that should be Ki*Hu 21:53:06 ??? 21:53:22 Hu=Human? Ki=? 21:53:35 or something else? 21:55:28 yes# 21:55:40 Hu is indeed human. 21:55:47 waitamo, 21:55:56 how did you know what "bimorph" meant/ 21:56:21 bi=2, morph=morph 21:56:23 i guessed, from bi- and -morph 21:56:41 Darn, i am not used to people being able to do that. 21:56:49 what's ki? 21:56:56 (i.e. analyse things by their classical roots) 21:57:04 heh 21:57:12 Who doesn't do that? 21:57:19 normal people 21:57:21 muggles 21:57:28 besides any PL enthusiast should know about polymorphism 21:58:15 oklopol: (Well, I do not have a good summarry, but I have explained it in bits in various places, and archived all the discussions: http://fof.durge.org/~sc/Kigdatsi/ ) 21:58:41 oh 21:58:43 i've read that 21:58:44 oh, your own conworld. 21:58:50 yup 21:58:58 oerjan: where di you learn that word 21:59:11 which word? 21:59:31 newer stuff and dynamic documents are dumped here: http://toast.durge.org/~sc/Kigdatsi/ (the server is also {compsoc,bylands}.dur.ac.uk) 21:59:36 oerjan: conworld 21:59:39 i used to subscribe to the conlang list 21:59:45 ah, ok 21:59:45 wazzat? 21:59:47 small world 21:59:59 bsmntbombdood: see spinnoff.com/zbb 22:00:26 besides i think it was mentioned in the files of yours i looked at 22:01:14 ah, ok 22:03:02 oh man 22:03:10 storing those 3 entrys takes 11308 bytes 22:03:16 the world is even smaller, both at conlang and at esolangs i've met people from my local gamer's club :) 22:03:34 bsmntbombdood: what are you using these tries for? 22:03:46 nothing 22:05:10 for prefix-free keys each new key takes O(keylen) more storage O.o 22:05:17 on the other hand i used a trie in my newest interpreter, which is how the subject came up i think 22:05:27 yeah 22:06:15 O(keylen - common_prefixlen) more 22:06:32 ISTR tries have crap constants 22:06:59 bsmntbombdood: there is an optimization to make tries smaller. 22:07:00 you might want a briefer node format 22:07:19 like an array of (byte, pointer) pairs 22:07:23 for memory O(n) = 1024*n I think 22:07:42 basically, if there is only one leaf in a subtree, you save it directly. 22:07:46 sounds right, for size-4 pointers 22:07:53 at the top of that subtree. 22:07:59 oerjan: also a good idea 22:08:28 SimonRC: huh? 22:08:56 and you may also split bytes into say 2 nybbles, to make each node only have 16 subnodes. 22:09:13 well, you have an array of pointers for each node, and there are 256 pointers in each node, and each pointer is 4 bytes 22:09:20 oerjan: yup 22:09:25 yeah 22:10:10 manipulating nibbles isn't very nice 22:10:37 it isn't very hard either. 22:10:54 (b >> 4), b & 15 22:11:10 yeah 22:11:14 -!- Sgeo has joined. 22:11:29 How would that make the storage less though? 22:12:36 oh 22:13:00 sounds like you got it 22:13:29 i guess it is a tradeoff between space and search speed. 22:13:29 then it's O(n) = 2*16*n 22:15:23 *4 for pointer size 22:16:22 oh right 22:18:10 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:19:57 Segmentation fault (core dumped) 22:20:02 sigh 22:20:13 solution: use a real language 22:21:58 C is just about as real as it gets 22:22:30 In that case, use a language with a real typesystem. 22:22:38 OST s/real // 22:23:11 How does a typesystem prevent segfaults? 22:23:24 pointers means segfaults 22:23:33 by making it impossible to dereference a null pointer. 22:23:58 That just turns it into some other type of abort. 22:24:00 By guaranteeing that a pointer always points at something. 22:24:06 It would have to raise some kind of equivelent error 22:24:08 or do array indexing out of bounds 22:24:15 (hint: GC may be involved) 22:24:31 Everybody go look up D and shaddap. 22:24:34 sure, but that error may be at compile time 22:24:35 http://www.digitalmars.com/d/ 22:24:46 D loses 22:24:49 GregorR: ITYM http://www.haskell.org/ 22:24:53 :-P 22:25:05 also Ocaml if you think haskell is too weird. 22:25:54 Nah, you miss out on the cool shit like typeclasses and circular definitions. 22:26:15 http://www.beigerecords.com/cory/pizza_party/ 22:26:19 yes, but on the other hand you get module functors. 22:26:29 What could be more fun than creating a graph by defining the contents of a mp in terms of lookups on the map? 22:26:38 oerjan: what are they? 22:26:57 essentially, functions from modules to modules. 22:26:58 bsmntbombdood: seen it before 22:27:02 oerjan: hmm. 22:27:09 ITYM http://schemers.org/ 22:29:38 * SimonRC beats you all: http://e-pig.org/ 22:30:01 Each program contains a correctnes proof embedded in its types. 22:30:14 No infinite loops, ever. 22:31:05 and not Turing-complete, nanana 22:31:30 The developers find that you can write all sensible programs in it. 22:31:45 i was half joking :) 22:32:57 probably. I mean how many times do you need to run an algorithm that you don't know halts... 22:33:18 * bsmntbombdood can't figure out what's wrong :( 22:33:49 have you changed trie.c since you posted the link? 22:33:59 oh duh 22:34:11 or not 22:34:24 no 22:34:41 get trie_nibble.c 22:35:47 ooops :P 22:35:55 ? 22:36:01 i'm stupid 22:36:22 I masked with 0xFF instead of 0xF 22:36:40 -!- tgwizard has joined. 22:37:02 now it works 22:37:30 and uses much less storage 22:37:42 1836 compared to 14392 22:38:47 O(n) ~ n*400 22:39:59 now for bits... 22:40:50 bits? 22:41:31 i think bits is worse than 2-bits, which is only twice as good as nybbles. 22:41:40 idunno 22:42:42 because bits need 2 children but twice the depth of 2-bits which need 4. 22:42:57 yeah 22:44:20 and 4*2 is half of 16. 22:45:47 I wonder why the constant factor is ~400 and not 128 like it should be 22:46:09 hm? 22:46:17 for nibbles 22:46:39 16*2*4 = 128, you mean? 22:46:46 yeah 22:47:40 oh 22:47:55 its 128*keylen 22:48:13 brilliant :) 22:48:42 i was starting to worry you had some serious over-padding there :) 22:48:56 -!- UpTheDownstair has joined. 22:49:31 except - that only applies without sharing. 22:49:35 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 22:49:46 all my keys were prefix free 22:50:04 right, so just the top node 22:52:16 a minor point - you don't need a data section for the half-byte nodes 22:53:04 mm 22:53:52 -!- Arrogant has joined. 22:54:09 not worth it 22:55:24 you could do it fairly cheap by putting the data section last, and just adjusting the malloc size 22:55:44 i think 22:57:31 -!- UpTheDownstair has changed nick to nazgjunk. 22:58:41 not sure if that's standard 22:59:56 Ah, I was wrong, epigram can do general recursion (and is hence Turing-Complete) if you permit yourself to use (gen :: (forall (P :: *) => (P -> P) -> P) i.e. to assume that anything you can prove from itself is true. 23:00:03 which is a bit dodgy 23:00:53 I didn't know programming languages could get any more mathy 23:01:36 epigram essentially crosses the line to a theorem prover 23:03:12 -!- GregorR has quit (SendQ exceeded). 23:03:24 -!- GregorR has joined. 23:03:51 given the Curry-Howard correspondence between type systems and logic, that essentially has to happen when the type system gets complex enough 23:05:25 In later versions of Haskell, the type system is so powerful that it is itself Turing-complete. 23:05:56 with a few command-line switches 23:06:04 e.g. --allow-undecidable-types 23:06:51 on the other hand, the same has been said of C++. 23:07:25 which shows that sanity is not a requirement. :) 23:07:42 hm, does that mean the _type system_ of C++ is an esolang? 23:08:34 (disclaimer: regarding C++ i am speaking solely from prejudice, having never used it ;) 23:09:49 this leads to the obvious question: could we make a language whose type system is based on brainfuck? 23:10:28 typefuck 23:11:48 it seems static import means the exact opposite in java and D 23:11:55 i find that clever 23:32:55 -!- UpTheDownstair has joined. 23:33:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 23:34:03 -!- UpTheDownstair has changed nick to nazgjunk. 23:46:16 mathmatical logic ftl 23:46:38 * oerjan bops bsmntbombdood on the head 23:47:16 no me understando 23:50:46 * bsmntbombdood is reading the Curry–Howard wikipedia article 23:52:34 zzzz 23:52:41 http://upload.wikimedia.org/math/4/1/c/41c9dae376e6427b316ac0396b990d63.png 23:52:44 O.o