←2007-02-24 2007-02-25 2007-02-26→ ↑2007 ↑all
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 <SimonRC> bsmntbombdood: bah.
00:25:52 <SimonRC> Modern GC isn't slow.
00:26:19 <bsmntbombdood> oh?
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:33 <bsmntbombdood> ~ski ``Kxy
00:50:41 <bsmntbombdood> ~exec import ski_repl
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:51:21 <bsmntbombdood> ~ski ``Kxy
00:51:21 <bsmnt_bot> x
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:54:58 <bsmntbombdood> hmm
00:55:20 <bsmntbombdood> ~exec sys.stdout(replace([[1,2],[3,4]], 1, 42))
00:55:31 <bsmntbombdood> crap
00:55:39 <bsmntbombdood> scoping got messed up
00:55:54 <bsmntbombdood> ~exec pprint.pprint(locals(), sys.stdout)
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:56 <bsmnt_bot> 'x': 12}
00:55:59 -!- ihope has joined.
00:56:07 <bsmntbombdood> ~exec sys.stdout(replace)
00:56:07 <bsmnt_bot> <function <lambda> at 0xb7c046bc>
00:56:17 <bsmntbombdood> wtf?
00:56:26 <bsmntbombdood> ~exec replace(1,1,2)
00:56:37 <bsmntbombdood> ~exec sys.stdout(replace(1,1,2))
00:56:38 <bsmnt_bot> 2
00:56:50 <bsmntbombdood> ~exec sys.stdout(replace([[1,2],[3,1]],1,2))
00:57:00 <bsmntbombdood> w.t.f
00:57:28 <ihope> ~exec sys.stdout(replace([[1,2],[3,1]],1,2))
00:57:33 <bsmntbombdood> time to go all combinatory logic on his ass
00:57:41 <ihope> I think you need to define replace.
00:57:48 <ihope> ...wait...
00:57:48 <bsmntbombdood> ~exec U = lambda f: f(f)
00:57:52 <bsmntbombdood> i did
00:58:04 <ihope> I see.
00:58:22 <ihope> ~exec sys.stdout(replace(1,1,2))
00:58:23 <bsmnt_bot> 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)])
00:59:07 <bsmntbombdood> ~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 <bsmntbombdood> oh, oops
01:17:32 <bsmntbombdood> that was stupid
01:22:23 <bsmntbombdood> k
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:23:28 <bsmntbombdood> ~exec sys.stdout(replace([[1,2],[3,1]], 1, 42))
01:23:29 <bsmnt_bot> [[42, 2], [3, 42]]
01:23:33 <bsmntbombdood> guten
01:25:27 <bsmntbombdood> ~exec iota_comb = ski_repl.parse("``S``SI`KS`KK")
01:25:38 <bsmntbombdood> ~exec sys.stdout(iota_comb)
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:27:17 <ihope> Unlambda parser?
01:28:10 <oerjan> more like Lazy K
01:28:19 <ihope> ~exec sys.stdout(ski_repl.parse("C"))
01:28:20 <bsmnt_bot> 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:24 <ihope> How nice.
01:28:31 <ihope> ~exec sys.stdout(ski_repl.parse("`CK"))
01:28:32 <bsmnt_bot> ['C', 'K']
01:28:57 <bsmntbombdood> yeah, it can parse unlambda
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:22 <bsmntbombdood> wow, what language is that valid in?
01:29:33 <ihope> ~exec sys.stdout("C".parse.ski_repl)
01:29:40 <ihope> Indeed.
01:29:52 <bsmntbombdood> ~exec sys.stdout(iota("`ii"))
01:30:04 <ihope> ~exec foo = sys.stdout; ski_repl.parse("C").foo
01:30:16 <ihope> Indeed, it... hmm.
01:30:20 <bsmntbombdood> Sir, you are crazed
01:30:28 <oerjan> ~exec sys.stdout(ski_repl.parse("`.i`.Hi"))
01:30:29 <bsmnt_bot> ['.', 'i']
01:30:39 <bsmntbombdood> oerjan: except for that :)
01:30:40 <ihope> Okay, doesn't work.
01:30:41 <oerjan> nah, it can't parse Unlambda ;)
01:31:43 <bsmntbombdood> ~exec un_iota([])
01:31:53 <bsmntbombdood> oh come on
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:06 <bsmntbombdood> closure are super screwed :(
01:32:33 <oerjan> that one is just too old :)
01:32:34 <bsmntbombdood> so, this scoping doesn't work
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:38 <bsmntbombdood> ~exec sys.stdout(iota("`ii"))
01:33:48 <bsmntbombdood> ?!
01:33:59 * ihope ponders Unlambda input combinators
01:34:02 <bsmntbombdood> ~exec sys.stdout(self)
01:34:03 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c0308c>
01:34:10 <bsmntbombdood> ok borked
01:34:40 <ihope> AHA!
01:35:14 <ihope> You need a combinator that applies its argument to ?x, where x is the current character.
01:35:31 <bsmntbombdood> ~quit
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:35:56 <bsmntbombdood> ~exec import ski_repl
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:18 <bsmntbombdood> ~exec sys.stdout(iota("`ii"))
01:36:40 <bsmntbombdood> ~exec globals()["ski_repl"] = __import__("ski_repl")
01:36:43 <bsmntbombdood> ~exec sys.stdout(iota("`ii"))
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:21 <bsmntbombdood> ~exec U = lambda f: f(f)
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:37:29 <bsmntbombdood> ~exec sys.stdout(iota("`ii"))
01:37:45 <bsmntbombdood> sigh
01:38:54 <bsmntbombdood> ~quit
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:27 <bsmntbombdood> ~exec self.ski_repl = __import__("ski_repl")
01:40:34 <bsmntbombdood> ~exec self.iota_comb = self.ski_repl.parse("``S``SI`KS`KK")
01:40:48 <bsmntbombdood> ~exec self.un_iota(self.iota_comb)
01:40:59 <bsmntbombdood> ~exec self.un_iota = lambda x: self.replace(x, self.iota_comb, "i")
01:41:01 <bsmntbombdood> ~exec self.un_iota(self.iota_comb)
01:42:14 <bsmntbombdood> ~exec self.U = lambda f: f(f)
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:42:47 <bsmntbombdood> ~exec self.un_iota(self.iota_comb)
01:43:02 <bsmntbombdood> ~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 <bsmntbombdood> ~exec sys.stdout(self.iota("`ii"))
01:50:27 <bsmnt_bot> ``SK`KK
01:50:29 <bsmntbombdood> there.
01:50:54 <bsmntbombdood> bout time
01:52:03 <bsmntbombdood> ~exec sys.stdout(self.iota("`i`i`ii"))
01:52:04 <bsmnt_bot> K
01:52:16 <bsmntbombdood> ~exec sys.stdout(self.iota("`i`i`i`ii"))
01:52:18 <bsmnt_bot> S
01:52:22 <bsmntbombdood> it works!
01:53:05 <bsmntbombdood> ~exec sys.stdout(self.iota("`i`i`i`i`ii"))
01:53:07 <bsmnt_bot> ``SSK
01:55:22 -!- bsmnt_bot has quit.
01:55:25 -!- bsmnt_bot has joined.
01:56:55 <bsmntbombdood> ~exec sys.stdout(self.iota("`i`i`ii"))
01:57:16 <bsmntbombdood> 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 <bsmntbombdood> yes, AfterDeath?
02:03:55 <AfterDeath> bsmntbombdood: ?
02:05:49 -!- UpTheDownstair has quit (Read error: 54 (Connection reset by peer)).
02:06:03 -!- nazgjunk has joined.
02:06:50 <bsmntbombdood> ~ps
02:06:51 <bsmnt_bot> None
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:14:20 <ihope> Unshackled?
02:14:38 <oerjan> i made a dialect.
02:14:56 <ihope> Is it less ugly?
02:15:03 <oerjan> essentially, with automatically growing memory size
02:15:15 <ihope> Fun.
02:15:40 <oerjan> no, i've tried to keep as close to the spirit as possible.
02:16:24 <bsmntbombdood> so, turing complete malbolge
02:16:25 <oerjan> only some subtle changes to make values practically unbounded.
02:16:29 <oerjan> i hope so.
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:24:46 <bsmntbombdood> not haskell!
02:24:56 <oerjan> of course Haskell :)
02:26:17 <oerjan> how else could I properly juggle the combined infinite Trie and linked list of Trits? :)
02:27:16 <bsmntbombdood> Trie?
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:42 <oerjan> i suppose.
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:30:54 <oerjan> *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 <LeaLeaLea> HELLO.
03:48:30 <oerjan> hello
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:49:54 <bsmntbombdood> oh boy.
03:51:14 -!- SevenInchBread has joined.
03:51:52 <LeaLeaLea> SevenInchBread.
03:51:53 <SevenInchBread> :(
03:52:06 <LeaLeaLea> Fancy meeting you here.
03:52:21 <SevenInchBread> FANCY TIS
03:52:32 <LeaLeaLea> What say we grab a cuppa, old bean?
03:53:07 <SevenInchBread> ...I'm uncertain
03:53:13 <SevenInchBread> of how to react
03:53:15 <SevenInchBread> to that
03:53:26 * LeaLeaLea grabs a cuppa.
03:53:37 * SevenInchBread squeezes the cuppa firmly.
03:53:50 <SevenInchBread> mmm... quite smooth.
03:53:55 <LeaLeaLea> Mmm.
03:56:31 <bsmntbombdood> ~quit
03:56:32 -!- bsmnt_bot has quit.
03:56:36 -!- bsmnt_bot has joined.
03:56:42 <bsmntbombdood> ~exec sys.stdout(self)
03:56:42 <bsmnt_bot> <__main__.IRCbot instance at 0xb7ca208c>
03:56:57 <bsmntbombdood> ~exec x = lambda: self
03:57:07 <bsmntbombdood> ~exec sys.stdout(x)
03:57:08 <bsmnt_bot> <function <lambda> at 0xb7ca3614>
03:57:12 <bsmntbombdood> ~exec sys.stdout(x())
03:57:20 <bsmntbombdood> damnit
03:57:46 <bsmntbombdood> ~exec x = lambda: y
03:57:53 <bsmntbombdood> ~exec y = 42
03:57:56 <bsmntbombdood> ~exec sys.stdout(x())
03:58:01 <bsmntbombdood> oh come on
03:58:33 <bsmntbombdood> ~quit
03:58:34 -!- bsmnt_bot has quit (Client Quit).
03:58:36 -!- bsmnt_bot has joined.
03:58:42 <bsmntbombdood> ~exec x = lambda: self
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:58:46 <SevenInchBread> :)
03:58:50 <bsmntbombdood> ~exec x = lambda: self
03:58:54 <bsmntbombdood> ~exec sys.stdout(x())
03:59:04 <bsmntbombdood> ~exec self.x = lambda: self
03:59:07 <bsmntbombdood> ~exec sys.stdout(self.x())
03:59:17 <bsmntbombdood> wtf.
03:59:26 <SevenInchBread> ~exec for x in xrange(10): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!")
03:59:26 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:27 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:27 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:27 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:27 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:28 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:30 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:30 <bsmntbombdood> closures. are. broken.
03:59:32 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:33 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:36 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
03:59:39 <bsmntbombdood> ~kill 0
03:59:40 <bsmnt_bot> Proccess 0 does not exist
03:59:46 <SevenInchBread> :)
04:00:21 <bsmntbombdood> this is getting annoying
04:00:31 <bsmntbombdood> ~exec types
04:00:32 <SevenInchBread> I blame it on threading.
04:00:36 <bsmntbombdood> nope
04:01:05 <bsmntbombdood> ~exec self.x
04:01:17 <bsmntbombdood> ~exec self.x.func_code
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:04 <SevenInchBread> try new.function
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:24 <bsmnt_bot> <function <lambda> at 0xb7c976f4>
04:03:29 <bsmntbombdood> hmmm
04:03:38 <bsmntbombdood> ~exec sys.stdout(self.x())
04:03:39 <bsmnt_bot> <__main__.IRCbot instance at 0xb7c9608c>
04:03:52 <bsmntbombdood> oh ihope messed me up
04:04:02 <bsmntbombdood> ~exec self.x = lambda: self
04:04:02 <SevenInchBread> ~exec for x in xrange(5): sys.stdout.write("LeaLeaLea, YOUR HOSES IS RUNNING!")
04:04:03 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
04:04:03 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
04:04:03 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
04:04:03 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
04:04:03 <bsmnt_bot> LeaLeaLea, YOUR HOSES IS RUNNING!
04:04:08 <bsmntbombdood> SevenInchBread: stop doing that
04:04:11 <bsmntbombdood> ~exec sys.stdout(types.FunctionType(self.x.func_code, globals()))
04:04:12 -!- anonfunc has joined.
04:04:12 <bsmnt_bot> <function <lambda> at 0xb7c9a6bc>
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:17 <ihope> :-P
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:29 <bsmntbombdood> hmmmm!
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:08 <bsmntbombdood> oh damn, still banned from #python
04:06:21 <ihope> You're banned form #python?
04:06:23 <bsmntbombdood> yeah
04:07:03 <ihope> What for?
04:07:11 <bsmntbombdood> saying "lol"
04:07:24 <ihope> Really?
04:07:28 <bsmntbombdood> yeah
04:08:10 <bsmntbombdood> I need to figure out how to make cell objects
04:08:43 <bsmntbombdood> to make closures manually
04:09:15 <ihope> If you really want to get in, change your nickname and username.
04:09:57 <bsmntbombdood> 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 <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:50 <xor> ah ha
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:13 <bsmnt_bot> <function <lambda> at 0xb7c9a79c>
04:27:18 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals())())
04:27:25 <xor> penis
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:42 <xor> ~kill 0
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:27:54 <xor> oops
04:28:02 <xor> ~exec sys.stdout(self.foo.hack_closure(lambda: self, locals(), globals()).func_globals["self"])
04:30:08 <xor> or not
04:37:05 <xor> or yes!
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:18 <bsmnt_bot> <function <lambda> at 0xb7c9a87c>
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:28 <xor> sweet!
04:38:44 <xor> ~exec (lambda: self)()
04:38:53 <xor> that's why it's needed
04:51:35 <xor> :/
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:03:36 <mike_the_person> <>:#,_e0g,@j5:"
05:04:20 <xor> ~quit
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:04:56 <xor> darn
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:31 <xor> oh duh
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:05 <xor> finally
05:09:16 <xor> ihope: there
05:09:34 <ihope> Pretty nice.
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:33 <xor> hmmm
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:12:26 <xor> weird
05:14:03 -!- xor has changed nick to bsmntbombdood.
05:14:06 <bsmntbombdood> ~quit
05:14:07 -!- bsmnt_bot has quit (Client Quit).
05:14:10 -!- bsmnt_bot has joined.
05:14:14 <bsmntbombdood> ~exec this is an error
05:14:15 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
05:14:28 <bsmntbombdood> 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 <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:42:25 <nooga> 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 <oerjan> Sukoshi: No.
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:29 <bsmntbombdood> ~exec 1/0
17:59:30 <bsmnt_bot> ZeroDivisionError: integer division or modulo by zero
18:01:29 <bsmntbombdood> ~exec raise "iAmBored", "Error"
18:01:30 <bsmnt_bot> iAmBored: Error
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:04:14 <bsmntbombdood> foo
18:07:26 <bsmntbombdood> ~raise StringIO()
18:07:32 <bsmntbombdood> ~exec raise StringIO()
18:07:33 <bsmnt_bot> TypeError: exceptions must be classes, instances, or strings (deprecated), not cStringIO.StringO
18:07:40 <bsmntbombdood> ~exec raise StringIO
18:07:40 <bsmnt_bot> TypeError: exceptions must be classes, instances, or strings (deprecated), not builtin_function_or_method
18:07:45 <bsmntbombdood> booble
18:08:43 <bsmntbombdood> ~raise IRCbot
18:08:52 <bsmntbombdood> ~exec raise IRCbot
18:08:53 <bsmnt_bot> TypeError: __init__() takes at least 5 arguments (1 given)
18:09:04 <bsmntbombdood> ~exec raise IRCbot, 1,2,3,4
18:09:05 <bsmnt_bot> SyntaxError: invalid syntax
18:09:36 <bsmntbombdood> ~exec self.foo = sys.stdout
18:09:48 <bsmnt_bot> 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 <bsmntbombdood> the goo
19:56:41 <oerjan> that ba, and the ugl
19:56:45 <oerjan> *the
19:57:07 <bsmntbombdood> ~exec raise "Hi oerjan"
19:57:07 <bsmnt_bot> Hi oerjan
19:57:15 <oerjan> hi bsmnt_bot
19:57:30 <bsmntbombdood> thought that error message would be more interesting
19:58:18 <bsmntbombdood> ~exec raise Exception, "oerjan is here"
19:58:19 <bsmnt_bot> Exception: oerjan is here
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:00:56 <bsmntbombdood> ~exec raise self.bored
20:00:57 <bsmnt_bot> 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:25 <Sukoshi> ;D
20:02:28 <bsmntbombdood> ~exec exec "try:\n raise self.bored\nexcept Exception:\n raise \"not allowed to be bored\"\n"
20:02:29 <bsmnt_bot> not allowed to be bored
20:02:41 <bsmntbombdood> back to the risk game
20:03:41 -!- tgwizard has joined.
20:29:07 <bsmntbombdood> I lost :(
20:33:16 -!- sebbu has joined.
20:33:31 <bsmntbombdood> europe fails
20:33:42 <oerjan> never!
20:35:52 <bsmntbombdood> almost always
20:36:46 <bsmntbombdood> you can never hold europe
20:39:10 -!- oklopol has joined.
20:40:11 <oerjan> too many neighbors
20:41:06 <oerjan> i don't remember, can you cross between asia and america?
20:41:22 <bsmntbombdood> 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 <bsmntbombdood> or not
20:58:35 <bsmntbombdood> oh, so each node has $byte_length branches
20:59:23 <oerjan> $byte_length?
21:00:15 <oerjan> for a byte, that sounds like 8 but should be 256, I think
21:00:47 <bsmntbombdood> yeah
21:01:15 <bsmntbombdood> that's what I meant
21:19:15 <bsmntbombdood> don't you just love segfaults?
21:20:41 <oerjan> use a language with proper types :)
21:21:46 <bsmntbombdood> well, it works
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:07 <bsmntbombdood> with a segfault you at least get a core dump
21:23:18 <bsmntbombdood> quitting with an error message doesn't tell you anything
21:26:10 <bsmntbombdood> not sure what to do when a key isn't found :/
21:31:56 <oerjan> return a default, possibly inserting it first.
21:32:09 <bsmntbombdood> bsmntbombdood.mooo.com/trie.c
21:32:27 <bsmntbombdood> thunks are ugly :/
21:36:07 <bsmntbombdood> MUCH simpler implementation than a hash table
21:36:10 <bsmntbombdood> I like it.
21:37:06 <bsmntbombdood> and any data can be used as a key, without a hash function
21:39:41 <bsmntbombdood> insertion/extraction is O(keylen)
21:44:07 <SimonRC> hi
21:45:38 <bsmntbombdood> hi
21:45:55 <SimonRC> know anything about lsof
21:46:39 <bsmntbombdood> lsof(8)?
21:47:45 <SimonRC> yeah
21:48:20 <SimonRC> rm is giving me "text file busy" but lsof is listing nothing when I say lsof <filename>
21:49:50 <bsmntbombdood> I want an algorithm to play risk
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:53:06 <oerjan> ???
21:53:22 <oerjan> Hu=Human? Ki=?
21:53:35 <oerjan> or something else?
21:55:28 <SimonRC> yes#
21:55:40 <SimonRC> Hu is indeed human.
21:55:47 <SimonRC> waitamo,
21:55:56 <SimonRC> how did you know what "bimorph" meant/
21:56:21 <oklopol> bi=2, morph=morph
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:49 <oklopol> what's ki?
21:56:56 <SimonRC> (i.e. analyse things by their classical roots)
21:57:04 <bsmntbombdood> heh
21:57:12 <bsmntbombdood> Who doesn't do that?
21:57:19 <SimonRC> normal people
21:57:21 <SimonRC> muggles
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:41 <oklopol> oh
21:58:43 <oklopol> i've read that
21:58:44 <oerjan> oh, your own conworld.
21:58:50 <SimonRC> yup
21:58:58 <SimonRC> oerjan: where di you learn that word
21:59:11 <oerjan> which 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:36 <SimonRC> oerjan: conworld
21:59:39 <oerjan> i used to subscribe to the conlang list
21:59:45 <SimonRC> ah, ok
21:59:45 <bsmntbombdood> wazzat?
21:59:47 <SimonRC> small world
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:01:14 <SimonRC> ah, ok
22:03:02 <bsmntbombdood> oh man
22:03:10 <bsmntbombdood> storing those 3 entrys takes 11308 bytes
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:03:46 <bsmntbombdood> nothing
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:05:27 <bsmntbombdood> yeah
22:06:15 <bsmntbombdood> O(keylen - common_prefixlen) more
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:23 <bsmntbombdood> for memory O(n) = 1024*n I think
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:07:59 <SimonRC> oerjan: also a good idea
22:08:28 <bsmntbombdood> SimonRC: huh?
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:09:20 <SimonRC> oerjan: yup
22:09:25 <bsmntbombdood> yeah
22:10:10 <bsmntbombdood> manipulating nibbles isn't very nice
22:10:37 <oerjan> it isn't very hard either.
22:10:54 <oerjan> (b >> 4), b & 15
22:11:10 <bsmntbombdood> yeah
22:11:14 -!- Sgeo has joined.
22:11:29 <bsmntbombdood> How would that make the storage less though?
22:12:36 <bsmntbombdood> oh
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:13:29 <bsmntbombdood> then it's O(n) = 2*16*n
22:15:23 <oerjan> *4 for pointer size
22:16:22 <bsmntbombdood> oh right
22:18:10 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:19:57 <bsmntbombdood> Segmentation fault (core dumped)
22:20:02 <bsmntbombdood> sigh
22:20:13 <SimonRC> solution: use a real language
22:21:58 <bsmntbombdood> C is just about as real as it gets
22:22:30 <SimonRC> In that case, use a language with a real typesystem.
22:22:38 <SimonRC> OST s/real //
22:23:11 <bsmntbombdood> How does a typesystem prevent segfaults?
22:23:24 <bsmntbombdood> pointers means segfaults
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:46 <bsmntbombdood> D loses
22:24:49 <SimonRC> GregorR: ITYM http://www.haskell.org/
22:24:53 <SimonRC> :-P
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:15 <bsmntbombdood> http://www.beigerecords.com/cory/pizza_party/
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:38 <SimonRC> oerjan: what are they?
22:26:57 <oerjan> essentially, functions from modules to modules.
22:26:58 <SimonRC> bsmntbombdood: seen it before
22:27:02 <SimonRC> oerjan: hmm.
22:27:09 <bsmntbombdood> ITYM http://schemers.org/
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:30:14 <SimonRC> No infinite loops, ever.
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:31:45 <oerjan> i was half joking :)
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:18 * bsmntbombdood can't figure out what's wrong :(
22:33:49 <oerjan> have you changed trie.c since you posted the link?
22:33:59 <bsmntbombdood> oh duh
22:34:11 <bsmntbombdood> or not
22:34:24 <bsmntbombdood> no
22:34:41 <bsmntbombdood> get trie_nibble.c
22:35:47 <bsmntbombdood> ooops :P
22:35:55 <oerjan> ?
22:36:01 <bsmntbombdood> i'm stupid
22:36:22 <bsmntbombdood> I masked with 0xFF instead of 0xF
22:36:40 -!- tgwizard has joined.
22:37:02 <bsmntbombdood> now it works
22:37:30 <bsmntbombdood> and uses much less storage
22:37:42 <bsmntbombdood> 1836 compared to 14392
22:38:47 <bsmntbombdood> O(n) ~ n*400
22:39:59 <bsmntbombdood> now for bits...
22:40:50 <oerjan> bits?
22:41:31 <oerjan> i think bits is worse than 2-bits, which is only twice as good as nybbles.
22:41:40 <bsmntbombdood> idunno
22:42:42 <oerjan> because bits need 2 children but twice the depth of 2-bits which need 4.
22:42:57 <bsmntbombdood> yeah
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:09 <oerjan> hm?
22:46:17 <bsmntbombdood> for nibbles
22:46:39 <oerjan> 16*2*4 = 128, you mean?
22:46:46 <bsmntbombdood> yeah
22:47:40 <bsmntbombdood> oh
22:47:55 <bsmntbombdood> its 128*keylen
22:48:13 <oerjan> brilliant :)
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:49:46 <bsmntbombdood> all my keys were prefix free
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:04 <bsmntbombdood> mm
22:53:52 -!- Arrogant has joined.
22:54:09 <bsmntbombdood> not worth it
22:55:24 <oerjan> you could do it fairly cheap by putting the data section last, and just adjusting the malloc size
22:55:44 <oerjan> i think
22:57:31 -!- UpTheDownstair has changed nick to nazgjunk.
22:58:41 <bsmntbombdood> not sure if that's standard
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:03 <SimonRC> which is a bit dodgy
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:10:28 <oklopol> typefuck
23:11:48 <oklopol> it seems static import means the exact opposite in java and D
23:11:55 <oklopol> 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 <bsmntbombdood> mathmatical logic ftl
23:46:38 * oerjan bops bsmntbombdood on the head
23:47:16 <bsmntbombdood> no me understando
23:50:46 * bsmntbombdood is reading the Curry–Howard wikipedia article
23:52:34 <SimonRC> zzzz
23:52:41 <bsmntbombdood> http://upload.wikimedia.org/math/4/1/c/41c9dae376e6427b316ac0396b990d63.png
23:52:44 <bsmntbombdood> O.o
←2007-02-24 2007-02-25 2007-02-26→ ↑2007 ↑all