←2007-03-11 2007-03-12 2007-03-13→ ↑2007 ↑all
00:07:11 -!- nazgjunk has quit ("Leaving").
00:16:59 -!- bsmntbombdood has changed nick to Zorpon.
00:32:55 <Zorpon> hmm
00:32:59 <Zorpon> I should learn smalltalk
00:38:11 -!- Zorpon has changed nick to Zorpon_.
00:38:53 -!- Zorpon_ has changed nick to Zorpon.
00:43:20 <SimonRC> Zorpon: yes
00:43:39 * Zorpon makes it so
00:43:43 <SimonRC> It's a *real* OO language, unlike Java
00:48:04 <Zorpon> eww java
01:02:32 <Zorpon> what's with the : on the end of messages
01:03:36 <oerjan> it distinguishes them from variables
01:03:42 <oerjan> if i remember correctly.
01:12:18 <SevenInchBread> yeah smalltalk is nifty.
01:12:27 <SevenInchBread> it's just the call syntax.
01:12:54 * SevenInchBread is basing his Sophia language partially on Smalltalk.
01:15:26 <Zorpon> I think it has something to do with arguments
01:16:04 <oerjan> well, each : part is followed by an argument, if that's what you mean.
01:18:38 <lament> i love smalltalk syntx
01:19:44 <SimonRC> I like the fuck-around-with-ability of it
01:20:09 <SimonRC> you can re-define classes and all instances will immediately start using the new version
01:20:25 <Zorpon> reminds me of ruby
01:20:31 <Zorpon> 1 to: 20 do: [:x| x printNl ] !
01:21:17 <SimonRC> Haskell: mapM_ print [1..20]
01:21:25 <SimonRC> That's about as good as you can get
01:21:42 <SimonRC> Haskell: also the world's best imperative language.
01:21:44 <SimonRC> :-P
01:22:25 <SimonRC> I don't see any others with such elegant rules for handling first-class code blocks
01:22:54 <SimonRC> especially the issue of creating new variables versus using existing ones.
01:27:47 <Zorpon> This tutorial isn't too good
01:28:09 <SimonRC> I liked the Dolphin Smalltalk tutorial.
01:34:05 <SevenInchBread> Ruby was partially based off of Smalltalk
01:36:41 <GregorR> !ps d
01:36:43 <EgoBot> 1 ais523: daemon ul bf
01:36:45 <EgoBot> 2 ais523: daemon deadfish funge93
01:36:47 <EgoBot> 3 GregorR: ps
01:47:21 <Zorpon> interesting at the use of lambda for if
01:55:46 -!- tgwizard has quit (Remote closed the connection).
02:04:50 -!- ShadowHntr has joined.
02:32:11 -!- calamari has quit ("Leaving").
02:56:04 -!- Sukoshi has joined.
02:56:08 <Sukoshi> Java users home?
02:56:18 <Sukoshi> (I'm sorry, I'm in a big hurry.)
03:03:27 <Zorpon> eew java
03:09:52 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)").
03:13:25 -!- calamari has joined.
03:26:35 <RodgerTheGreat> haha! Nonlogic has absorbed yet another denizen of #Esoteric!
03:26:43 * RodgerTheGreat cackles maniacally.
03:37:12 <oerjan> Someone could make a movie about an evil Internet entity which absorbs people.
03:37:22 <oerjan> They could call it The Blog.
03:37:39 <RodgerTheGreat> heheh
03:43:09 -!- oerjan has quit ("Good night").
03:50:19 -!- SevenInchBread has quit (Read error: 113 (No route to host)).
04:11:14 <RodgerTheGreat> good night, guys
04:11:31 -!- RodgerTheGreat has quit.
04:17:44 -!- ShadowHntr has quit ("End of line.").
04:58:46 -!- Zorpon has changed nick to bsmntbombdood.
06:00:42 -!- ShadowHntr has joined.
06:08:30 -!- Arrogant has joined.
06:11:58 -!- calamari has quit ("Leaving").
06:14:37 -!- GreaseMonkey has joined.
06:29:12 -!- ShadowHntr has quit ("End of line.").
06:36:56 <GreaseMonkey> afk food
06:56:15 <GreaseMonkey> back
07:10:58 -!- anonfunc_ has joined.
07:11:22 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)).
07:13:37 -!- anonfunc_ has quit (Read error: 104 (Connection reset by peer)).
07:15:04 -!- anonfunc has joined.
07:18:35 -!- anonfunc has quit (Read error: 104 (Connection reset by peer)).
07:19:34 -!- anonfunc_ has joined.
07:20:08 -!- anonfunc_ has quit (Remote closed the connection).
07:59:59 -!- clog has quit (ended).
08:04:58 -!- clog has joined.
08:04:58 -!- Arrogant has quit ("Leaving").
08:10:25 -!- Sgeo has quit ("Leaving").
09:19:31 -!- Sukoshi has joined.
09:27:25 -!- GreaseMonkey has quit (Remote closed the connection).
09:28:44 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)").
09:31:00 -!- jix__ has joined.
09:31:58 -!- jix__ has changed nick to jix.
09:44:58 -!- oerjan has joined.
12:06:35 -!- oerjan has quit ("leaving").
12:23:03 -!- ais523 has joined.
12:32:52 -!- jix__ has joined.
12:33:16 * ais523 has written one of the slowest 99 bottles of beer programs in history
12:33:45 <ais523> because Forte is an order of n slower than every other language
12:33:56 <ais523> so bottles-of-beer programs are O(n^2)
12:34:21 <ais523> and on top of that, it's running on an inefficient implementation
12:43:01 -!- jix has quit (Read error: 110 (Connection timed out)).
12:49:10 <ais523> I was wondering whether C was, in fact, Turing-complete
12:49:29 <ais523> traditionally it's been said to be bounded-storage because sizeof(void*) has to be finite
12:49:54 <ais523> but I think it's a push-down automaton, due to the possibility of using register variables (which don't have to have addresses) and recursion
13:01:34 <ais523> ~exec eval("for n in [1,2,3,4]:\n sys.stdout(n)\n")
13:01:35 <bsmnt_bot> SyntaxError: invalid syntax
13:02:36 <ais523> ~exec eval("for n in count(4):\n sys.stdout(n)\n")
13:02:36 <bsmnt_bot> SyntaxError: invalid syntax
13:02:47 <ais523> ~exec eval("sys.stdout(4)")
13:02:48 <bsmnt_bot> 4
13:02:54 <ais523> ~exec eval("sys.stdout(4)\n")
13:02:55 <bsmnt_bot> 4
13:03:07 <ais523> ~exec eval("sys.stdout(n)\n")
13:03:08 <bsmnt_bot> NameError: name 'n' is not defined
13:03:23 <ais523> ~exec eval("for n in (count(4)):\n sys.stdout(n)\n")
13:03:24 <bsmnt_bot> SyntaxError: invalid syntax
13:04:49 <ais523> ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\n")
13:04:49 <bsmnt_bot> SyntaxError: invalid syntax
13:06:06 <ais523> ~exec eval("for n in [1, 2, 3]:\n sys.stdout(n)\nsys.stdout('Finished.')\n")
13:06:06 <bsmnt_bot> SyntaxError: invalid syntax
13:06:43 <ais523> ~exec eval("sys.stdout(1)\nsys.stdout(2)")
13:06:43 <bsmnt_bot> SyntaxError: invalid syntax
13:06:59 <ais523> so eval seems not to accept multi-line strings
13:07:12 <ais523> ~exec eval("sys.stdout(1)\rsys.stdout(2)")
13:07:13 <bsmnt_bot> SyntaxError: invalid syntax
13:07:26 <ais523> ~exec sys.stdout(1)\nsys.stdout(2)
13:07:26 <bsmnt_bot> SyntaxError: invalid token
13:07:32 <ais523> ~exec sys.stdout(1)\n sys.stdout(2)
13:07:38 <bsmnt_bot> SyntaxError: invalid syntax
13:09:35 <ais523> ~exec eval('''sys.stdout(1)\nsys.stdout(2)''')
13:09:35 <bsmnt_bot> SyntaxError: invalid syntax
13:09:46 <ais523> ~exec sys.stdout("1\n2")
13:09:46 <bsmnt_bot> 1
13:09:46 <bsmnt_bot> 2
13:09:53 <ais523> ~exec sys.stdout("1\r2")
13:09:53 <bsmnt_bot> 1
13:10:02 <ais523> ~exec sys.stdout("1\t2")
13:10:02 <bsmnt_bot> 12
13:11:10 <ais523> ~exec sys.stdout("for n in [1, 2, 3]: sys.stdout(n)")
13:11:11 <bsmnt_bot> for n in [1, 2, 3]: sys.stdout(n)
13:11:18 <ais523> ~exec eval("for n in [1, 2, 3]: sys.stdout(n)")
13:11:18 <bsmnt_bot> SyntaxError: invalid syntax
13:11:24 <ais523> ~exec exec("for n in [1, 2, 3]: sys.stdout(n)")
13:11:27 <bsmnt_bot> 1
13:11:29 <bsmnt_bot> 2
13:11:31 <bsmnt_bot> 3
13:11:39 <ais523> ~exec sys.stdout("for n in [1, 2, 3]:\n sys.stdout(n)")
13:11:40 <bsmnt_bot> for n in [1, 2, 3]:
13:11:40 <bsmnt_bot> sys.stdout(n)
13:11:52 <ais523> ~exec exec("for n in [1, 2, 3]:\n sys.stdout(n)")
13:11:53 <bsmnt_bot> 1
13:11:53 <bsmnt_bot> 2
13:11:53 <bsmnt_bot> 3
13:13:14 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(t)")
13:13:15 <bsmnt_bot> NameError: name 't' is not defined
13:13:20 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t)")
13:13:21 <bsmnt_bot> Hello, world!
13:13:30 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.length)")
13:13:30 <bsmnt_bot> AttributeError: 'str' object has no attribute 'length'
13:13:39 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t.size)")
13:13:39 <bsmnt_bot> AttributeError: 'str' object has no attribute 'size'
13:14:03 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[0])")
13:14:03 <bsmnt_bot> H
13:14:17 <ais523> ~exec exec("self.t='Hello, world!'\nsys.stdout(self.t[13])")
13:14:17 <bsmnt_bot> IndexError: string index out of range
13:14:27 <SimonRC> ais523: actually, I think you'll find that the program could be re-run form the beginning with a bigger word size every time it ran out of memory, if you wanted.
13:14:52 <ais523> I'm just trying to use bsmnt_bot to learn Python
13:15:22 <SimonRC> "< ais523> I was wondering whether C was, in fact, Turing-complete"
13:15:22 <ais523> SimonRC: wait a moment, what context was your last comment in?
13:15:38 <SimonRC> you thought not
13:15:56 <ais523> I don't think an implementation's allowed to dynamically change sizeof(void*)
13:16:10 <ais523> although maybe that isn't against the rules if the program never asks what it is
13:16:34 <SimonRC> I mean: if you run out of address space, re-compile for a bigger architecture.
13:16:42 <SimonRC> then re-run
13:16:59 <SimonRC> assuming the usual strict-function-style TC.
13:17:02 <ais523> but you can do that in MISC, and it isn't Turing-complete
13:17:35 <SimonRC> yeah, but you now have no reason for C not to be Turing-complete
13:18:38 <ais523> ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(n)\n n=n-1\nsys.stdout('Finished!')")
13:18:39 <bsmnt_bot> NameError: name 'n' is not defined
13:18:48 <ais523> ~exec exec("self.n=4\nwhile self.n>0:\n sys.stdout(self.n)\n self.n=self.n-1\nsys.stdout('Finished!')")
13:18:48 <bsmnt_bot> 4
13:18:48 <bsmnt_bot> 3
13:18:48 <bsmnt_bot> 2
13:18:50 <bsmnt_bot> 1
13:18:52 <bsmnt_bot> Finished!
13:19:02 <ais523> I don't see why that makes C TC
13:19:24 <ais523> because recompiling for a bigger architecture and rerunning isn't something you're necessarily allowed to do from within the language
13:19:38 <ais523> unless you're suggesting something like #pragma make_me_Turing_Complete
13:20:29 <ais523> ~exec exec("self.tape=0\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])")
13:20:29 <bsmnt_bot> TypeError: unsubscriptable object
13:20:40 <ais523> ~exec exec("self.tape=[]\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])")
13:20:40 <bsmnt_bot> IndexError: list index out of range
13:20:56 <ais523> ~exec exec("self.tape=[0]*30000\nself.tape[10]=self.tape[10]+5\nsys.stdout(self.tape[10])")
13:20:57 <bsmnt_bot> 5
13:23:24 <SimonRC> ais523: Ok, the language is Turing-complete, but no implementation can be.
13:23:42 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+': self.t[self.l]++\n if self.p[self.i]=='.': sys.stdout(self.t[self.l])")
13:23:42 <bsmnt_bot> SyntaxError: invalid syntax
13:23:55 <SimonRC> You could port C to the Turing machine will a little work, then it really *could* be TC.
13:24:08 <ais523> no, because even the Turing machine couldn't access an infinite store of memory
13:24:22 <ais523> because the sizeof operator exists, there has to be a hard limit on every data type
13:25:11 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]++\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1")
13:25:12 <bsmnt_bot> SyntaxError: invalid syntax
13:25:36 <ais523> ~exec sys.stdout(1==2)
13:25:36 <bsmnt_bot> False
13:25:39 <ais523> ~exec sys.stdout(1!=2)
13:25:39 <bsmnt_bot> True
13:25:45 <SimonRC> ais523: hmm
13:25:52 <SimonRC> I wonder...
13:26:11 <ais523> At least, what I've been arguing is what I've come to believe the conventional wisdom is
13:26:15 <ais523> but I wonder too
13:26:32 <SimonRC> so, a subset of C is Turing-complete, but the whole of C isn't.
13:26:33 <SimonRC> weird
13:26:45 <ais523> I think it's at least a PDA, because register variables need not have addresses and you can get an infinite number of them using recursion
13:27:25 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1")
13:27:25 <bsmnt_bot> 5
13:28:27 <ais523> ~exec exec("self.t=[0]*30000\nself.p='+++++.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1")
13:28:28 <bsmnt_bot> 5
13:30:00 <ais523> ~exec exec("self.t=[0]*30000\nself.p='++>--<+++.>.!'\nself.i=0\nself.l=0\nwhile self.p[self.i]!='!':\n if self.p[self.i]=='+':\n self.t[self.l]=self.t[self.l]+1\n if self.p[self.i]=='-':\n self.t[self.l]=self.t[self.l]-1\n if self.p[self.i]=='<':\n self.l=self.l-1\n if self.p[self.i]=='>':\n self.l=self.l+1\n if self.p[self.i]=='.':\n sys.stdout(self.t[self.l])\n self.i=self.i+1")
13:30:00 <bsmnt_bot> 5
13:30:00 <bsmnt_bot> -2
13:33:53 <ais523> ~exec exec("self.bf=lambda(p): t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1")
13:33:54 <bsmnt_bot> SyntaxError: invalid syntax
13:34:27 <ais523> ~exec exec("self.bf=lambda(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1")
13:34:28 <bsmnt_bot> SyntaxError: invalid syntax
13:34:47 <ais523> ~exec exec("self.test=lambda(x):\n sys.stdout(x)")
13:34:47 <bsmnt_bot> SyntaxError: invalid syntax
13:34:57 <ais523> ~exec exec("self.test=def test(x):\n sys.stdout(x)")
13:34:58 <bsmnt_bot> SyntaxError: invalid syntax
13:35:06 <ais523> ~exec exec("def test(x):\n sys.stdout(x)")
13:35:11 <ais523> ~exec self.test("Hello, world")
13:35:14 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'test'
13:35:21 <ais523> ~exec test("Hello, world")
13:35:26 <bsmnt_bot> NameError: name 'test' is not defined
13:35:46 <ais523> ~exec exec("def test(x):\n sys.stdout(x)\nself.test=test")
13:35:52 <ais523> ~exec self.test("Hello, world")
13:35:53 <bsmnt_bot> Hello, world
13:36:21 <ais523> ~exec exec("def bf(p):\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf")
13:36:37 <ais523> ~exec self.bf("++>+++.<.!")
13:36:37 <bsmnt_bot> 3
13:36:37 <bsmnt_bot> 2
13:36:56 <ais523> ~exec exec("def bf(p):\n p=p+"!"\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf")
13:36:57 <bsmnt_bot> SyntaxError: invalid syntax
13:37:23 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sys.stdout(t[l])\n i=i+1\nself.bf=bf")
13:37:37 <ais523> ~exec self.bf("++++>----<.>.<.")
13:37:37 <bsmnt_bot> 4
13:37:37 <bsmnt_bot> -4
13:37:37 <bsmnt_bot> 4
13:38:55 <ais523> ~exec sys.stdout(true or false)
13:38:55 <bsmnt_bot> NameError: name 'true' is not defined
13:39:02 <ais523> ~exec sys.stdout(True or False)
13:39:02 <bsmnt_bot> True
13:41:39 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n sy
13:41:40 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
13:42:34 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='\[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='\[': c=c+1\n if p[i]=='\]': c=c-1\n if p[i]=='\]' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]=='\]': c=c+1\n if p[i]=='\[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\
13:42:34 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
13:43:47 <ais523> ~exec exec("""def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+':\n t[l]=t[l]+1\n if p[i]=='-':\n t[l]=t[l]-1\n if p[i]=='<':\n l=l-1\n if p[i]=='>':\n l=l+1\n if p[i]=='.':\n
13:43:48 <bsmnt_bot> SyntaxError: EOF while scanning triple-quoted string
13:45:20 <ais523> ~exec exec("def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(t[l])\n i=
13:45:20 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
13:45:56 <ais523> I seem to have exceeded some sort of maximum input length for bsmnt_bot
13:46:33 <ais523> ~exec self.bf1="def bf(p):\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
13:46:40 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(t[l])\n i=i+1\nself.bf=bf"
13:46:51 <ais523> ~exec exec(self.bf1+self.bf2)
13:47:14 <ais523> ~exec self.bf("+++[->++<]>.")
13:47:15 <bsmnt_bot> 6
13:47:20 <ais523> yay!
13:47:30 <ais523> !bf_txtgen Hello, world!
13:48:16 <EgoBot> 121 ++++++++++++++[>+++++>+++++++>+++><<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+. [609]
13:49:39 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:49:40 <bsmnt_bot> 72
13:49:40 <bsmnt_bot> 101
13:49:40 <bsmnt_bot> 108
13:49:40 <bsmnt_bot> 108
13:49:40 <bsmnt_bot> 111
13:49:40 <bsmnt_bot> 44
13:49:42 <bsmnt_bot> 32
13:49:44 <bsmnt_bot> 119
13:49:46 <bsmnt_bot> 111
13:49:48 <bsmnt_bot> 114
13:49:50 <bsmnt_bot> 108
13:49:52 <bsmnt_bot> 100
13:49:54 <bsmnt_bot> 33
13:54:43 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': sys.stdout(unichr(t[l]))\n i=i+1\nself.bf=bf"
13:54:51 <ais523> ~exec exec(self.bf1+self.bf2)
13:55:02 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:55:02 <bsmnt_bot> H
13:55:03 <bsmnt_bot> e
13:55:03 <bsmnt_bot> l
13:55:03 <bsmnt_bot> l
13:55:03 <bsmnt_bot> o
13:55:03 <bsmnt_bot> ,
13:55:05 <bsmnt_bot> w
13:55:07 <bsmnt_bot> o
13:55:09 <bsmnt_bot> r
13:55:11 <bsmnt_bot> l
13:55:13 <bsmnt_bot> d
13:55:15 <bsmnt_bot> !
13:55:18 <EgoBot> Huh?
13:55:55 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
13:56:05 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf"
13:56:13 <ais523> ~exec exec(self.bf1+self.bf2)
13:56:17 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:56:30 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf\nsys.stdout(o)"
13:56:33 <ais523> ~exec exec(self.bf1+self.bf2)
13:56:33 <bsmnt_bot> NameError: name 'o' is not defined
13:56:42 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\nself.bf=bf\n sys.stdout(o)"
13:56:47 <ais523> ~exec exec(self.bf1+self.bf2)
13:56:47 <bsmnt_bot> SyntaxError: invalid syntax
13:57:34 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf"
13:57:37 <ais523> ~exec exec(self.bf1+self.bf2)
13:57:43 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
13:57:43 <bsmnt_bot> Hello, world!
14:02:24 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2))")
14:02:25 <bsmnt_bot> SyntaxError: EOL while scanning single-quoted string
14:02:30 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2)))
14:02:45 <ais523> ~bf ++++++[->++++++<].
14:02:45 -!- bsmnt_bot has quit (Remote closed the connection).
14:02:50 -!- bsmnt_bot has joined.
14:04:09 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:04:14 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf"
14:04:24 <ais523> ~exec exec(self.bf1+self.bf2)
14:04:39 <ais523> ~exec self.bf("+++++[->+++++<]>.")
14:04:40 <bsmnt_bot>
14:04:47 <ais523> ~exec self.bf("++++++[->++++++<]>.")
14:04:47 <bsmnt_bot> $
14:05:06 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf(.*)", lambda x,y: self.bf(y.group(2)))
14:05:17 <ais523> ~bf ++++++[->++++++<]>.
14:05:17 -!- bsmnt_bot has quit (Remote closed the connection).
14:05:20 -!- bsmnt_bot has joined.
14:05:26 <ais523> ~bf ++++++[->++++++<]>.
14:05:33 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:05:35 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf"
14:05:46 <ais523> ~exec exec(self.bf1+self.bf2)
14:05:59 <ais523> ~exec self.bf(" ++++++[->++++++<]>.")
14:06:00 <bsmnt_bot> $
14:06:22 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat(.*)", lambda x,y: sys.stdout(y.group(2)))
14:06:27 <ais523> ~cat Hello, world!
14:06:27 <bsmnt_bot> Hello, world!
14:06:39 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catv(.*)", lambda x,y: sys.stdout(y.group(2)))
14:06:43 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2)))
14:06:47 <ais523> ~cat Hello, world!
14:06:48 <bsmnt_bot> Hello, world!
14:06:48 <bsmnt_bot> Hello, world!
14:06:57 <ais523> ~exec self.pop_raw_regex_queue()
14:06:57 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue'
14:06:58 <ais523> ~exec self.pop_raw_regex_queue()
14:07:00 <bsmnt_bot> AttributeError: IRCbot instance has no attribute 'pop_raw_regex_queue'
14:07:24 <ais523> ~exec self.raw_regex_queue().pop()
14:07:24 <bsmnt_bot> TypeError: 'list' object is not callable
14:07:28 <ais523> ~exec self.raw_regex_queue.pop()
14:07:31 <ais523> ~exec self.raw_regex_queue.pop()
14:07:32 <ais523> ~exec self.raw_regex_queue.pop()
14:07:37 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~cat (.*)", lambda x,y: sys.stdout(y.group(2)))
14:07:41 <ais523> ~cat Hello, world!
14:07:41 <bsmnt_bot> Hello, world!
14:08:10 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2))))
14:08:15 <ais523> ~catrepr Hello, world!
14:08:16 <bsmnt_bot> 'Hello, world!'
14:08:48 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: self.bf(y.group(2)))
14:09:02 <ais523> ~bf ++++++[>++++++<-]>.
14:09:02 -!- bsmnt_bot has quit (Remote closed the connection).
14:09:05 -!- bsmnt_bot has joined.
14:09:19 <ais523> ~exec self.bf1="def bf(p):\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:09:25 <ais523> ~exec self.bf2=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.bf=bf"
14:09:31 <ais523> ~exec exec(self.bf1+self.bf2)
14:09:56 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~catrepr (.*)", lambda x,y: sys.stdout(repr(y.group(2))))
14:10:04 <ais523> ~catrepr ++++++[>++++++<-]>.
14:10:05 <bsmnt_bot> '++++++[>++++++<-]>.'
14:10:17 <SimonRC> gah! get a loca python interpreter!
14:10:28 <SimonRC> There are ones for windows too, you know.
14:10:35 <ais523> Sorry! I was trying to get bsmnt_bot to do Brainfuck
14:10:47 <SimonRC> ah, ok
14:10:48 <ais523> it works, but I can't get it to respond to commands of the form ~bf
14:11:08 <ais523> ~exec self.bf("++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.")
14:11:09 <bsmnt_bot> Hello, world!
14:11:12 <SimonRC> Sorry, I thought you were still learning python.
14:11:27 * SimonRC goesr
14:11:28 <ais523> Like this? It wouldn't be very good
14:11:28 * SimonRC goes
14:13:48 <ais523> bsmntbombdood: I've got bsmnt_bot to do Brainfuck, but I can't get it to work properly on the raw regex queue (for some reason, it just quits whenever I try)
14:16:18 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf("+y.group(2)+"))S"))
14:16:28 <ais523> ~bf ++++++[>+++++++<-]>.
14:16:28 <bsmnt_bot> !ul (~exec self.bf(++++++[>+++++++<-]>.))S
14:16:32 <EgoBot> ~exec self.bf(++++++[>+++++++<-]>.)
14:16:32 <bsmnt_bot> SyntaxError: invalid syntax
14:16:46 <ais523> ~exec self.raw_regex_queue.pop()
14:17:01 <ais523> ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :~bf (.*)", lambda x,y: sys.stdout("!ul (~exec self.bf(\'\'\'"+y.group(2)+"\'\'\'))S"))
14:17:06 <ais523> ~bf ++++++[>+++++++<-]>.
14:17:06 <bsmnt_bot> !ul (~exec self.bf('''++++++[>+++++++<-]>.'''))S
14:17:10 <EgoBot> ~exec self.bf('''++++++[>+++++++<-]>.''')
14:17:11 <bsmnt_bot> *
14:17:21 <ais523> There's always a way....
14:17:41 <ais523> ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.
14:17:42 <bsmnt_bot> !ul (~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.'''))S
14:17:46 <EgoBot> ~exec self.bf('''++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.''')
14:17:47 <bsmnt_bot> Hello, world!
14:20:35 <ais523> You know you've spent too much time programming when, like I just did, you try to save a directory after renaming a file
14:21:48 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:23:07 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)',bfarg)"
14:23:13 <ais523> ~exec self.raw_regex_queue.pop()
14:23:23 <ais523> ~exec exec(self.bf3+self.bf4)
14:23:34 <ais523> ~bf ++++++[->++++++<]>.
14:23:34 <bsmnt_bot> $
14:23:45 <ais523> yay again!
14:25:20 <ais523> ~bf ++++++++++++++[>+++++>+++++++>+++<<<-]>++.>+++.+++++++..+++.>++.------------.<++++++++.--------.+++.------.--------.>+.
14:25:20 <bsmnt_bot> Hello, world!
14:33:14 <ais523> ~exec sys.stdout("Hello, world!"[1:])
14:33:15 <bsmnt_bot> ello, world!
14:35:26 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(y.group(4)[0])\n y.group(4)=y.group(4)[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)"
14:35:39 <ais523> ~exec self.raw_regex_queue.pop()
14:35:42 <ais523> ~exec exec(self.bf3+self.bf4)
14:35:42 <bsmnt_bot> SyntaxError: can't assign to function call (<string>, line 28)
14:36:03 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(4)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:36:30 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)"
14:36:34 <ais523> ~exec exec(self.bf3+self.bf4)
14:36:52 <ais523> ~bf ,>,>,.<.<.!abc
14:37:27 <ais523> ~bf ++++++[->++++++<]>.
14:37:34 <ais523> ~bf ++++++[->++++++<]>.!
14:38:03 <ais523> ~exec self.raw_regex_queue.pop()
14:38:04 <ais523> ~exec self.raw_regex_queue.pop()
14:38:10 <ais523> ~exec exec(self.bf3+self.bf4)
14:38:26 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue))
14:38:26 <bsmnt_bot> [(<_sre.SRE_Pattern object at 0xb7cc1c98>, <bound method IRCbot.pong of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2290>, <bound method IRCbot.do_quit of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d24c8>, <bound method IRCbot.do_raw of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object
14:38:27 <bsmnt_bot> at 0x80d1cc0>, <bound method IRCbot.do_ctcp of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d26e0>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2918>, <bound method IRCbot.do_exec of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80c1010>, <bound me
14:38:27 <bsmnt_bot> thod IRCbot.do_ps of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d2b80>, <bound method IRCbot.do_kill of <__main__.IRCbot instance at 0xb7c2e16c>>), (<_sre.SRE_Pattern object at 0x80d6980>, <function bfarg at 0xb7c3064c>)]
14:38:55 <ais523> ~ps
14:38:56 <bsmnt_bot> None
14:39:12 <ais523> ~exec sys.stdout(self.bf4)
14:39:13 <bsmnt_bot> if p[i]=='+': t[l]=t[l]+1
14:39:13 <bsmnt_bot> if p[i]=='-': t[l]=t[l]-1
14:39:13 <bsmnt_bot> if p[i]=='<': l=l-1
14:39:13 <bsmnt_bot> if p[i]=='>': l=l+1
14:39:14 <bsmnt_bot> if p[i]=='.': o=o+unichr(t[l])
14:39:15 <bsmnt_bot> if p[i]==',':
14:39:16 <bsmnt_bot> t[l]=ord(a[0])
14:39:18 <bsmnt_bot> a=a[1:]
14:39:19 <bsmnt_bot> i=i+1
14:39:21 <bsmnt_bot> sys.stdout(o)
14:39:23 <bsmnt_bot> self.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)(!(.*))?',bfarg)
14:39:50 <ais523> ~quit
14:40:04 <ais523> ~exec exec(self.bf3+self.bf4)
14:40:12 <ais523> ~bf ,.!a
14:40:40 <ais523> ~exec sys.stdout(repr(self.raw_regex_queue.pop()))
14:40:40 <bsmnt_bot> (<_sre.SRE_Pattern object at 0x80d6980>, <function bfarg at 0xb7c3079c>)
14:41:25 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:41:44 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf (.*)!(.*)',bfarg)"
14:41:50 <ais523> ~exec exec(self.bf3+self.bf4)
14:41:56 <ais523> ~bf ,.!a
14:41:56 <bsmnt_bot> a
14:42:29 <ais523> ~exec self.raw_regex_queue.pop()
14:43:12 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)"
14:43:17 <ais523> ~bf ,.!a
14:43:28 <ais523> ~exec exec(self.bf3+self.bf4)
14:43:29 <ais523> ~bf ,.!a
14:43:30 <bsmnt_bot> a
14:43:38 <ais523> ~bf ++++++[->++++++<]>.
14:43:38 <bsmnt_bot> $
14:45:09 <ais523> ~bf ,[.,]!Hello, world!
14:45:10 -!- bsmnt_bot has quit (Remote closed the connection).
14:45:13 -!- bsmnt_bot has joined.
14:45:29 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:45:48 <ais523> ~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n"
14:45:54 <ais523> ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)"
14:45:57 <ais523> ~exec exec(self.bf3+self.bf4)
14:46:04 <ais523> ~bf ,[.,]!Hello, world!
14:46:05 <bsmnt_bot> Hello, world!
14:46:59 <ais523> ~bf ,[.,]!This implementation returns 0 on EOL.
14:47:00 <bsmnt_bot> This implementation returns 0 on EOL.
14:48:05 <ais523> ~bf ++++++++++++++++[->++++++++<]>-[.-]
14:48:05 <bsmnt_bot> ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
14:48:06 <bsmnt_bot> <CTCP>
15:13:05 <ais523> ~bf >,[>,]<.[<.]!Hello, world!
15:13:05 <bsmnt_bot> !dlrow ,olleH
15:13:09 <EgoBot> Huh?
15:19:45 <ais523> !bf >,[>,]<.[<.]
15:19:53 <ais523> !i 1 Hello, world!
15:20:02 <ais523> !i 3 Hello, world!
15:20:04 <ais523> !eof 3
15:20:07 <EgoBot> !dlrow ,olleH
15:20:19 <ais523> !ul (I haven't broken this, have I?)S
15:20:21 <EgoBot> I haven't broken this, have I?
15:26:56 -!- nazgjunk has joined.
15:27:48 <ais523> ~bf ,[.,]!Hello, nazgjunk!
15:27:50 <bsmnt_bot> Hello, nazgjunk!
15:27:57 <nazgjunk> !
15:27:59 <nazgjunk> hi
15:28:01 <EgoBot> Huh?
15:28:22 <ais523> I spent ages trying to get bsmnt_bot to do Brainfuck
15:28:30 <ais523> * brainfuck
15:38:56 -!- UpTheDownstair has joined.
15:44:15 -!- fushd has joined.
15:44:29 -!- nazgjunk has quit (Nick collision from services.).
15:46:05 -!- fushd has changed nick to nazgjunk.
15:54:48 -!- jix__ has changed nick to jix.
15:59:07 -!- UpTheDownstair has quit (Connection timed out).
16:02:05 -!- oerjan has joined.
16:02:22 <ais523> ~bf ,[.,]!Hello, oerjan!
16:02:23 <bsmnt_bot> Hello, oerjan!
16:17:15 <oerjan> hello
16:17:32 <oerjan> i don't see why Forte has to be O(n^2).
16:17:55 <ais523> Basically, because you need to keep generating new line numbers for lines
16:18:06 <ais523> so when you do a loop, the redefinition table grows at O(n)
16:18:13 <ais523> * as
16:18:37 <ais523> but I suppose it might be possible to do the redefinition table more efficiently
16:19:52 <oerjan> Trees.
16:20:45 <ais523> So, let me put it this way: 99 bottles of beer written in Forte written in Thutu is probably O(99^2) minimum
16:20:59 <ais523> (and yes, I did test it with other values of 99)
16:22:23 <ais523> it's at least going to be O(n) in space when it should be O(1), with any language used to write the interpreter
16:22:40 <ais523> (but if it were O(n) in space before, it may still be O(n) in space after Forteisation)
16:22:55 <oerjan> Yeah, space is hard to keep down.
16:30:21 <ais523> By the way, the compiled version of my interpreter is http://pastebin.ca/391947
16:30:53 <ais523> (I hacked the Thutu interpreter to support arithmetic and a few string operations natively, so if I gave the Thutu source code you couldn't run it anyway)
16:31:47 * ais523 wonders why Perl syntax-highlighters never seem to be able to handle regexps correctly
16:33:44 <oerjan> that leads to the obvious question: can Perl regexps parse Perl regexps?
16:34:18 <ais523> No. You can't do nested brackets with regexps (it's a computational class thing)
16:34:42 <oerjan> yeah, that old pumping lemma
16:34:52 <ais523> to handle nested brackets in Thutu, the easiest way is to change them to some other sort of bracket from the inside out, in pairs
17:04:28 -!- kxspxr has joined.
17:04:40 -!- kxspxr has quit (Client Quit).
17:10:05 -!- tgwizard has joined.
17:51:31 <ais523> What do people think of the idea of using a separate pastebin (e.g. esoteric.pastebin.ca) instead of the main pastebin.ca pastebin?
17:52:02 <ais523> Advantages: our stuff is separated from people using the pastebin for other things.
17:52:39 <ais523> Disadvantages: slightly extra hassle to get it set up, slightly longer URL, we would need at least one post every 3 months (which is easy enough to manage) to keep the pastebin active
17:54:08 -!- digital_me has joined.
17:57:29 <lament> "meh"
17:58:00 <GregorR> la "meh" nt
18:11:25 <nazgjunk> ais523, sounds like a plan
18:12:27 <ais523> I'll go and set up esoteric.pastebin.ca, then, if there are no objections soon
18:13:04 <lament> i have an objection!
18:13:19 <ais523> what is it?
18:13:31 <lament> "why"
18:13:36 <GregorR> Second.
18:14:00 <ais523> The idea would be that if #esoteric's posts were separated, then we could look back through them in the future
18:14:11 <ais523> it would sort of reduce the attrition rate of esolang-related material
18:14:20 <lament> would it.
18:14:36 <GregorR> Public pastebins die after 3mo.
18:14:44 <GregorR> (Of unuse)
18:15:29 <ais523> 3 months of disuse, yes. I listed that as a potential disadvantage.
18:15:38 <ais523> what are the chances of that happening?
18:16:02 <oerjan> almost 100%
18:16:38 <ais523> Oh well, in that case we can just use the main one
18:16:44 <ais523> and use clog to find all the relevant post numbers
18:16:54 <oerjan> it depends on your time frame, of course :)
18:17:09 <ais523> I guessed your answer would be in that sense
18:28:10 <ais523> but people here are right, it's likely that our pastebin archiving services are good enough already
18:30:38 <GregorR> Now, if somebody wrote a custom esoteric pastebin with highlighting for Brainfuck and Befunge ... :P
18:33:07 <ais523> I already have a brainfuck-mode on Emacs
18:33:16 <bsmntbombdood> someone was having fun with bsmnt_bot ...
18:33:17 * ais523 looks into their own filesystem
18:33:24 <GregorR> !ps d
18:33:25 <EgoBot> 1 ais523: daemon ul bf
18:33:25 <ais523> ~bf ,[.,]!that was me
18:33:26 <bsmnt_bot> that was me
18:33:27 <EgoBot> 2 ais523: daemon deadfish funge93
18:33:29 <EgoBot> 3 GregorR: ps
18:35:09 <ais523> bsmntbombdood: anyway, I don't see why bsmnt_bot shouldn't have a BF interpreter too
18:35:23 <bsmntbombdood> because EgoBot has one?
18:36:27 <ais523> that's like saying "no need to make any more esolangs, INTERCAL is Turing-complete"
18:36:41 <bsmntbombdood> heh
18:36:44 <bsmntbombdood> go ahead
18:36:54 <ais523> No, I've done it already
18:37:14 <ais523> ~bf ,[.,]!This is a complete Brainfuck interpreter (EOF = 0)
18:37:15 <bsmnt_bot> This is a complete Brainfuck interpreter (EOF = 0)
18:37:27 <bsmntbombdood> fun
18:37:31 <ais523> and ! separates program from input (can be omitted if you don't want input)
18:37:49 <ais523> I can set it up in 3 commands, too
18:38:03 <ais523> (It would be 1 but that exceeds the maximum line length I can send)
18:38:52 <ais523> !bf_txtgen bsmnt_bot does Brainfuck!
18:39:57 <EgoBot> 208 ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+. [409]
18:40:09 <ais523> ~bf ++++++++++++++[>+++++++>++++++++>++++++++>++<<<<-]>.>+++.>---.+.<+.<---.+++.>>+.<.>>++++.<<<++.>>.----------.<-.>>.<<<----------------------------------.>-.>----.++++++++.+++++.--------.<+++.>---.++++++++.>+.
18:40:09 <bsmnt_bot> bsmnt_bot does Brainfuck!
18:41:08 <ais523> come to think of it, I haven't tested it with nested square brackets yet
18:42:00 <ais523> ~bf >,[>,]<[.[-]<[.<]>[-]>[.>]<]!123456789
18:42:00 <bsmnt_bot> 98765432123456788765432345677654345665455
18:42:36 <ais523> ~bf >,[>,]<[.<[.<]>[-]>[.>]<[-]<]!123456789
18:42:37 <bsmnt_bot> 987654321234567898765432345678765434567654565
18:43:08 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!123456789
18:43:08 <bsmnt_bot> 9876543212345678765432345676543456545
18:43:15 <ais523> that's what I was aiming for
18:47:45 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!_,.-'^
18:47:46 <bsmnt_bot> ^'-.,_,.-'-.,.-.
18:48:21 <ais523> ~bf >,[>,]<.[-]<[.<[.<]>[-]>[.>]<[-]<]!<({[|]})>
18:48:21 <bsmnt_bot> >)}]|[{(<({[|]})}]|[{({[|]}]|[{[|]|[|
18:49:36 <GregorR> My brain hurts.
18:50:59 <ais523> why are you in #esoteric, then?
18:51:11 <ais523> I can see why it would make your brain hurt,
18:51:25 <ais523> but it isn't a very good place for soothing a brain that's already been hurt
18:51:37 <GregorR> :P
18:52:32 <lament> yes, one's brain does hurt when it is repeatedly fucked.
19:16:01 -!- ais523 has quit.
19:32:05 -!- sebbu has joined.
20:22:18 -!- sebbu2 has joined.
20:23:14 -!- calamari has joined.
20:30:01 -!- sebbu has quit (Read error: 60 (Operation timed out)).
20:37:40 -!- sebbu2 has changed nick to sebbu.
20:42:31 -!- Sgeo has joined.
20:47:41 -!- graue has joined.
20:55:51 -!- UpTheDownstair has joined.
20:59:07 -!- kxspxr has joined.
21:00:23 -!- kxspxr has quit (Client Quit).
21:01:26 -!- calamari has quit ("Leaving").
21:04:44 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
21:05:29 -!- nazgjunk has joined.
21:16:39 -!- oerjan has quit ("leaving").
21:22:32 -!- UpTheDownstair has quit (Connection timed out).
21:38:41 -!- calamari has joined.
21:55:48 -!- oerjan has joined.
22:22:07 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
22:31:01 -!- calamari has quit ("Leaving").
23:25:31 -!- kxspxr has joined.
23:25:50 -!- kxspxr has quit (Client Quit).
23:33:56 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)).
23:34:32 -!- nazgjunk has joined.
←2007-03-11 2007-03-12 2007-03-13→ ↑2007 ↑all