←2007-02-25 2007-02-26 2007-02-27→ ↑2007 ↑all
00:04:33 <oerjan> yeah, fun
00:05:31 <nazgjunk> huh.
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:00:47 <SevenInchBread> ahahah
02:00:50 <SevenInchBread> >>> 'ABC' < 'C' < 'Pascal' < 'Python'
02:00:51 <SevenInchBread> True
02:03:05 <bsmntbombdood> >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme'
02:03:06 <bsmntbombdood> True
02:05:51 <SevenInchBread> but it's not greater than SOPHIA.
02:17:22 -!- crathman_ has joined.
02:29:10 <fizzie> >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' < 'Zilog Z80 assembler'
02:29:10 <fizzie> True
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.
09:14:33 <Sukoshi> No.
11:11:15 -!- tgwizard has joined.
11:55:01 <goban> Sukoshi: no what?
12:08:12 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net).
12:08:13 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net).
12:08:13 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net).
12:08:13 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net).
12:08:14 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net).
12:08:14 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net).
12:08:15 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net).
12:08:15 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net).
12:08:15 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net).
12:08:15 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net).
12:08:15 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net).
12:08:22 -!- bsmntbombdood has quit (Remote closed the connection).
12:09:10 -!- bsmntbombdood has joined.
12:09:10 -!- tgwizard has joined.
12:09:10 -!- anonfunc has joined.
12:09:10 -!- bsmnt_bot has joined.
12:09:10 -!- AfterDeath has joined.
12:09:10 -!- helios24 has joined.
12:09:10 -!- sp3tt has joined.
12:09:10 -!- Shaunaf has joined.
12:09:10 -!- meatmanek has joined.
12:09:10 -!- puzzlet has joined.
12:09:10 -!- fizzie has joined.
12:09:10 -!- cmeme has joined.
13:02:14 -!- csaba has joined.
13:02:23 <csaba> Hello
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:32 <ais523> !ps d
13:49:36 <EgoBot> 1 ais523: daemon ul bf
13:49:38 <EgoBot> 2 ais523: ps
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:08 <ais523> !help
13:53:09 <ais523> Now what's happened to EgoBot?
13:53:09 <ais523> !kill 1
13:53:14 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net).
13:53:14 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net).
13:53:14 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net).
13:53:14 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net).
13:53:15 -!- bsmntbombdood has quit (zelazny.freenode.net irc.freenode.net).
13:53:15 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net).
13:53:15 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net).
13:53:16 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net).
13:53:16 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net).
13:53:16 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net).
13:53:17 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net).
13:53:17 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- nooga has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- goban has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net).
13:53:18 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net).
13:53:19 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net).
13:53:44 -!- sebbu has joined.
13:53:44 -!- Sukoshi has joined.
13:53:44 -!- nooga has joined.
13:53:44 -!- goban has joined.
13:53:44 -!- GregorR has joined.
13:53:44 -!- tokigun has joined.
13:53:44 -!- EgoBot has joined.
13:53:47 -!- bsmntbombdood has joined.
13:53:47 -!- tgwizard has joined.
13:53:47 -!- anonfunc has joined.
13:53:47 -!- bsmnt_bot has joined.
13:53:47 -!- AfterDeath has joined.
13:53:47 -!- helios24 has joined.
13:53:47 -!- sp3tt has joined.
13:53:47 -!- Shaunaf has joined.
13:53:47 -!- meatmanek has joined.
13:53:47 -!- puzzlet has joined.
13:53:47 -!- fizzie has joined.
13:53:47 -!- cmeme has joined.
13:53:50 -!- oklopol has joined.
13:53:50 -!- pgimeno has joined.
13:53:50 -!- sekhmet has joined.
13:53:50 -!- NK\ has joined.
13:53:50 -!- SimonRC has joined.
13:53:56 <ais523> !help
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:07 <ais523> !ps d
13:54:10 <EgoBot> 1 ais523: daemon ul bf
13:54:12 <EgoBot> 2 ais523: ps
13:55:06 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373003
13:55:22 <ais523> !deadfish iiissoo
13:55:24 <EgoBot> >>
13:55:26 <EgoBot> >>
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:58:41 <ais523> !undaemon deadfish
13:58:44 <EgoBot> Process 2 killed.
13:59:14 <ais523> !deadfish funge93 http://pastebin.ca/raw/373012
13:59:16 <EgoBot> Huh?
13:59:24 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373012
13:59:32 <ais523> !deadfish iiisso
14:00:35 <ais523> !undaemon deadfish
14:00:38 <EgoBot> Process 2 killed.
14:00:40 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373016
14:00:44 <ais523> !deadfish iiisso
14:00:48 <EgoBot> 81
14:01:02 <ais523> !deadfish dddddddo
14:01:04 <EgoBot> 74
14:02:42 <ais523> !undaemon deadfish
14:02:44 <EgoBot> Process 2 killed.
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:21:37 <bsmnt_bot> !deadfish iisso
14:21:40 <EgoBot> 16
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:28:16 <nazgjunk> that would be pretty awesome
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:01:51 <oerjan> hm...
16:01:56 <oerjan> >>>True
16:02:01 <oerjan> hm...
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:04 <bsmnt_bot> SyntaxError: invalid syntax
16:11:06 <oerjan> darn
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:29 <bsmnt_bot> SyntaxError: invalid syntax
16:11:44 <oerjan> whoops
16:11:53 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1)))))
16:11:59 <oerjan> >>>1+2
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:12:58 <bsmnt_bot> 3
16:13:14 <oerjan> ~exec sys.stdout(repr(eval("1+2")))
16:13:14 <bsmnt_bot> 3
16:13:38 <oerjan> wait...
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:37 <bsmnt_bot> 3
16:15:41 <oerjan> >>> 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:16 <oerjan> >>>test
16:16:17 <bsmnt_bot> #esoteric
16:16:41 <oerjan> ~exec self.raw_regex_queue.pop()
16:17:31 <oerjan> strange. must be that darn scope again.
16:17:45 <oerjan> eh wait
16:18:00 <oerjan> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2)))))
16:18:05 <oerjan> >>>1+2
16:18:06 <bsmnt_bot> 3
16:18:08 <oerjan> finally
16:18:27 <oerjan> >>> "Pascal" < "Python"
16:18:27 <bsmnt_bot> True
16:18:39 <oerjan> >>>"Test"
16:18:40 <bsmnt_bot> 'Test'
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:35 <ais523> %%Hello, world!
16:20:35 <bsmnt_bot> True
16:20:55 <ais523> I don't really know much Python
16:22:06 <ais523> >>>"Does this work for me too?"
16:22:07 <bsmnt_bot> 'Does this work for me too?'
16:22:33 <ais523> >>>sys.stdout("Nested printing")
16:22:33 <bsmnt_bot> Nested printing
16:22:34 <bsmnt_bot> None
16:23:14 <ais523> >>>y
16:23:15 <bsmnt_bot> <_sre.SRE_Match object at 0xb7c6b0f8>
16:23:26 <ais523> >>>y.group(2)
16:23:27 <bsmnt_bot> 'y.group(2)'
16:23:35 <ais523> >>>x
16:23:36 <bsmnt_bot> ':ais523!n=chatzill@chillingi.eee.bham.ac.uk PRIVMSG #esoteric :>>>x'
16:23:49 <oerjan> that was strange
16:24:22 <ais523> >>>eval(y.group(2))
16:24:23 -!- bsmnt_bot has quit (Remote closed the connection).
16:24:24 <oerjan> oh wait, it wasn't :)
16:24:25 -!- bsmnt_bot has joined.
16:24:30 <oerjan> it was nearly a quine
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:25:42 <bsmnt_bot> '\'single"double'
16:26:09 <ais523> >>>'>>>'+y.group(2)
16:26:10 <bsmnt_bot> ">>>'>>>'+y.group(2)"
16:26:44 <ais523> that would be a quine-by-cheating if it weren't for the repr()
16:26:55 <oerjan> right
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:28:54 <oerjan> which one?
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:27 <oerjan> wait...
16:30:29 <ais523> ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2)))
16:30:32 <ais523> <<<testing
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:30:52 <ais523> damn typos
16:30:54 <ais523> <<<testing
16:30:55 <bsmnt_bot> testing
16:31:17 <oerjan> that may have been the original problem too
16:31:37 <ais523> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:38 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:31:42 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:42 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:31:46 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:46 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:31:50 <oerjan> wow
16:31:50 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:51 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:31:54 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:55 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:31:58 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:31:58 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:02 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:02 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:06 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:06 <ais523> ~quit
16:32:06 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:10 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:11 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:14 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:14 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:18 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:19 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:20 <ais523> !undaemon ul
16:32:22 <EgoBot> <<<!ul (a(<<<!ul )~*(:^)*S):^
16:32:23 <bsmnt_bot> !ul (a(<<<!ul )~*(:^)*S):^
16:32:24 <EgoBot> Process 1 killed.
16:32:26 <EgoBot> Huh?
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:32 <oerjan> right.
16:35:33 <ais523> !undaemon ul
16:35:36 <EgoBot> ~yy
16:35:37 <ais523> !daemon ul bf http://pastebin.ca/raw/367774
16:35:38 <EgoBot> Process 1 killed.
16:35:58 <ais523> I have no idea what random code I fed EgoBot by mistake there...
16:36:01 <oerjan> wow :)
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:36:59 <oerjan> something in Lisp.
16:37:33 <oerjan> there are plenty of - in Lisp.
16:37:51 <oerjan> and much fewer dots.
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:41:48 <oerjan> (and no <)
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:26 <ais523> !help
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:28 <EgoBot> Hello, world!
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:49:42 <EgoBot> GregorR, I now do IRP
16:49:49 <GregorR> O_O
16:49:50 <nazgjunk> hah.
16:49:58 <GregorR> Oh
16:49:59 <GregorR> Pff
16:50:08 <GregorR> For a quarter of a second, you'd fooled me.
16:50:22 <GregorR> With my own damn bot X-P
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:53:52 <ais523> !deadfish o
16:53:56 <EgoBot> 16
16:54:04 <ais523> !deadfish so
16:54:06 <EgoBot> 0
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:28 <oerjan> well...
16:57:57 <oerjan> squaring is module size(int), isn't it?
16:58:00 <oerjan> *modulo
16:58:08 <oerjan> i mean *maxint
16:58:17 <oerjan> i mean, argh!
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:58:41 <ais523> !deadfish iiio
16:58:44 <EgoBot> 3
16:58:49 <ais523> !deadfish so
16:58:52 <EgoBot> 9
16:58:53 <ais523> !deadfish so
16:58:56 <EgoBot> 81
16:58:57 <ais523> !deadfish so
16:59:00 <EgoBot> 6561
16:59:01 <ais523> !deadfish so
16:59:04 <EgoBot> 43046721
16:59:06 <ais523> !deadfish so
16:59:08 <EgoBot> -501334399
16:59:17 <ais523> that can't be right
16:59:28 <ais523> so that's probably an indication of maxint's value
16:59:28 <oerjan> lessee..
17:00:51 <ais523> 32 bits
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:27 <ais523> !undaemon deadfish
17:03:28 <EgoBot> Process 2 killed.
17:03:42 <ais523> !daemon deadfish funge93 http://pastebin.ca/raw/373016
17:04:21 <ais523> !ps d
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:04:30 <EgoBot> 4 ais523: ps
17:04:34 <ais523> !kill 3
17:04:36 <EgoBot> Process 3 killed.
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:04 <ais523> of course
17:06:10 <ais523> !deadfish iiio
17:06:12 <EgoBot> 3
17:06:15 <ais523> !deadfish ssso
17:06:18 <EgoBot> 6561
17:06:26 <ais523> !deadfish isssso
17:06:28 <EgoBot> 83951616
17:06:35 <ais523> !deadfish so
17:06:38 <EgoBot> 0
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:09:45 <oerjan> oh right.
17:10:14 <oerjan> wait a moment...
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:30 <oerjan> which it was
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:17:42 <oerjan> seems trivial.
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:19:42 <bsmnt_bot> ais523
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:44 <ais523> that's the one
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:44 <bsmnt_bot> Hello, kxspxr!
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:25:49 <ais523> as far as I remember
17:26:04 <ais523> ~exec sys.stdout("a\nb\nc\nd\ne\nf\ng\nh")
17:26:05 <bsmnt_bot> a
17:26:05 <bsmnt_bot> b
17:26:05 <bsmnt_bot> c
17:26:06 <bsmnt_bot> d
17:26:06 <bsmnt_bot> e
17:26:07 <bsmnt_bot> f
17:26:09 <bsmnt_bot> g
17:26:10 <bsmnt_bot> h
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:29:43 <oerjan> ok
17:29:53 <oerjan> well i still don
17:30:05 <oerjan> 't get the argument.
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:40:28 <oerjan> right
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:02 <oerjan> hm...
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:08 <oerjan> does it?
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:47:39 <bsmnt_bot> Hello, sebbu2!
17:49:09 <ais523> 10 LET 256 = 0
17:49:22 <ais523> 20 LET -1 = 0
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:00 <oerjan> ah, Forte
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:41 <oerjan> it is?
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:57:23 * ais523 tries again
17:57:26 <ais523> it worked this time
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:04 <bsmnt_bot> Hello, UpTheDownstair!
18:04:13 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
18:07:05 -!- sebbu has quit (Connection timed out).
18:09:48 <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:41:05 * SimonRC goes to dinner.
18:42:58 * oerjan finds a suspicious absense of information about square roots mod n when n is a prime power
18:44:44 <oerjan> oh wait.
18:44:55 * oerjan slaps head
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:47:22 <bsmnt_bot> Hello, calamari!
18:47:39 <calamari> wow, a greet bot :)
18:47:41 <calamari> hi
18:47:53 <calamari> C++ > calamari :(
18:48:33 <oerjan> >>> "C++" > "Calamari"
18:48:34 <bsmnt_bot> False
18:48:45 <oerjan> bsmnt_bot doesn't agree
18:48:52 <calamari> cool, I have a chance then
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:22 <bsmnt_bot> Hello, goban!
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.
18:59:36 <bsmnt_bot> Hello, crathman!
19:00:12 <calamari> oerjan: is bsmnt_bot yours?
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:08:59 <bsmnt_bot> Hello, goban!
19:18:54 -!- goban has quit (Read error: 54 (Connection reset by peer)).
19:19:09 -!- goban has joined.
19:19:09 <bsmnt_bot> Hello, goban!
19:21:24 <bsmntbombdood> oerjan: yeah, sys.stdout is throttled, but not for multiple calls
19:21:53 <oerjan> oh
19:22:11 <bsmntbombdood> >>> 1+1
19:22:11 <bsmnt_bot> 2
19:22:15 <bsmntbombdood> fun :)
19:22:34 <bsmntbombdood> >>> def f(x): return x
19:22:34 -!- bsmnt_bot has quit (Remote closed the connection).
19:22:37 -!- bsmnt_bot has joined.
19:22:41 <oerjan> ahem
19:22:43 <bsmntbombdood> yep.
19:22:50 <bsmntbombdood> eval only does expressions
19:22:51 <oerjan> it does only expressions.
19:23:02 <bsmntbombdood> stupid python
19:23:07 <oerjan> hmm...
19:23:19 <oerjan> can exec return the result?
19:23:29 <bsmntbombdood> I was thinking about a repl for it
19:23:35 <bsmntbombdood> no:(
19:23:43 <bsmntbombdood> exec is a statement
19:25:01 <oerjan> hmph. so neither eval nor exec will work as repl for statements.
19:25:17 <bsmntbombdood> you have to do analysis of the code
19:25:31 <bsmntbombdood> exec statements, eval expressions
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:27:21 <bsmntbombdood> it is
19:27:28 <bsmntbombdood> but you're not using do_exec
19:27:44 <oerjan> i'm not? hm.
19:27:56 <bsmntbombdood> nope
19:28:08 <bsmntbombdood> when callbacks all executed, exceptions aren't caught
19:28:15 <oerjan> lessee...
19:28:19 <bsmntbombdood> you used plain "eval" in the callback
19:33:43 <SimonRC> hmm
19:33:48 <SimonRC> ~exec sys=0
19:34:02 <SimonRC> ~exec print __names__
19:34:02 <bsmnt_bot> NameError: name '__names__' is not defined
19:34:08 <SimonRC> ~exec print __globals__
19:34:09 <bsmnt_bot> NameError: name '__globals__' is not defined
19:34:26 <SimonRC> hmm
19:34:44 <SimonRC> ~exec print type(sys0
19:34:45 <bsmnt_bot> SyntaxError: unexpected EOF while parsing
19:34:48 <SimonRC> ~exec print type(sys)
19:34:53 <SimonRC> hmm
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:34:59 <bsmnt_bot> SyntaxError: invalid syntax
19:35:26 <bsmntbombdood> ~exec sys.stdout(type(type))
19:35:27 <bsmnt_bot> <type 'type'>
19:35:39 <bsmntbombdood> print doesn't work
19:36:11 <lament> ~exec sys.exit()
19:36:24 <oerjan> do callbacks run in threads or just do_exec's
19:36:32 <bsmntbombdood> oerjan: neither
19:36:38 <bsmntbombdood> callbacks run in the main thread
19:36:49 <lament> ~exec sys.stdout("hello")
19:36:50 <bsmnt_bot> 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:19 <bsmnt_bot> 2.4.3 (#1, Oct 25 2006, 21:45:16)
19:37:19 <bsmnt_bot> [GCC 4.1.1 (Gentoo 4.1.1)]
19:37:24 <bsmntbombdood> do_exec starts a thread
19:37:32 <bsmntbombdood> ~exec exec "
19:37:32 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
19:37:34 <bsmntbombdood> erm
19:37:34 <oerjan> that's what i thought.
19:37:43 <bsmntbombdood> ~exec exec "
19:37:44 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
19:37:46 <bsmntbombdood> ~exec exec "
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:38:51 <lament> (and call them later)
19:38:51 <bsmntbombdood> hackishly
19:39:13 <bsmntbombdood> ~exec self.protected(lambda: raise "foo")
19:39:14 <bsmnt_bot> SyntaxError: invalid syntax
19:39:15 <oerjan> sure, but you need to use exec with strings and \n escapes
19:39:23 <bsmntbombdood> bloody hell
19:39:29 <SimonRC> ~exec sys.__dict__
19:39:44 <SimonRC> ~exec print sys.__dict__
19:39:48 <SimonRC> :-S
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:33 <bsmntbombdood> baad idea
19:40:46 -!- goban has quit (Connection timed out).
19:40:49 <bsmntbombdood> although that shouldn't have flooded
19:41:21 -!- goban has joined.
19:41:29 <oerjan> there may be something about long lines and flooding
19:42:01 <bsmntbombdood> yeah
19:42:03 <oklopol> ~exec print "a"
19:42:04 <lament> ~exec self.owner = 'lament!\\S*lament@\\S*'
19:42:24 <lament> ~exec sys.stdout(self.owner)
19:42:25 <bsmnt_bot> lament!\S*lament@\S*
19:42:28 <lament> worked :)
19:42:32 <bsmntbombdood> lament: won't do anything
19:42:36 <oerjan> you rascal you
19:42:59 <oerjan> why not?
19:43:03 <bsmntbombdood> regexes are generated when the bot is initialized
19:43:07 <bsmntbombdood> not dynamically
19:43:19 <lament> and self.owner is never looked up again?
19:43:20 <bsmntbombdood> anyway, you can do everything from ~exec
19:43:25 <bsmntbombdood> lament: never
19:43:32 <lament> sounds...useful
19:43:50 <bsmntbombdood> read the codez
19:44:30 <lament> ~exec open('lament', 'w').write('hello')
19:44:31 <bsmnt_bot> IOError: [Errno 13] Permission denied: 'lament'
19:45:10 <bsmntbombdood> no write access anywhere
19:45:16 <bsmntbombdood> exce[t
19:45:26 <bsmntbombdood> ~exec sys.stdout(os.listdir("."))
19:45:27 <bsmnt_bot> ['bin', 'bot', 'etc', 'lib', 'usr']
19:45:31 <bsmntbombdood> ~exec sys.stdout(os.listdir("/bot"))
19:45:32 <bsmnt_bot> ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'start.sh', 'better.sh', 'ircbot.py']
19:45:42 <bsmntbombdood> /bot/test.pickle
19:45:46 <bsmntbombdood> is writable
19:45:55 <lament> mm
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:00 <bsmntbombdood> heh
19:49:12 <lament> oerjan: shhh, that's only until we get root
19:49:19 <SimonRC> ~exec sys.stdout=0
19:49:24 <SimonRC> ~exec sys.stderr=0
19:49:33 <SimonRC> ~exec del sys
19:49:34 <bsmnt_bot> NameError: name 'sys' is not defined
19:49:36 <SimonRC> hehehe
19:49:39 <SimonRC> !
19:49:42 <EgoBot> Huh?
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:49:56 <SimonRC> bah
19:51:37 <bsmntbombdood> i r clevar!
19:55:19 <lament> ~exec sys.stdout(os.popen('ls').read())
19:56:06 <bsmntbombdood> ls isn't in the chroot
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:56:15 <SimonRC> hmm
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:12 <bsmntbombdood> 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:23 <SimonRC> sigh
19:57:31 <SimonRC> ~exec sys.__dict__.clear()
19:57:34 <bsmntbombdood> you can't do anything to sys
19:57:35 -!- bsmnt_bot has quit (Remote closed the connection).
19:57:38 -!- bsmnt_bot has joined.
19:57:38 <bsmntbombdood> it gets replaced
19:57:49 * SimonRC tries it again
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:12 <bsmntbombdood> interesting
19:58:15 <bsmntbombdood> I know
19:58:17 <SimonRC> oh, now it did
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
19:59:46 <SimonRC> heh
20:00:00 <SimonRC> hmm http://www.angryfacts.com/
20:01:01 <bsmntbombdood> ok fixed
20:01:39 <bsmntbombdood> and back to class i go
20:04:24 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]").
20:36:28 -!- ShadowHntr has joined.
21:07:17 -!- goban has quit (Read error: 104 (Connection reset by peer)).
21:07:43 -!- goban has joined.
21:17:53 -!- UpTheDownstair has changed nick to nazgjunk.
21:26:59 -!- goban has quit (Connection reset by peer).
21:27:02 -!- goban has joined.
21:45:07 -!- goban has quit (Remote closed the connection).
21:45:17 -!- goban has joined.
21:52:36 -!- ShadowHntr has quit (Client Quit).
21:52:37 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:03:27 -!- sebbu has joined.
22:07:56 -!- goban has quit (Connection reset by peer).
22:08:01 -!- goban has joined.
22:16:59 -!- goban has quit (Operation timed out).
22:22:22 -!- sebbu2 has quit (Connection timed out).
22:27:55 -!- goban has joined.
22:30:02 <bsmntbombdood> ~exec self.protected(lambda: 1/0)
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"
22:30:33 <bsmntbombdood> ~exec self.protected(lambda: 1/0)
22:30:41 <bsmntbombdood> fun
23:01:56 -!- digital_me has joined.
23:02:05 <oklopol> ~exec print "I wanna play too :<"
23:03:09 * bsmntbombdood needs to fix print
23:04:33 <oklopol> oh yeah
23:05:02 <oklopol> ~exec sys.stdout("Does this work?")
23:05:03 <bsmnt_bot> Does this work?
23:05:08 <oklopol> :DDDDD
23:05:10 <oklopol> yayayay!
23:05:23 <oklopol> ~exec sys.stdout([i+1 for i in range(3)])
23:05:24 <bsmnt_bot> [1, 2, 3]
23:05:39 <oklopol> ~exec sys.stdout((i for i in range 3))
23:05:40 <bsmnt_bot> SyntaxError: invalid syntax
23:05:44 <oklopol> orly
23:05:52 <oklopol> ~exec sys.stdout((1,2,3,4))
23:05:52 <bsmnt_bot> (1, 2, 3, 4)
23:06:00 <oklopol> omg i'm so pro at python
23:06:33 <bsmntbombdood> indeed
23:07:27 <bsmntbombdood> oh man
23:07:36 <bsmntbombdood> #scheme just had a great esolang idea
23:07:49 <bsmntbombdood> a lazy non-pure language
23:07:57 <oklopol> ~exec sys.stdout(map((lambda a : a+"."),["a","b","c","d"]))
23:07:58 <bsmnt_bot> ['a.', 'b.', 'c.', 'd.']
23:08:10 <oklopol> what would that mean?
23:08:27 <oklopol> non-pure... non-imperative?
23:08:35 <oklopol> i'm a bit lost on terms from time to time
23:08:48 <bsmntbombdood> non-pure is imperative
23:08:54 <oklopol> yeah
23:08:57 <oklopol> i meant that
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:10:29 <bsmntbombdood> what?
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:11:34 <bsmntbombdood> you mean like all functional languages?
23:11:49 <oklopol> no
23:12:38 <oklopol> hmm
23:12:40 <bsmntbombdood> then what?
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:01 <oklopol> for any two functions?
23:13:10 <oerjan> nope, you need the instance i mentioned :)
23:13:22 <oklopol> mmmmmmm yeah :P
23:13:42 <bsmntbombdood> you mean like f+g = \x.f(x) + g(x)?
23:14:15 <oklopol> usually it means that
23:14:32 <oklopol> but i wouldn't use the same basic arithmetic operations
23:14:49 <oklopol> more a textual conversion
23:14:56 <oklopol> so it wouldn't make sence like that
23:15:19 <bsmntbombdood> (define (f+ f g) (lambda (x) (+ (f x) (g x)))?
23:15:35 -!- sebbu2 has joined.
23:15:39 <oklopol> :D
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:16:34 <oklopol> like zip
23:17:03 <oklopol> "shifted"
23:17:13 <oklopol> i love my vocabulary
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:18:43 <oklopol> functionalbolge
23:18:51 <oklopol> but with a better name
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:00 <oklopol> *-s
23:21:53 <oklopol> hmm... maybe i think about this at school tomorrow
23:22:04 <oklopol> this isn't a good time
23:22:28 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)).
23:22:41 <bsmntbombdood> ~exec fooo
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:32 <oklopol> ~exec exec(foo)
23:23:33 <bsmnt_bot> NameError: name 'foo' is not defined
23:23:36 <oklopol> :<
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:29 <oklopol> ~exec exec(foo)
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:25:05 <bsmnt_bot> okokokoko
23:25:08 <oklopol> :DDDD
23:25:19 <oklopol> me so proud
23:28:50 <oklopol> ~exec self.__dict__["oko"]=[]
23:29:00 <oklopol> ~exec sys.stdout(self.__dict__["oko"])
23:29:01 <bsmnt_bot> []
23:29:08 <oklopol> ~exec self.__dict__["oko"].append("sdfg")
23:29:09 <oklopol> ~exec sys.stdout(self.__dict__["oko"])
23:29:10 <bsmnt_bot> ['sdfg']
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:17 <oklopol> darn.
23:37:22 <oklopol> execs
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:39:58 <oklopol> hmm
23:40:06 <oklopol> soon either i get kickbanned or the bot dies...
23:40:10 <oklopol> well, let's continue
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:40:37 <oklopol> ...? aha
23:40:39 <AfterDeath> lol
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 <bsmntbombdood> looking for "\n".join ?
23:41:36 <bsmnt_bot> NameError: name 'brainfuck' is not defined
23:41:39 <oklopol> :P
23:41:43 <oklopol> i have no idea :DD
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:19 <bsmnt_bot> SyntaxError: invalid syntax
23:42:42 <oklopol> oh, yeah, that's a nice syntax
23:42:46 <oklopol> import string?
23:42:49 <oklopol> i dunno
23:43:06 <oklopol> exec
23:43:17 <oklopol> ~exec "\n".join(self.B) + "self.brainfuck = brainfuck"
23:43:18 <oklopol> ?
23:43:30 <oklopol> ~exec brainfuck("+++.")
23:43:31 <bsmnt_bot> NameError: name 'brainfuck' is not defined
23:44:01 <oklopol> bsmntbombdood, help me! :D
23:44:18 <bsmntbombdood> you have to execute it
23:44:27 <oklopol> with exec() ?
23:44:33 <bsmntbombdood> yeah
23:44:38 <oklopol> it's a function, how do i do that? :o
23:44:46 <lament> eval
23:45:05 <bsmntbombdood> exec
23:45:06 <oklopol> ~exec eval("brainfuck(+++.)")
23:45:07 <bsmnt_bot> SyntaxError: invalid syntax
23:45:11 <bsmntbombdood> no...
23:45:16 <oklopol> ~exec exec("brainfuck(+++.)")
23:45:17 <bsmnt_bot> SyntaxError: invalid syntax
23:45:17 <oklopol> then?
23:45:20 <oklopol> :P
23:45:33 <bsmntbombdood> execute the function code
23:45:40 <bsmntbombdood> you have a syntax error in it
23:45:48 <oklopol> might be
23:45:51 <oklopol> actually
23:46:03 <oklopol> i just took a random thingie
23:46:41 <oklopol> it works
23:47:05 <oklopol> ~exec exec(self.__dict__["B"])
23:47:06 <bsmnt_bot> SyntaxError: invalid syntax
23:47:18 <oklopol> ~exec eval(self.__dict__["B"])
23:47:19 <bsmnt_bot> SyntaxError: invalid syntax
23:47:28 <oklopol> i see...
23:47:37 <oklopol> might be a copy paste error
23:47:42 <oklopol> :PP
23:47:45 <oklopol> that'd be fun!
23:48:14 <oklopol> the tabs might now work
23:49:02 <bsmntbombdood> look in #bsmnt_bot_errors to see where the errors are
23:49:09 <oklopol> good idea
23:49:29 <oklopol> ~exec exec(self.__dict__["B"])
23:49:29 <bsmnt_bot> SyntaxError: invalid syntax
23:52:33 <oklopol> actually
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...
←2007-02-25 2007-02-26 2007-02-27→ ↑2007 ↑all