00:07:25 <oklopol> omg, there's a problem with the actual semantics, not the program
00:07:58 <oklopol> the problem is that i want objects to store state, but this effectively prevents recursion in certain cases
00:08:59 <oklopol> because i would have to start having my functions copy themselves as they evaluate, if they see they aren't unique in the program, and they start changing the namespace
00:09:07 <oklopol> actually, what's the problem, that's like 5 lines of code
00:09:17 <vixey> can't you just have closures?
00:09:29 <vixey> which close a mutable env
00:10:17 <oklopol> a function is basically just that
00:10:24 -!- jix has quit ("CommandQ").
00:10:25 <oklopol> except it also holds some code
00:10:36 <oklopol> (= test {(-> $get n) (-> n [])}) (test 5) (get test) <<< this should return 5, because test stores its state
00:10:53 <oklopol> with my current implementation, this meant a function that recursively calls itself actually *calls itself*
00:11:28 <oklopol> the other simple way is to store no state
00:11:43 <oklopol> in which case this example doesn't work, but recursion works easily
00:12:36 <oklopol> so basically, the semantics require the runtime environment to detect recursion and copy namespaces.
00:12:56 <oklopol> at least that's the simplest way i can think of to implement it
00:13:06 <oklopol> and it is simple, so there is really no prob
00:17:56 -!- AnMaster has quit (Connection timed out).
00:18:20 <GregorR> Oh, shoot, forgot to put bin2arr.c in the jsmips dir 8-O
00:18:40 -!- AnMaster has joined.
00:27:52 <oklopol> okay, dirtiest solution ever, but it works
00:28:12 <oklopol> an object checks if it on the call stack when it's evaluated, and it copies its namespace if it is
00:28:30 <ehird> GregorR: Wanna see!
00:30:27 <oklopol> http://www.vjn.fi/pb/p643464352.txt
00:30:44 <oklopol> that is especially ugly without infix
00:32:37 <GregorR> If I had to classify this code on a scale of 1 to WTF, I'd give it WTF
00:35:43 <GregorR> This won't work with MIPS -O0, because it loads the 'c' variable off the stack every time it uses it.
00:35:56 <GregorR> So it gets overwritten and then loads some garbage variable off the stack :P
00:36:10 <oklopol> read "that code" and assumed you meant mine
00:37:37 <GregorR> You should mark c as a register.
00:37:53 <GregorR> Or rather, mark all of those as registers :P
00:38:38 -!- seabot has joined.
00:39:05 <ehird> Bringing seabot in here wasn't the best idea
00:39:07 <ehird> It uses ! as a prefix..
00:39:14 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:39:16 <ehird> That's not meant to happen
00:39:16 <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
00:39:29 -!- seabot has quit (Remote closed the connection).
00:39:35 -!- seabot has joined.
00:39:36 <seabot> karma: karma- karma karma+
00:39:38 <seabot> meta: load reload unload
00:39:38 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:39:40 <EgoBot> 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl
00:39:57 <seabot> Reloaded the help plugin.
00:39:58 <seabot> karma: karma karma+ karma-
00:39:58 <seabot> meta: load reload unload
00:39:59 <GregorR> I don't know whether MIPS is frozen, or writing over the stack is extremely slow for this emulator :P
00:40:00 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:40: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
00:40:09 <seabot> EgoBot's karma lowered to -1.
00:41:09 -!- calamari has joined.
00:41:21 <EgoBot> seabot's karma lowered to -∞. Yeah. That's right, bitch.
00:41:24 <ehird> !cdecl lame EgoBot
00:42:26 -!- seabot has quit (Remote closed the connection).
00:42:31 -!- seabot has joined.
00:42:32 <ehird> seabot will use @ for a prefix now
00:42:34 <seabot> karma: karma karma+ karma-
00:42:34 <seabot> meta: load reload unload
00:42:59 <ehird> GregorR: Will you like it if I make it use egobfi for interpreting brainfuck? ;)
00:43:21 <GregorR> Only if it also interprets:
00:43:26 <EgoBot> help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon
00:43:28 <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
00:43:37 <ehird> GregorR: It's not just an esolang bolt. :-)
00:44:23 <ehird> 'sea'bot shows its origins: a bot for ##free-c
00:44:29 <ehird> (which is arguably an esolang)
00:44:40 <EgoBot> Error: Program must have at least one command
00:44:57 <vixey> why does freenode need another C channel?
00:46:12 <calamari> is it a sign of senility when you can't remember how to program in an esolang you wrote yourself?
00:46:27 <ehird> vixey: there's only one: ##C
00:46:30 <ehird> and ##C has PoppaVic
00:47:08 <calamari> !linguine 1[0=72,0$,0+29,0$,0+7,0$,0$,0+3,0$,1=32,1$,0-24,0$,0+24,0$,0+3,0$,0-6,0$,0-8,0$,1+1,1$,1-23,1$]0
00:48:18 <calamari> Gregor: what if a program is more than one line?
00:48:34 <ehird> calamari: isn't whitespace ignord in linguine?
00:49:54 <EgoBot> Error [line 1]: missing or invalid command
00:50:00 <ais523> calamari: not if you're Ben Olmstead
00:52:06 <EgoBot> Error [line 1]: bad jump line number `2\n2[0=0]0'
00:52:25 <ehird> calamari: Upload it, specify a url
00:52:36 <ehird> http://rafb.net/paste/ put it here, choose 'raw'
00:52:40 <ehird> then !linguine THATURL
00:52:50 <calamari> iirc, my esobot could handle multiple line input :)
00:53:03 <ehird> !linguine http://rafb.net/p/2vhKkd81.txt
00:53:32 -!- oklopol has quit (Read error: 113 (No route to host)).
00:53:59 <ehird> GregorR: Want a url for the thingy!
00:54:38 <GregorR> NO CAN GIVE, NOT WANT UPLOAD
00:54:42 <calamari> !linguine http://rafb.net/p/o4spP929.txt
00:54:44 <GregorR> I'll email you the test.html if you want.
00:55:01 <ehird> GregorR: Blargh :(
00:56:14 <calamari> !linguine http://rafb.net/p/EYRZBj28.txt
00:56:16 <EgoBot> 99 bottles of beer on the wall,
00:56:37 -!- oklopol has joined.
00:56:37 -!- oklopol has quit (Remote closed the connection).
00:56:54 -!- oklopol has joined.
00:58:46 <calamari> interesting to be receiving output from an unlisted process :)
00:58:59 <GregorR> http://www.codu.org/jsmips/Nonworking%20Continuations.html
00:59:10 <GregorR> ehird: Enjoy watching the spinner spin.
01:00:25 <calamari> cool, test.html crashed my firefox
01:01:38 <GregorR> Firefox is in fact my test platform.
01:02:05 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
01:02:37 <calamari> yeah.. not sure why but ff crashes randomly for me.. tried it again and it was fine
01:03:04 <calamari> I wonder if it has anything to do with running in 32-bit mode on the 64-bit kernel
01:03:18 <EgoBot> 3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034
01:06:17 <GregorR> Yeah, but I was also running JSMIPS X-P
01:06:25 <calamari> you ported gcc, binutils, and newlib for your lang?
01:06:36 <ehird> its not his instruction set
01:06:41 <ehird> he is just implementing it in JS
01:06:46 <ehird> and gcc already compiles to it
01:07:16 <calamari> ahh bummer.. was hoping someone understood gcc backends
01:07:46 <ehird> oklopol: you will be interested in this!
01:07:55 <ehird> oklopol: I wrote a python function that takes a python 1 liner and expands it
01:07:59 <ehird> usable for e.g. bots
01:08:03 <ehird> it uses one syntax extension
01:08:10 <ehird> after a block thing like 'if foo:'
01:08:19 <ehird> that means 'newline and increase indentation'
01:08:23 <GregorR> calamari: I once spent all of ten minutes trying to port GCC to MISC, then went "NOPE" and quit.
01:08:25 <ehird> if it sees the matching }, that means 'drop identation'
01:08:41 <ehird> if foo: { if bar: { print "hi" } else: { print "bye" } } else: { print "wtf"; 2+2 }
01:08:51 <ehird> but it is clever, so it doesn't break dict syntax or strings
01:09:02 <ehird> oklopol: because {} can be dictionary syntax
01:09:03 <oklopol> ":" always means indentation
01:09:21 <ehird> + its easier to parse this way
01:13:00 <GregorR> World's most obscure insult: "I'm sure you've read the manual page on checking filesystems."
01:13:14 <ehird> oklopol: i'll show you the function
01:13:18 <ehird> oklopol: but it's REALLY REALLY UGLY
01:13:29 <ehird> oklopol: http://rafb.net/p/GoqPxY60.txt
01:13:46 <oklopol> my oklotalk-- parser is shorter :-)
01:13:54 <ehird> make_1liner(string)
01:14:03 <ehird> python-oneliner-thingy in, python code out
01:14:51 <calamari> GregorR: not sure what the simplest target is that gcc supports, but one possibility is taking the asm output and compiling that for the desired lang
01:15:11 <GregorR> calamari: Probably MIPS I, and yeah, MIPS->MISC wouldn't actually be too tough.
01:15:14 <ehird> oklopol: can't do it via regexps
01:15:17 <ehird> oklopol: its really the only way
01:15:31 <oklopol> i meant iterative versus recursive
01:16:16 <calamari> GregorR: in any case I know it's not x86 :)
01:17:44 <ehird> recursive would just be manual iterative in this case
01:18:50 <ehird> oklopol: I mean, i'd just end up emulating the stuff I have in my iterative version
01:18:56 <ehird> i.e. manually transforming it into recursive form
01:19:01 <ehird> that is, it has no natural recursive form
01:19:05 <ehird> apart from translating the iterative form
01:19:47 <ehird> should declarations persist across @pythons?
01:20:06 <ehird> oklopol: should it persist across bot runs? :D
01:20:17 <oklopol> in my opinion yes, because it's nice and floody to be able to use a bot as a repl
01:20:33 <ehird> oklopol: should the bindings be per-user or for everyone?
01:20:54 <oklopol> you could do something fun like have _XXX be for personal use
01:21:02 <oklopol> you'd need to parse the code
01:21:25 <ehird> oklopol: 'my' (from perl)
01:21:56 <ehird> oklopol: oh, i know!
01:22:02 <oklopol> hmm, actually shouldn't be hard to do storing based on name
01:22:04 <ehird> user-specific, but you can access others bindings
01:22:19 <ehird> something like that
01:22:25 <ehird> probably more like:
01:22:41 <ehird> bindings.Sgeo.psox_variable
01:22:45 <ehird> wait, I'll hijack _ for that
01:22:48 <oklopol> Sgeo: oklopol: /.*/ -> you don't get it -> don't need to
01:22:48 <ehird> _.Sgeo.psox_variable
01:23:07 <ehird> oklopol: so you can doo:
01:23:14 <ehird> weird_func = _.oklopol.weird_func
01:23:36 <Sgeo> We're having a public Python bot and we can store variables there under our name?
01:23:48 <oklopol> Sgeo: something like that, except not yet.
01:23:48 <ehird> Sgeo: seabot will execute python, yeah
01:24:20 <calamari> "Frontends vary internally, having to produce trees that can be handled by the backend. The parsers are hand-coded recursive descent parsers."
01:25:36 <ehird> oklopol: instead of _, users
01:25:40 <ehird> users.oklopol.weird_func
01:31:16 -!- seabot has quit (Remote closed the connection).
01:31:33 -!- seabot has joined.
01:31:37 <seabot> UnpickleableError: Cannot pickle <type 'DB'> objects
01:33:07 <seabot> Reloaded the python plugin.
01:33:14 <ehird> @python print 'hi'
01:33:14 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:33:29 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:30 <ehird> @python print 'hi'
01:33:30 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:33:33 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:40 <seabot> AttributeError: 'dict' object has no attribute 'close'
01:33:44 -!- seabot has quit (Remote closed the connection).
01:33:50 -!- seabot has joined.
01:33:52 <ehird> @python print 'hi'
01:33:52 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:35 <ehird> @python print 'hi'
01:34:35 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:45 <seabot> Reloaded the python plugin.
01:34:46 <ehird> @python print 'hi'
01:34:46 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:34:58 <seabot> Reloaded the python plugin.
01:34:58 <ehird> @python print 'hi'
01:34:58 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:35:31 <seabot> Reloaded the python plugin.
01:35:32 <ehird> @python print 'hi'
01:35:32 <seabot> SyntaxError: EOL while scanning single-quoted string (<irc>, line 1)
01:35:49 <seabot> Reloaded the python plugin.
01:35:49 <ehird> @python print 'hi'
01:35:50 <seabot> NameError: global name 'special' is not defined
01:35:58 <seabot> NameError: global name 'special' is not defined
01:36:02 <seabot> Reloaded the python plugin.
01:36:07 <ehird> vixey: justify that
01:36:13 <ehird> @python print 'hi'
01:36:13 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_print_'
01:36:16 <vixey> ehird: forced indentation of code
01:36:32 <ehird> vixey: sooo.. give me a use case for not indenting code
01:36:51 <ehird> your editor must be horrible
01:37:15 <vixey> I've used lots of editors ...
01:37:55 <seabot> Reloaded the python plugin.
01:38:19 <seabot> Reloaded the python plugin.
01:38:51 <ehird> @python if 1: { 2 }
01:38:55 <ehird> @python if 1: { 2 } else: { 3 }
01:38:55 <seabot> SyntaxError: invalid syntax (<irc>, line 3)
01:39:58 <seabot> Reloaded the python plugin.
01:40:00 <ehird> @python if 1: { 2 } else: { 3 }
01:40:00 <seabot> AttributeError: 'NoneType' object has no attribute 'start'
01:40:39 <seabot> Reloaded the python plugin.
01:40:40 <ehird> @python if 1: { 2 } else: { 3 }
01:40:47 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:40:47 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_print_'
01:41:21 -!- vixey has quit ("Leaving").
01:42:10 <seabot> SyntaxError: invalid syntax (python.py, line 82)
01:42:43 <seabot> Reloaded the python plugin.
01:42:45 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:42:45 <seabot> AttributeError: 'cStringIO.StringO' object has no attribute 'strip'
01:44:15 <seabot> Reloaded the python plugin.
01:44:16 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:44:16 <seabot> AttributeError: 'cStringIO.StringO' object has no attribute 'strip'
01:44:29 <seabot> Reloaded the python plugin.
01:44:30 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:46:09 <seabot> Reloaded the python plugin.
01:46:16 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:46:20 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:47:49 -!- seabot has quit (Remote closed the connection).
01:47:55 -!- seabot has joined.
01:47:58 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:47:58 -!- seabot has quit (Remote closed the connection).
01:48:11 <ehird> oklopol: it's almost working :D
01:48:12 -!- seabot has joined.
01:48:18 <ehird> @python if 0: { print 'hello world'; 2+2 } else: { 3 }
01:48:22 <ehird> @python if 1: { print 'hello world'; 2+2 } else: { 3 }
01:48:29 <ehird> @python print 'a'*500
01:48:47 -!- seabot has quit (Remote closed the connection).
01:48:53 -!- seabot has joined.
01:48:54 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:48:56 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:00 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:04 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:49:08 <seabot> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:50:53 -!- seabot has quit (Remote closed the connection).
01:50:59 -!- seabot has joined.
01:51:02 -!- seabot has quit (Remote closed the connection).
01:51:23 -!- seabot has joined.
01:51:25 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:51:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:00 -!- seabot has quit (Remote closed the connection).
01:52:07 -!- seabot has joined.
01:52:09 <ehird> Slereah: sorry, its debug time
01:52:11 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:52:30 -!- seabot has quit (Remote closed the connection).
01:52:35 -!- seabot has joined.
01:52:37 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:16 -!- seabot has quit (Remote closed the connection).
01:53:22 -!- seabot has joined.
01:53:26 <ehird> GregorR: How many characters will egobot write on one line?
01:53:28 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:53:39 -!- seabot has quit (Remote closed the connection).
01:53:52 -!- seabot has joined.
01:53:55 <seabot> 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
01:54:21 <seabot> NameError: name 'sys' is not defined
01:54:22 <ehird> @python import sys
01:54:35 <Sgeo> @python help(sys)
01:54:36 <seabot> NameError: name 'sys' is not defined
01:54:42 <ehird> Sgeo: It's per user.
01:54:45 <Sgeo> python import sys
01:54:48 <seabot> Help on built-in module sys:
01:54:48 -!- seabot has quit (Excess Flood).
01:54:52 <ehird> need to add a delay
01:55:06 -!- seabot has joined.
01:55:09 <Sgeo> Can users share data?
01:55:20 <ehird> Sgeo: Soon you can do: 'users.ehird.sys'
01:55:24 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:55:24 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:55:42 <seabot> Reloaded the python plugin.
01:55:43 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:55:43 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
01:55:44 <Sgeo> {} are legal in Python?
01:55:51 <ehird> Sgeo: No, but I preprocess the code
01:55:54 <Sgeo> I don't think they .. oh
01:56:03 <ehird> It's a special syntax so that you can fit anything on one line.
01:56:18 <Sgeo> Although I don't think the #python people would like that
01:56:27 <ehird> Sgeo: #python people are asses
01:56:36 <ehird> and I'd like to see their suggestion for getting python code on one line
01:56:40 <seabot> Reloaded the python plugin.
01:56:43 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:56:43 <seabot> IndentationError: unexpected indent (line 2)
01:56:56 <seabot> Reloaded the python plugin.
01:56:56 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:56:57 <seabot> IndentationError: unexpected indent (line 2)
01:57:23 <seabot> Reloaded the python plugin.
01:57:24 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:57:25 <seabot> AttributeError: 'MagicGlobals' object has no attribute '_getattr_'
01:57:47 <seabot> Reloaded the python plugin.
01:57:48 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:57:48 <seabot> TypeError: 'NoneType' object is not callable
01:57:54 <Sgeo> ehird, what if one user wants to keep data from other users?
01:58:08 <ehird> Sgeo: why the fsck are they using a public bot to evaluate python
01:58:11 <seabot> Reloaded the python plugin.
01:58:12 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
01:58:13 <seabot> TypeError: 'NoneType' object is not callable
01:58:54 -!- calamari has quit ("Leaving").
01:59:13 <Sgeo> @python test = False; while(not Test): {print 'Hi'; test = True}
01:59:13 <seabot> NameError: name 'Test' is not defined
01:59:18 <Sgeo> @python test = False; while(not test): {print 'Hi'; test = True}
01:59:36 <Sgeo> So it's something to do with calling a function in sys
01:59:44 <ehird> Sgeo: I know what the problem is.
02:00:06 <seabot> Reloaded the python plugin.
02:00:09 <ehird> @python import sys; while True: { print 'ping'; sys.sleep(3) }
02:00:09 <seabot> AttributeError: 'module' object has no attribute 'sleep'
02:00:25 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:00:34 <ehird> Ayup, just as I thought
02:00:45 <Sgeo> ..what's the problem now?
02:01:05 <wildhalcyon> Alright, I gotta go. I'll be back tomorrow night, and hopefully say some more.
02:01:13 <Sgeo> bye wildhalcyon
02:01:35 -!- wildhalcyon has left (?).
02:02:39 -!- seabot has quit (Remote closed the connection).
02:02:44 <ehird> Sgeo: It isn't multi-threaded yet
02:02:50 -!- seabot has joined.
02:03:16 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:03:16 <seabot> AttributeError: 'str' object has no attribute 'sender'
02:03:29 <seabot> Reloaded the python plugin.
02:03:32 <ehird> @python import time; while True: { print 'ping'; time.sleep(3) }
02:03:41 -!- seabot has quit (Remote closed the connection).
02:03:47 -!- seabot has joined.
02:03:55 <Sgeo> @python import sys; sys.exit(1)
02:03:56 -!- seabot has quit (Remote closed the connection).
02:03:57 <ehird> Sgeo: I THINK everything should work, all I have to do now is make it secure
02:04:09 <ehird> Do you realise how annoying that is?
02:04:10 -!- seabot has joined.
02:04:20 <Sgeo> How is it going to be secured?
02:04:25 <ehird> Sgeo: RestrictedPython
02:04:29 <ehird> http://pypi.python.org/pypi/RestrictedPython
02:04:42 <ehird> It gives you a function that you can use instead of compile()
02:04:53 <ehird> and then you just provide some hooks into the environment you eval it in (the globals)
02:04:58 <ehird> and those get called on things like e.g. importing
02:05:05 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11dd9d0>}
02:05:10 <ehird> @python users.ehird
02:05:10 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:05:38 <seabot> Reloaded the python plugin.
02:05:40 <seabot> TypeError: can't pickle function objects
02:06:13 <oklopol> http://www.vjn.fi/pb/p234644461.txt <<< rational number class and quicksort on it
02:06:43 <oklopol> test\ratqs.ot ==> [[rat 0 5] [rat 1 3] [rat 34 82] [rat 2 4] [rat 3 5] [rat 5 6] [rat 61 48] [rat 8 3] [rat 93 23] [rat 8 1]]
02:06:49 <oklopol> >>> [0.0/5,1/3.0,34.0/82,2/4.0,3.0/5,5/6.0,61.0/48,8/3.0,93.0/23,8/1.0]
02:06:49 <oklopol> [0.0, 0.33333333333333331, 0.41463414634146339, 0.5, 0.59999999999999998, 0.83333333333333337, 1.2708333333333333, 2.6666666666666665, 4.0434782608695654, 8.0]
02:07:06 <seabot> Reloaded the python plugin.
02:07:13 <Sgeo> oklopol, what language?
02:07:17 <oklopol> fun, i've never done a language with extendable types before
02:07:25 <Sgeo> @python import sys; sys.exit
02:07:50 <Sgeo> @python sys.version
02:08:18 <oklopol> ehird: once you're done, do realize you are supposed to be the one vaguely interested.
02:08:48 <ehird> I am going to look
02:09:16 <oklopol> i think i'm going to take a break now, the current subset seems to work quite nicely
02:09:19 <seabot> Reloaded the python plugin.
02:09:22 <seabot> <seabot.plugins.python.Users object at 0x11da5d0>
02:09:39 <seabot> Reloaded the python plugin.
02:09:46 <oklopol> or i could just keep on working
02:10:05 <Sgeo> @python user.Sgeo
02:10:06 <seabot> NameError: name 'user' is not defined
02:10:08 <Sgeo> @python users.Sgeo
02:10:31 <ehird> Sgeo: Please shut up when I just found a bug and am trying to fixi t
02:11:18 <oklopol> @python print "I WANNA TRY TOO"
02:11:29 <oklopol> @python for i in range(1000): {print "I WANNA TRY TOO"}
02:11:30 <seabot> NameError: name '_getiter_' is not defined
02:12:07 <Sgeo> ehird, how are you planning on preventing floods like that?
02:12:36 <ehird> Sgeo: Making output go sloooow.
02:12:40 <seabot> Reloaded the python plugin.
02:12:47 <ehird> Hmm, thanks oklopol
02:13:08 <Sgeo> @python str("Hi")
02:13:25 <seabot> Reloaded the python plugin.
02:13:28 <ehird> Sgeo: Totally bizzare
02:13:40 <Sgeo> @python str("Hi")
02:13:52 <seabot> Reloaded the python plugin.
02:13:54 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11e7e10>}
02:13:57 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x11e7e10>, 'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8310>}
02:14:22 <Sgeo> @python dir(users.Sgeo)
02:14:22 <seabot> AttributeError: 'dict' object has no attribute 'Sgeo'
02:14:34 <Sgeo> @python dir(users['Sgeo'])
02:14:34 <seabot> NameError: global name 'getitem' is not defined
02:14:35 <seabot> Reloaded the python plugin.
02:14:37 <seabot> {'ehird': <Big Brother>}
02:14:46 <seabot> Reloaded the python plugin.
02:14:47 <seabot> {'ehird': <big brother>}
02:14:48 <seabot> {'ehird': <big brother>, 'Sgeo': <big brother>}
02:14:49 <ehird> @python users.ehird
02:14:49 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:14:56 <ehird> @python type(users)
02:15:03 <Sgeo> @python users['ehird']
02:15:03 <seabot> NameError: global name 'getitem' is not defined
02:15:17 <seabot> Reloaded the python plugin.
02:15:21 <Sgeo> if it's a dict, it should be like user['ehird'] not users.ehird
02:15:30 <seabot> {'Sgeo': <big brother>}
02:15:33 <ehird> Sgeo: what do you think 'oshi-' means
02:16:29 <seabot> Reloaded the python plugin.
02:16:30 <seabot> Reloaded the python plugin.
02:16:33 <seabot> NameError: global name 'getitem' is not defined
02:17:17 <seabot> Reloaded the python plugin.
02:17:19 <seabot> {'ehird': <big brother>}
02:17:22 <ehird> @python users.ehird
02:17:23 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:17:35 <ehird> @python users.__class__
02:17:35 <seabot> SyntaxError: Line 1: "__class__" is an invalid attribute name because it starts with "_".
02:17:47 <ehird> Stupid RestrictedPython
02:18:36 <seabot> Reloaded the python plugin.
02:18:38 <seabot> {'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8c30>}
02:18:39 <seabot> {'ehird': <seabot.plugins.python.MagicGlobals object at 0x12270b0>, 'Sgeo': <seabot.plugins.python.MagicGlobals object at 0x11f8c30>}
02:18:46 <Sgeo> @python users['Sgeo']
02:18:46 <seabot> <seabot.plugins.python.MagicGlobals object at 0x11f8c30>
02:18:54 <Sgeo> @python test = 5
02:18:59 <seabot> Reloaded the python plugin.
02:19:01 <Sgeo> @python users['Sgeo']['test']
02:19:03 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
02:19:05 <ehird> @python users.Sgeo
02:19:05 <seabot> AttributeError: 'dict' object has no attribute 'Sgeo'
02:19:11 <ehird> Sgeo: just stop for a sec, k
02:19:48 * Sgeo wonders if he could help code somehow
02:19:58 <seabot> Reloaded the python plugin.
02:20:00 <ehird> @python users.Sgeo
02:20:00 <seabot> RuntimeError: maximum recursion depth exceeded
02:20:05 <seabot> {'ehird': <a big brother>}
02:20:17 <Sgeo> Why was it recusing if I wasn't in there?
02:20:17 <seabot> Reloaded the python plugin.
02:20:19 <seabot> {'ehird': <a big brother>}
02:20:21 <ehird> @python users.ehird
02:20:21 <seabot> NameError: global name 'name' is not defined
02:20:27 <oklopol> ehird: what do you do for protection?
02:20:28 <seabot> Reloaded the python plugin.
02:20:29 <ehird> @python users.ehird
02:20:51 <ehird> oklopol: I just ditched RestrictedPython. Now I'll protect it via __builtins__, modified globals, and __import__
02:20:58 <ehird> @python users.ehird.users
02:20:59 <seabot> {'ehird': <a big brother>}
02:21:01 <ehird> @python users.ehird.users.ehird.users
02:21:02 <seabot> AttributeError: 'dict' object has no attribute 'ehird'
02:21:36 <seabot> Reloaded the python plugin.
02:21:37 <ehird> @python users.ehird.users.ehird.users
02:21:37 <seabot> AttributeError: 'MagicGlobals' object has no attribute 'users'
02:21:40 <seabot> {'ehird': <a big brother>}
02:21:51 <ehird> Sgeo: this IS abusable -- you can modify the users dict how you please
02:21:58 <ehird> so you have to do all this:
02:21:58 <Sgeo> @python users['Sgeo']
02:22:18 <ehird> @python users.ehird._MagicGlobals__data
02:22:33 <seabot> {'ehird': <a big brother>, 'Sgeo': <a big brother>}
02:23:06 <ehird> @python def fact(n): { if n == 0: { return 1 } else: { return n * fact(n-1) } }
02:23:07 <Sgeo> @python type(users['Sgeo'])
02:23:07 <seabot> <class 'seabot.plugins.python.MagicGlobals'>
02:23:16 <seabot> <function fact at 0x11d2530>
02:23:19 <seabot> NameError: global name 'fact' is not defined
02:23:24 <seabot> <function fact at 0x11d2530>
02:23:32 <ehird> @python x = fact; x(2)
02:23:34 <Sgeo> @python users['ehird']['fact']
02:23:34 <seabot> <function fact at 0x11d2530>
02:23:37 <Sgeo> @python users['ehird']['fact'](5)
02:23:37 <seabot> NameError: global name 'fact' is not defined
02:23:52 <ehird> its erroring on the recursive fact
02:23:56 <ehird> @python users['ehird']
02:24:01 <ehird> @python dir(users['ehird'])
02:24:01 <seabot> ['_MagicGlobals__blab', '_MagicGlobals__data', '_MagicGlobals__users', '__builtins__', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__getitem__', '__hash__', '__import__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__str__', '__weakref__', 'special', 'stdout']
02:24:13 <ehird> @python users['ehird']['fact']
02:24:13 <seabot> <function fact at 0x11d2530>
02:24:15 <ehird> @python dir(users['ehird']['fact'])
02:24:16 <seabot> ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
02:24:21 <ehird> @python users['ehird']['fact'].func_dict
02:24:27 <ehird> i dunno why this is happening
02:24:31 <ehird> @python users['ehird']['fact'].func_globals
02:24:32 -!- seabot has quit (Excess Flood).
02:24:44 -!- seabot has joined.
02:24:59 <ehird> @python def id(x): { return x }
02:25:10 <ehird> @python def void(): { return void }
02:25:13 <seabot> NameError: global name 'void' is not defined
02:25:16 <seabot> <function void at 0x7b28b0>
02:25:33 <ehird> @python print repr(void.func_globals)[:20]
02:25:34 <Sgeo> yes, but what's func_dict supposed to be?
02:25:35 <ehird> @python print repr(void.func_globals)[:100]
02:25:36 <seabot> {'__builtins__': {'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 'hel
02:25:43 <ehird> @python print repr(void.func_globals)[100:200]
02:25:43 <seabot> p': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in func
02:25:46 <ehird> @python print repr(void.func_globals)[200:300]
02:25:46 <seabot> tion vars>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'unicode': <type 'unicode'>, 'UnicodeDec
02:26:08 <Sgeo> everything that the function sees as global, I guess?
02:26:27 <Sgeo> @python def void: {return void}
02:26:28 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
02:26:34 <Sgeo> @python def void(): {return void}
02:26:46 <Sgeo> @python void.func_globals['void'] = void
02:26:53 <Sgeo> @python void()
02:26:54 <seabot> <function void at 0x7ba1f0>
02:27:03 <Sgeo> ugly workaround though
02:27:35 <ehird> @python users.Sgeo.void
02:27:35 <seabot> AttributeError: 'MagicGlobals' object has no attribute 'void'
02:27:47 <Sgeo> @python users.Sgeo['void']
02:27:47 <seabot> <function void at 0x7ba1f0>
02:27:56 <seabot> Reloaded the python plugin.
02:27:57 <ehird> @python users.Sgeo.void
02:28:03 <ehird> I keep wiping yours
02:28:09 <ehird> @python users.ehird
02:28:21 -!- Sgeo has changed nick to `Sgeo.
02:28:27 <`Sgeo> @python print "Hi"
02:28:32 <seabot> {'ehird': <a big brother>, '`Sgeo': <a big brother>}
02:28:35 <ehird> @python users['`Sgeo']
02:28:51 <`Sgeo> @python getattr(users, "`Sgeo")
02:28:59 -!- `Sgeo has changed nick to Sgeo.
02:30:11 <ehird> oklopol: Feed in your cellular automata thing
02:30:16 <ehird> you wrote a function to do it
02:30:19 <oklopol> well i don't have it anywhere
02:30:20 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
02:30:23 <ehird> but now, it can be multiple statements and everything
02:30:28 <ehird> so it'll be a lot more convenient
02:30:38 <oklopol> i can rewrite one, or you can search it for me
02:30:42 <Sgeo> @python import sys; sys.exit
02:30:46 <ehird> oklopol: rewrite it to use the cool stuff
02:30:52 <Sgeo> @python import sys; sys
02:30:58 <ehird> Sgeo: yes yes it's buggy
02:31:04 <ehird> oklopol: here's the general rule:
02:31:07 <Sgeo> @python str("hi, I'm alive")
02:31:18 <ehird> foo: { bar } is foo:, with 'bar' as the indented block
02:31:23 <oklopol> what automaton do you want
02:31:24 <ehird> foo; bar is foo, a newline, and bar
02:31:31 <ehird> but of course the newline is bumped up to the right indent
02:31:39 <ehird> oklopol: how about that famous rule one
02:31:47 <oklopol> also i'm gonna write it in real python first, because i'm scared i might fail :<
02:32:22 <Sgeo> what's rule one?
02:32:45 <ehird> the turing complete one
02:33:06 <Sgeo> what are we talking about?
02:33:14 <oklopol> 110 + a few identical ones
02:34:49 <oklopol> 110 grows in the wrong direction, i'll reverse it
02:36:30 <ehird> oklopol: http://codespeak.net/pypy/dist/pypy/doc/sandbox.html
02:36:35 <ehird> because pypy is cool
02:38:56 <Sgeo> interacting through stdio? Why does that sound familiar.., </annoyingness>
02:39:46 <Sgeo> "instead, whenever it would like to perform such an operation, it marshals the operation name and the arguments to its stdout and it waits for the marshalled result on its stdin."
02:40:14 <ehird> Sgeo: oh. that's nothing like psox
02:40:21 * Sgeo was being silly
02:40:28 <oklopol> okay i'm implementing a bit verbosely
02:44:54 <ehird> oklopol: can't wait
02:46:33 <oklopol> hmph, should be ready already
02:49:10 <oklopol> asd someone show me some of it
02:49:31 <ehird> what are you talkng about
02:49:56 <ehird> http://en.wikipedia.org/wiki/Rule_110_cellular_automaton
02:50:02 <ehird> oklopol: try doing the 2,3 machine
02:50:31 * Sgeo actually helps someone with a regex question in #python ..
02:50:43 -!- tola_ has quit.
02:50:46 <ehird> ais523: you have a wikipedia article!
02:50:55 <ehird> http://en.wikipedia.org/wiki/Alex_Smith_%28The_Simplest_Universal_Computer_Proof_contest_winner%29
02:53:03 <ehird> oklopol: but anyhoo
02:53:17 <ehird> @python def rule110(foo): { ... }
02:53:35 <Sgeo> what are these rules?
02:53:41 <ehird> Sgeo: cellular automata
02:53:45 <ehird> Rule 110 is turing complete
02:54:15 <oklopol> i'm not really in a very fast coding mood right now
02:54:26 <oklopol> but... fuck if this takes over half an huor
02:54:39 <ehird> oklopol: it should work? try it :D
02:59:35 <ehird> i need to go soon :(
03:01:52 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)): {rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]
03:02:03 <oklopol> this is the function to get the next row
03:02:29 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)):{rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule))};if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:02:54 <ehird> i don't have much time :p
03:03:42 <oklopol> @python def next(l,r):{r=reverse(r);for i in xrange(len(r)): {if r[i]==True and l==to_bits(i,3): {return True }};return False}
03:04:52 <oklopol> @python def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))}
03:04:59 <ehird> oklopol: your original was a one-liner
03:05:08 <oklopol> and this could easily be made one
03:05:20 <oklopol> i just made it a bit more generic, for the fuck of it
03:05:52 <seabot> NameError: global name 'to_bits' is not defined
03:06:02 <ehird> the broken global bindings
03:06:06 <oklopol> do you want me to onelinerize it?
03:06:38 <ehird> how long will that taeke
03:08:28 <ehird> oklopol: i hope its just one function
03:08:30 <ehird> otherwise itll break
03:11:05 <oklopol> @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reverse(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reverse(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:11:19 <ehird> oklopol: is that it?
03:11:28 <ehird> if that's right, quick test it
03:11:30 <ehird> i have about 60 seconds
03:11:52 <ehird> @python print next_row([True])
03:11:52 <seabot> NameError: name 'next_row' is not defined
03:11:59 <ehird> @python print users.oklopol.next_row([True])
03:11:59 <seabot> NameError: global name 'reverse' is not defined
03:12:29 <ehird> @python def next_row(p,rule=110,spl=(0,-1)):{def next(l,r):{r=reversed(r);for i in xrange(len(r)):{if r[i]==True and l==to_bits(i,3):{return True}};return False};def to_bits(n,l=8):{ret=[];while n:{ret.append(n%2);n/=2};return reversed(ret+[0]*(l-len(ret)))};rule=to_bits(rule);ret=[];z=[0,0]+p+[0,0];for i in xrange(1,len(z)-1):{ret.append(next(z[i-1:i+2],rule)) };if spl[1]==0:{return ret[spl[0]:]};return ret[spl[0]:spl[1]]}
03:12:34 <ehird> @python print next_row([True])
03:12:34 <seabot> TypeError: argument to reversed() must be a sequence
03:12:51 <ehird> oklopol: feel free to try and fix it in pure python
03:12:53 <ehird> ill run it tomorrow
03:12:59 -!- seabot has quit (Remote closed the connection).
03:13:06 -!- ehird has quit ("This computer has gone to sleep").
03:13:10 <oklopol> it does already work in pure python.
03:33:52 -!- vixey has joined.
03:42:51 <vixey> no rest for the wicked
03:43:22 -!- oklofok has joined.
04:03:01 -!- oklopol has quit (Read error: 113 (No route to host)).
04:08:10 -!- AnMaster has quit (brown.freenode.net irc.freenode.net).
04:08:10 -!- Sgeo has quit (brown.freenode.net irc.freenode.net).
04:08:10 -!- Quendus has quit (brown.freenode.net irc.freenode.net).
04:08:11 -!- GregorR has quit (brown.freenode.net irc.freenode.net).
04:11:45 -!- Parma-Quendion has joined.
04:11:45 -!- AnMaster has joined.
04:11:45 -!- Sgeo has joined.
04:11:45 -!- Quendus has joined.
04:11:45 -!- GregorR has joined.
04:12:04 -!- Quendus has quit (Connection reset by peer).
04:18:51 -!- oklofok has quit (No route to host).
04:45:01 -!- Sgeo has quit (Read error: 104 (Connection reset by peer)).
04:46:41 -!- Sgeo has joined.
04:50:48 <pikhq> Being quite happy.
04:51:37 -!- Sgeo_ has joined.
04:52:34 <RodgerTheGreat> I'm grading quizzes and chipping away at my respect for humanity
04:53:50 <RodgerTheGreat> I wouldn't be surprised at an answer like that, with this class
04:54:03 <RodgerTheGreat> I've had people routinely misspell their own names, so all bets are off
04:55:37 <GregorR> Can you give us an example?
04:55:59 -!- Sgeo__ has joined.
04:56:15 <GregorR> Sgeo{_{_,},}: Stop growing underscores :p
04:56:35 <Sgeo__> The same page at popsci keeps causing me to freeze
04:56:36 <RodgerTheGreat> hm, well, I haven't run across any real doozeys yet in this batch, but there's been some pure gold in the past
04:57:10 <RodgerTheGreat> One guy wrote his first name and no last name on a paper, in a CLASS OF 93 STUDENTS. 5 people had that first name.
04:57:32 <RodgerTheGreat> wouldn't have made a difference though, because he got a zero on the assignment, too
04:57:56 <Sgeo__> Why does http://www.popsci.com/scitech/article/2008-02/anonymity-experiment keep causing my computer to freeze?
04:58:46 <RodgerTheGreat> we have a lot of quizzes that are just "write your name on a sheet of paper" and people still fuck it up, misspelling their names, writing illegibly (think first-grader with a crayon illegibly) and turning in the quiz... without their name on it.
04:59:35 <GregorR> So, uh, what sort of class is that?
05:00:10 <GregorR> Jebus. People somehow manage to get /to/ that class while still being dumbf***s?
05:00:29 <RodgerTheGreat> it's a painfully easy class- when I took it I got over 100% overall. This is why I can mock their failures.
05:01:08 <RodgerTheGreat> it's basically the first thing you take after passing basic "intro to Java" style stuff. Most of it isn't even CODING, it's just learning how to properly spec and design OO projects
05:02:22 <RodgerTheGreat> The writing skills really bring me to tears. I cannot BELIEVE people can get into college without being able to write a coherent sentence that doesn't look like it was scrawled by someone with cerebral palsy.
05:02:46 <GregorR> There's a whole class of people who get into CS but are too effing stupid to ever get it. I call them "gamers", although it's actually a bigger set. Anyway, usually they've all been weeded out by the time you get to any real courses, so this surprises me a bit.
05:03:13 <RodgerTheGreat> OOD *IS* the class that weeds these people out, as far as I can tell.
05:03:32 * Sgeo__ is in a database class.
05:03:57 <Sgeo__> No major, I'm non-matric
05:04:23 <Sgeo__> My college offers "Computer Information Systems", they shut down CS
05:04:46 <GregorR> I'm going to Purdue next year 8-D
05:05:56 <RodgerTheGreat> I have a friend from the UK who's taking Software Engineering because his university doesn't recognize CS as a field (what the christ), and he told me they're dropping their Data Structures course next year.
05:07:08 -!- Sgeo has quit (Read error: 110 (Connection timed out)).
05:09:04 <Sgeo__> Maybe I should go to a different college?
05:09:19 <GregorR> I know I wouldn't go to a college that didn't offer a Major in CS.
05:09:36 -!- Sgeo_ has quit (Read error: 110 (Connection timed out)).
05:09:37 <RodgerTheGreat> I can say that MTU, at least, has a CS department that doesn't seem to be spiraling into the shitter
05:09:55 <GregorR> I mean, every university hsa the right to offer or not offer whatever they feel like, but you also have the right to go too a university that DOES offer what you need.
05:09:57 <Sgeo__> I mean, CIS does have a programming branch or whatever it's called
05:10:40 <RodgerTheGreat> I'd say if you aren't going to a university that doesn't offer the major you're interested in, you're wasting your money.
05:10:59 <GregorR> Let me try to reduce the negatives there:
05:11:00 <Sgeo__> RodgerTheGreat, s/aren't/are/?
05:11:14 <GregorR> If you ARE going to a university that DOES offer the major you're interested in, you're wasting your money.
05:11:48 <RodgerTheGreat> This is what happens when I get distracted in mid-thought
05:11:51 <Sgeo__> GregorR, I don't think those are equivelent
05:24:28 <RodgerTheGreat> is it bad that I tend to instantly form a negative opinion of someone who writes their name with a roman numeral/ number after it, such as "John Smith III" or "Ted Borglan the second"?
05:43:51 <GregorR> "III" isn't, "the second" or "II" is (IMHO)
05:44:12 <GregorR> "The second" is the same as "Junior", so that's just pretentious.
05:44:53 <GregorR> But "The third"/"III" is not replaceable, and just part of the persons name. It's part of their full name, so that's how they write it.
05:45:01 <RodgerTheGreat> I fail to understand why pretentiousness doesn't carry past a single generation
05:45:47 <RodgerTheGreat> well, honestly writing a middle name in most non-legal or administrative cases is rather pretentious as well, so I'd argue that applies to "III"
05:46:19 <GregorR> Do you find somebody who writes Bob Forpthop Jr. pretentious? (Assuming of course that their father's name is Bob Forpthop)
05:48:34 <GregorR> Heh - it seems to me like writing III after is no different (Jr. Jr. is just stupid), so the opinion should be the same if nothing else :P
05:49:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
05:50:00 <RodgerTheGreat> how about parents showing some creativity naming their children, avoiding the problem altogether?
05:50:15 -!- Judofyr has joined.
05:50:17 <RodgerTheGreat> If you want to keep a "family name", alternate generations or something
05:50:40 <GregorR> If I have a son, I'm naming him Jesus Muhammed God, just to offend everyone.
05:51:55 <Slereah> Jesus Muhammed Buddah Xenu Yahweh
05:52:25 <RodgerTheGreat> I'd probably be inclined to name a child something out of fashion but interesting, like Otto or Orville
05:52:30 -!- calamari has joined.
05:52:39 <RodgerTheGreat> For some reason the names coming to mind at the moment start with "O"
05:53:18 <GregorR> There's a family name in my family that hasn't been used for, oh, ten generations or so.
05:53:38 <GregorR> If I have a son that I hate, I'll name him Dodofur.
05:54:08 <Slereah> How do you know that you hate him at birth?
05:54:21 <GregorR> Idonno, I guess that's the trick.
05:54:37 <RodgerTheGreat> if it pisses on you moments after birth, it could be a sign
05:54:39 <GregorR> However, I hate children, so it's pretty much "he exists" :P
05:55:27 <RodgerTheGreat> I tend to be very polarized about children. Some are polite and interesting and I like them, while others are evil little bastards
05:59:43 <RodgerTheGreat> freeze some sperm ahead of time incase you change your mind. Best of both worlds!
06:00:47 <Slereah> Just adopt the kid at 7 year.
06:00:53 <Slereah> That way, less crying and shitting.
06:00:59 <GregorR> But then my genes won't promulgate :P
06:01:30 <GregorR> Of course, statistics tells us that your genes are extremely unlikely to promulgate beyond ten or so generations - and if they do, everyone in the nation will have them.
06:02:24 <Slereah> When I'm dead, it won't matter!
06:02:38 * Sgeo__ thinks his genes should be spread
06:02:42 <Slereah> Facts indicate that you don't actually survive through your biological childrens.
06:02:56 <Slereah> I spread my genes everyday.
06:03:10 <Slereah> Of course, they mostly end up in the trash can
06:03:24 <Sgeo__> I meant, if more people had my genes, the world would be a better place, in my not so humble opinion
06:03:34 <RodgerTheGreat> I'd posit that being a good parent and raising your child is significantly more beneficial than spreading your genes
06:04:13 <GregorR> Hahahaha, another T-shirt worthy phrase from RodgerTheGreat X-D
06:04:27 <Slereah> What if you fuck your child?
06:06:15 -!- lifthrasiir has joined.
06:08:43 <RodgerTheGreat> GregorR: I don't think I should draw a picture to go with that quote, though
06:09:30 <RodgerTheGreat> although I'm now imagining a portal-style schematic diagram with "DO" and "DO NOT" panels
06:10:24 <RodgerTheGreat> DO NOT PUT THE BABY IN THE LOVELESS PARENT/CHILD RELATIONSHIP
06:10:44 <GregorR> That could use a bit more refinement :P
06:12:16 <Slereah> LOVE YOUR CHILD LIKE YOU LOVE YOUR PENIS
06:12:24 <Slereah> Of course, it could be misinterpreted.
06:13:13 <pikhq> DO NOT PUT THE BABY IN THE MAN-PENIS RELATIONSHIP.
06:14:22 <pikhq> DO NOT PUT THE BABY IN THE ABORTION CLINIC.
06:14:43 <RodgerTheGreat> "IT IS MUCH TOO LATE YOU NOW REQUIRE A WOODCHIPPER AND/OR LARGE DOG"
06:15:06 * pikhq wonders what a large dog going through a woodchipper sounds like
06:15:21 <Slereah> Well, you could just sort of leave some pills lying around.
06:15:41 <GregorR> Are we discussing methods of infanticide?
06:15:42 <Slereah> and if you accidentaly drop him on the floor, we understand.
06:16:36 <Slereah> I wonder how many toddler's death are somehow premeditated.
06:16:58 <Slereah> It's not like it's hard to make them kill themselves!
06:17:06 <pikhq> GregorR: We're just discussing DO NOT PUT THE BABY.
06:17:13 <pikhq> Which lends itself to infanticide easily.
06:17:29 <GregorR> But it's "do NOT put the baby in the wood chipper"! :P
06:17:59 <RodgerTheGreat> DO NOT PUT THE BABY-> Brainstorm for bad baby locations->Infanticide
06:18:13 <pikhq> DO NOT PUT THE BABY IN THE T4 GAS CHAMBER.
06:18:15 <Slereah> But well, some people just can't do thing simply.
06:18:21 <Slereah> Putting the baby in the freezer
06:18:39 <Slereah> What's the deal with that?
06:19:00 <RodgerTheGreat> "DO NOT PUT THE BABY IN THE MANDELBROT SET... SOMEWHERE." and just have a black-and-white image of the mandelbrot set.
06:19:02 <Slereah> Do you want to be reminded of your infanticide everytime you get some TV dinner?
06:20:11 <pikhq> I can do much better than that.
06:20:33 <GregorR> If anybody wants to make new DNPTBs, feel free :P
06:20:52 <pikhq> Lessee here. . . I have devices that emit toxic gases, I have access to 120V AC, I have devices that irradiate items. . .
06:21:09 <pikhq> I have devices that rotate items at fairly high speeds. . .
06:21:18 <pikhq> Infanticide: because everything's a weapon.
06:21:50 <Slereah> Why do you need such high tech gizmos?
06:22:25 <pikhq> Slereah: One word: knife.
06:22:32 <GregorR> I don't want to make T-shirts that could potentially be taken to be a statement on abortion.
06:22:41 <Slereah> A knife would be too suspiscious
06:22:51 <pikhq> RodgerTheGreat: One word: drop.
06:22:57 <Slereah> If you have knives lying around, it's a little suspiscious.
06:23:06 <Slereah> Plastic bag is okay though
06:23:17 <pikhq> Slereah: So, *every kitchen* is suspicious?
06:23:28 <pikhq> RodgerTheGreat: I have yet to specify a height.
06:23:30 <Slereah> Well, if the knives are lying on the floor!
06:23:36 <pikhq> I was thinking 'Empire state building'.
06:23:58 <Slereah> Most people store their knives in drawers, or at least on high tables
06:24:01 <RodgerTheGreat> hm. well, in that case the weapon is really the building, no?
06:24:09 <pikhq> No, the weapon is gravity.
06:24:24 <pikhq> Slereah: Fine, fine.
06:24:52 <pikhq> (that's cruel. Even for someone talking about infanticide)
06:24:57 <RodgerTheGreat> Slereah: I store my knives in a colorful baby-height pile of children's toys and stuffed animals
06:25:52 <pikhq> DO NOT PUT THE BABY IN THE DISTOPIA.
06:26:42 <Sgeo__> DO NOT PUT THE BABY ON 4CHAN
06:27:31 <RodgerTheGreat> this is a really nifty painting: http://img.waffleimages.com/d89ca2727870ca4377777eab22885e7c611992dd/daim2.jpg
06:42:51 -!- Sgeo__ has quit (Remote closed the connection).
07:04:18 -!- GreaseMonkey has joined.
07:15:17 -!- RodgerTheGreat has quit.
07:45:51 -!- jix has joined.
07:48:40 <GregorR> RISCy men do it with their ARMs.
07:57:37 -!- Judofyr has quit.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:12:01 -!- calamari has quit ("Leaving").
08:41:39 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).
08:46:07 -!- Iskr has joined.
09:55:50 -!- olsner has quit (Read error: 110 (Connection timed out)).
10:10:43 -!- GreaseMonkey has quit ("Read error: 110 (Connection chickened out)").
10:24:07 -!- jix has quit ("This computer has gone to sleep").
12:09:45 -!- ais523 has joined.
13:03:58 -!- timotiis has joined.
13:37:08 -!- Corun has joined.
13:54:12 -!- ais523 has quit ("(1) DO COME FROM ".2~.2"~#1 WHILE :1 <- "'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"").
14:19:58 -!- sebbu2 has joined.
14:25:22 -!- Judofyr has joined.
14:29:11 -!- sebbu has quit (Read error: 113 (No route to host)).
14:29:11 -!- sebbu2 has changed nick to sebbu.
14:42:43 -!- ehird has joined.
14:43:25 <SimonRC> xkcd should do a comic entitled "My Hobby: breaking the fourth wall"
14:43:41 <SimonRC> the character would be breaking the fourth wall in the wrong way of course
14:44:13 <SimonRC> e.g. thinking it is a movie, or a book, or maybe just "talking to the camera" in the wrong direction.
14:59:38 -!- jix has joined.
15:09:09 <ehird> e ruytrryt uighilfghnm,.bvcn,bmnvcnm,./mnbvm,.mnbvcncxzcvzccvjkhjj'l;kjhjlhfgjffdsghjhgdsfghjkdfxghjfdsghjkoopiuytyuuyt
15:09:13 <ehird> Sorry, that was me cleaning my keyboard.
15:10:53 <Slereah> SimonRC : No, he should not.
15:18:45 <SimonRC> ehird: http://www.bash.org/?52
15:24:44 <ehird> I regularly destroy my todo.txt when cleaning my keyboard
15:25:03 <ehird> It turns from 'Do blah blah blah blah blah blah' into 'Do blah blah blah b lsdf$af)_a0-#9080ewe
15:25:34 <SimonRC> I notice that you dind't clean the qwa keys above
15:26:01 -!- seabot has joined.
15:26:07 <ehird> I did, I just didn't press down on them hard
15:26:24 <ehird> This keyboard isn't a gradual push
15:26:34 <ehird> it's either not pressed, or totally pressed
15:26:42 <SimonRC> why can't you clean it into a text editor or something, rather than irc?
15:27:18 <ehird> SimonRC: because i can't be bothered to think about stuff like that when it only takes a few seconds :-)
15:28:01 -!- seabot has quit (Remote closed the connection).
15:28:07 -!- seabot has joined.
15:28:30 -!- seabot has quit (Remote closed the connection).
15:28:36 -!- ehird has changed nick to seabot.
15:28:41 -!- seabot has changed nick to ehird.
15:28:56 -!- seabot has joined.
15:28:56 -!- seabot has quit (Remote closed the connection).
15:29:08 -!- seabot has joined.
15:30:49 -!- seabot has quit (Excess Flood).
15:30:58 <ehird> Well I figured out how to abuse it
15:36:45 <SimonRC> I didn't see it say a word
16:21:01 -!- Tritonio_ has quit ("Bye...").
16:37:12 -!- sekhmet has joined.
16:39:10 -!- pikhq has quit (Read error: 110 (Connection timed out)).
16:39:12 -!- pikhq_ has joined.
16:40:51 <ehird> I was going to tell him something!
16:43:23 -!- pikhq_ has quit (Read error: 104 (Connection reset by peer)).
16:44:10 -!- pikhq has joined.
17:14:09 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
17:14:45 -!- Judofyr has joined.
17:26:12 -!- oklopol has joined.
17:28:42 <ehird> oklopol: you are heeere
17:28:57 <ehird> I thought I had implemented continuations in Python but it turns out I didn't :(
17:29:18 <oklopol> i basically went to sleep when you left, and woke up now
17:29:36 <oklopol> anyway, i did make a parser from python to your format and finished the program first
17:29:38 <SimonRC> ehird: doesn't stackles Python already have continuations?
17:29:58 <ehird> SimonRC: And PyPy has a real sandbox.
17:30:16 <ehird> Also, Rubinius is better designed than the current RubyVM.
17:30:20 <ehird> All of these mean nothing.
17:30:24 <oklopol> what's freenode's maximum line length?
17:30:25 <ehird> SimonRC: Anyway, Stackless removed continuations.
17:30:49 <oklopol> you see, i actually wrote the automaton to especially test your multiple line input
17:32:13 <oklopol> you see, unlike you, i haven't had a day between this moment and our conversation
17:32:32 <oklopol> it's coding 110 -> sleep -> back to irc to talk about it
17:32:33 <ehird> oklopol: I am redesigning Seabot
17:32:48 <ehird> so feel free to play
17:33:01 <oklopol> i guess i could remake the prog to be a bit shorter
17:33:18 <oklopol> wasn't my other version in ruby?
17:33:39 -!- seabot has joined.
17:35:08 <ehird> oklopol: there ya go
17:35:19 -!- RodgerTheGreat has joined.
17:39:00 <ehird> oklopol: #python be hatin' on me for my braces
17:40:55 <oklopol> http://www.vjn.fi/pb/p611563426.txt
17:41:43 <oklopol> sorry, koed has become my official way to type that because it's so nice to write
17:42:15 -!- Sgeo has joined.
17:42:55 <oklopol> i didn't really test it :D
17:43:04 <Sgeo> ehird, what works?
17:43:15 <oklopol> http://www.vjn.fi/pb/p611563426.txt
17:43:43 <oklopol> just ehird's python braces format thing parser the other way around
17:43:55 <ehird> "if x:{True}else:{while Foo:{print 'hi';2}}"
17:43:58 <ehird> that's what it gave me
17:44:25 <ehird> now I am going to rewrite the parser, and write deparser that's more stable
17:44:29 <ehird> and call it 'bracism' :D
17:44:33 <oklopol> that was trivial to parse of course, it's the other way that requires anything
17:44:49 <oklopol> not that it requires *anything* still
17:45:17 <oklopol> hmm.... i went to sleep because no shops were open... and now they're soon closed again
17:45:37 <oklopol> why must others want to live when the sun is up :<
17:45:54 <oklopol> and why doesn't python have anything
17:46:23 <oklopol> no easy way to iterate in slices of three
17:48:25 <ehird> oklopol: you keep runnign into pythons limitations
17:48:30 <ehird> you should make Soup
17:48:47 <ehird> which is like Python, but has continuations and slicer thingies and okokokoko
17:48:51 <oklopol> although it's even more retarded currently, of course
17:48:52 <ehird> and oklotalk isn't like python :p
17:49:14 <oklopol> well indeed, it's quite different
17:49:31 <oklopol> i mean, the program flow is different, it's similarly dynamic though.
17:49:58 <oklopol> python has quite little computational stuff built-in
17:50:02 <ehird> oklopol: BUT YOU SHOULD MAKE SOUPPP
17:50:04 <oklopol> well... so does almost every language
17:50:10 <ehird> Continuations should be implemented in Soup itself
17:50:19 <ehird> and Soup just provides a first-class callstack
17:50:21 <oklopol> which isn't nice for us who have a fear of importing modules.
17:50:26 <ehird> And you can make MULTIPLE CALLSTACKS
17:50:34 <ehird> CallStack.current()
17:50:36 <oklopol> well python has a viewable callstack
17:50:40 <ehird> and then on a CallStack()
17:50:50 <ehird> so you can make your own magical callstack then switch to it!
17:50:59 <ehird> oklopol: but this would allow pushing and popping and slicing and assigning to elements
17:51:10 <ehird> you could even make exceptions implemented in Soup
17:51:28 <ehird> just make a .throw() method that unwinds the CallStack.current
17:52:00 <oklopol> a global stack where you can push and pop return continuations with try and... leaving try's scope
17:52:02 <ehird> oklopol: don't make it a list, because 1. it should be a linked list. why? because then continuations are free (no copying) 2. you need special things like .switch() 3. it shouldn't contain anything other than CallStackFrames
17:52:33 <oklopol> a list, in soup, is a conceptual list, you don't need to know what it is
17:52:49 <ehird> oklopol: but CallStack has special methods that are not what lists have
17:52:58 <ehird> & treating it as a list would be useless
17:53:02 <ehird> oklopol: the better way
17:53:06 <ehird> is to have an interface-thingy
17:53:09 <oklopol> it can just have methods added
17:53:14 <ehird> and make an Array which is a Sequence
17:53:20 <ehird> and LinkedList which is too
17:53:28 <ehird> and then CallStack which is a Sequence but not an Array or LinkedList
17:53:38 <ehird> and you don't need to make Sequence concrete
17:53:51 <oklopol> well sequence is that i meant by list here
17:53:51 <ehird> sequence is just having e.g. __index__(thing)
17:53:57 <ehird> you see what i mean?
17:54:03 <ehird> so CallStack shouldn't be a list
17:54:05 <ehird> it shoudl just be indexable
17:54:12 <ehird> you don't need to point THAT out
17:54:46 <ehird> oklopol: anyway, Soup should have MAGIC MODULES
17:54:49 <ehird> which e.g. change the syntax
17:54:54 <ehird> will give you my syntax
17:55:04 <ehird> you gotta admit, SOUP IS AWESOME
17:55:10 <ehird> now I want it too!!
17:55:13 <ehird> let's implement it :q
17:55:39 <ehird> (def hello () (print "hi"))
17:55:59 <ehird> oklopol: Soup should be implemented in Python, amirite
17:57:00 <ehird> oklopol: soup will require a lot of draft planning though
17:57:06 <ehird> there will need to be a soup.Parser class
17:57:10 <ehird> of which the default is just one :p
17:57:45 <ehird> though YAGNI (You Aren't Gonna Need It) and Do The Simplest Thing That Could Possibly Work dictates that we should delay that feature until later
17:59:03 <ehird> oklopol: name something else cool that python has and soup doesn't
18:01:26 <ehird> oklopol: don't say i need to okloping you!
18:02:06 <oklopol> @python def do(n):{r=[1];def f(r):return "".join([i and "1" or "0" for i in r]);def next(l):return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)];for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:02:20 <seabot> NameError: name 'do' is not defined
18:02:25 <ehird> @python useres.oklopol.do(10)
18:02:25 <seabot> NameError: name 'useres' is not defined
18:02:27 <ehird> @python users.oklopol.do(10)
18:02:35 <seabot> {'ehird': <a big brother>, 'oklopol': <a big brother>}
18:02:37 <ehird> @python users.oklopol
18:02:40 <ehird> @python users.oklopol['do']
18:02:50 <ehird> oklopol: seabot's python stuff is just borked
18:03:01 <ehird> oklopol: oh, that's something else Soup should have! a Sandbox built in
18:03:11 <ehird> oklopol: so that something like seabot can just be done by subclassing Sandbox
18:03:14 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:03:14 <seabot> SyntaxError: invalid syntax (<irc>, line 11)
18:03:15 <ehird> and specifying what you want to allow
18:03:55 <ehird> for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]))
18:03:57 <ehird> your ; is the borkage
18:04:30 <ehird> oklopol: now what about SOUP :D
18:04:48 <ehird> AnMaster: i added that so it can be used on one line
18:04:56 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):;n.append(next(r[i-1:i+2]));r=n}};do(10)
18:04:56 <seabot> SyntaxError: invalid syntax (<irc>, line 11)
18:05:01 <ehird> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):n.append(next(r[i-1:i+2]));r=n}};do(10)
18:05:02 <seabot> SyntaxError: invalid syntax (<irc>, line 15)
18:05:34 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}};do(10)
18:05:34 <seabot> SyntaxError: invalid syntax (<irc>, line 16)
18:06:22 <ehird> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])}def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]}for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))}r=n}}
18:06:40 <oklopol> @python def do(n):{r=[1];def f(r):{return "".join([i and "1" or "0" for i in r])};def next(l):{return {"111":0,"110":1,"101":1,"100":0,"011":1,"010":1,"001":1,"000":0}[f(l)]};for i in xrange(n):{print f(r);r=[0,0]+r+[0];n=[];for i in xrange(1,len(r)-1):{n.append(next(r[i-1:i+2]))};r=n}};do(10)
18:06:41 <seabot> SyntaxError: invalid syntax (<irc>, line 19)
18:06:58 <ehird> only supports ONE statement/expr
18:07:00 <vixey> @python 10 PRINT "HELLO WORLD" 20 GOTO 10
18:07:00 <seabot> SyntaxError: invalid syntax (<irc>, line 1)
18:07:12 <ehird> @python while True: { print "HELLO WORLD" }
18:07:13 -!- seabot has quit (Excess Flood).
18:07:22 -!- seabot has joined.
18:07:44 <oklopol> well, in that case it wasn't exactly my fault, so i guess i can be at peace
18:08:04 <ehird> @python def PRINT(x): { print x }
18:08:31 <ehird> @python class GOTOC: { def __getattr__(self, name): { globals()[name]() } }
18:08:36 <ehird> @python GOTO = GOTOC()
18:08:45 <ehird> @python def l0(): { PRINT("HELLO WORLD"); GOTO.l0 }
18:08:52 <seabot> NameError: global name 'PRINT' is not defined
18:09:10 <ehird> @python l0.__dict__['PRINT'] = PRINT
18:09:17 <ehird> @python l0.func_globals['PRINT'] = PRINT
18:09:21 <ehird> @python l0.func_globals['GOTO'] = GOTO
18:09:30 <seabot> {'__builtins__': {'IndexError': <type 'exceptions.IndexError'>, 'all': <built-in function all>, 'help': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in function vars>, 'SyntaxError': <type 'exceptions.SyntaxError'>, 'unicode': <type 'unicode'>, 'UnicodeDecodeError': <type 'exceptions.UnicodeDecodeError'>, 'isinstance': <built-in function isinstance>, 'copyright': Copyright (c) 2001-2006 Python Software Foundation
18:09:30 <seabot> Copyright (c) 2000 BeOpen.com.
18:09:30 -!- seabot has quit (Excess Flood).
18:09:37 <oklopol> :DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
18:09:37 <ehird> it was a nice idea
18:09:48 <AnMaster> ehird, you still need rate limiting
18:09:52 <ehird> AnMaster: i don't care.
18:09:56 <ehird> seabot is going to be rewritten
18:09:58 <ehird> oklopol: IN SOUP RIGHT?
18:10:16 <ehird> it means Super Python
18:10:31 <ehird> it is the thing that OKLOPOL AND I ARE THINKING OF AWESOME FEATURES FOR
18:10:34 <ehird> ISN'T THAT RIGHT OKLOPOL
18:11:25 <oklopol> now, about features... we both agree it should be *awesome*, right?
18:11:40 <oklopol> okay, we should write this down.
18:12:00 <oklopol> i need to go buy me some onion rings, and make my fire alarm go FRIIIIIIIIIII
18:12:42 <ehird> oklopol: yeah, i'll open a text file
18:12:53 <ehird> http://rafb.net/p/j7c2ZA16.html
18:15:15 <ehird> and one that doesn't overflow the stack:
18:15:16 <ehird> http://rafb.net/p/XLdxub19.html
18:17:24 <ehird> omg soup will rock
18:17:58 <oklopol> what has the world come to
18:18:05 <ehird> did you see my last one?
18:18:08 <ehird> it was a mini-interpreter
18:18:35 <ehird> oklopol: anyway I had another Soup idea
18:18:40 <ehird> it should have pluggable GCs
18:18:45 <ehird> you can subclass GC
18:18:49 <ehird> then do something like
18:19:05 <ehird> System.use_gc(MySubClass)
18:19:11 <ehird> and it'll use that for all gcs
18:19:15 <ehird> MySubClass.collect()
18:19:41 <ehird> oklopol: awesome? :D
18:20:04 <oklopol> everything needs to be changeable at runtime
18:20:17 <ehird> Soup is just Python, but TOTALLY SUPER
18:20:24 <oklopol> should we have a special import, that does stuff only once
18:20:29 <oklopol> i mean, import can be executed anywhere
18:20:34 <oklopol> but if it changes syntax...
18:20:50 <oklopol> or changes gc, also a small ellipsis htere
18:20:57 <ehird> oklopol: well, 'import' won't be as clever as Python's
18:21:13 <ehird> no syntax will change the syntax of 'import'
18:21:22 <ehird> so, at the start of interpreting, all the imports are scanned
18:21:28 <ehird> and then the syntax is decided on that
18:21:37 <ehird> or... just make all imports appear at the beginning of the file
18:21:43 <ehird> and i've never used one elsewhere
18:22:01 <ehird> probably it will just do it as a normal statement
18:22:08 <oklopol> i have, occasionally, when writing stuff in a cli where you cannot go back a line :-)
18:22:08 <ehird> just the 'defined behaviour' is that
18:22:19 <oklopol> but that's a bit different
18:22:53 <oklopol> well it could just not do anything if it tries something that doesn't work at runtime
18:23:07 <ehird> oklopol: well, i think we should defer the custom syntax thing to later
18:23:15 <ehird> otherwise our heads will hurt
18:23:27 <oklopol> SHOP ME GO NOW REALLY GO GO ->
18:35:56 <oklopol> i need channel-specific caps lock
18:38:00 <oklopol> after that, prolly oklotalk time.... :|
18:38:16 <oklopol> so many features, so little time
18:38:25 <ehird> start prototyping oklotalk
18:38:37 <oklopol> well oklotalk needs to work by wednesday
18:38:45 <ehird> ok but you can do soup too :p
18:39:16 <oklopol> "so i created this language, and then another language, implemented the first one in python and the second in the first one"
18:39:54 <oklopol> sounds like something you din 2 days
18:40:05 <ehird> oklopol: YOU CAN MULTITHREAD
18:41:33 <ehird> oklopol: but Soup is too awesome not to SOUPIFY
18:43:07 <ehird> I'll just prod you questions about it, and thou shalt have no choice! mwahaha
18:43:44 <ehird> oklopol: your other weakness - pastebins
18:43:51 <ehird> if i pastebin some code and describe it and ask somethinig
18:43:55 <ehird> YOU SHALL HAVE NO CHOICE
18:44:02 -!- vixey has left (?).
18:55:04 -!- Corun has quit ("This computer has gone to sleep").
18:56:59 -!- jix has quit (Nick collision from services.).
18:57:09 -!- jix has joined.
19:51:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
19:52:02 -!- Judofyr has joined.
19:55:02 -!- olsner has joined.
20:00:33 -!- oerjan has joined.
20:03:06 -!- Corun has joined.
20:09:43 * oerjan looks at some of the latest xkcd's and concludes that Munroe is probably now only doing stick figures out of tradition...
20:10:06 <ehird> if they weren't stick figures, it would lose the xkcd feel
20:10:16 <oerjan> well that's what i mean by tradition
20:10:31 <ehird> well, i was kinda saying that it wasn't the 'ohh, its just how we've always done it'
20:10:36 <ehird> more that it's an integral part of xkcd
20:12:18 * oerjan looks at some of the _first_ xkcd's and concludes it has always been that way, really
20:15:13 -!- Iskr has quit ("Leaving").
20:15:45 <SimonRC> the earliest ones had some non-stick-figures
20:16:25 <oerjan> i mean that he was always able to do better
20:20:06 <SimonRC> there, not a stick figure: http://xkcd.com/1/
20:20:54 <oklopol> hoh, it seems i've read all xkcd
20:21:37 <oerjan> a long time ago in a ... wait, wrong webcomic
20:22:22 <Sgeo> Oh, I forgot to check xkcd today
20:22:44 <SimonRC> http://xkcd.com/7/ http://xkcd.com/11/ http://xkcd.com/22/ http://xkcd.com/23/ http://xkcd.com/31/ That probably most of them
20:23:16 <SimonRC> http://xkcd.com/26/ is the first really geeky one, I think...
20:25:05 <SimonRC> 10 is the first one with geek culture
20:26:38 <SimonRC> I discovered that one can see the latest Dr Who on the web: http://www.bbc.co.uk/doctorwho/s4/videos/
20:27:55 <SimonRC> aaaand the first joke to get a life of its own: http://xkcd.com/37/
20:28:20 <SimonRC> Incidentally, the first "My hobby", I think
20:28:20 <oklopol> well indeed, should be like in hex
20:48:26 -!- sebbu has quit (No route to host).
21:03:36 -!- sebbu has joined.
21:11:53 -!- wildhalcyon has joined.
21:19:54 <GregorR> Come on, no phrases start with "winder" :P
21:22:20 <ehird> High low brow beat off 'side winder farms.
21:22:43 <ehird> So... a low-brow person, on drugs, stimulated themself beside a wind farm
21:23:18 <oerjan> that's remarkable especially as i never expected it to be a sentence
21:24:13 -!- sekhmet_ has joined.
21:24:48 <SimonRC> # Enemy lasagna / Robust below wax / Semiautomatic aqua / Accompany slacks / ... #
21:25:55 <SimonRC> http://video.google.com/videoplay?docid=7084489538066105747
21:25:58 -!- sekhmet has quit (Nick collision from services.).
21:26:02 -!- sekhmet_ has changed nick to sekhmet.
21:26:24 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
21:26:54 -!- Judofyr has joined.
21:27:27 <ehird> SimonRC: You may stop flooding now
21:28:39 <SimonRC> it is intersting to see which ones are pronounced differently in America
21:39:55 <GregorR> I was going to organise my ad-VER-tisments by colour-co-ordinating them.
21:40:39 <oklopol> i pronounce it as ADVERTISEMENTS, the press is on the entire word
21:41:08 <GregorR> OK, but is it -ize-ment or -izment?
21:41:32 <oklopol> it's so loud you can't tell.
21:41:47 <GregorR> So it's really just FG(UDS)GHF(ESW HF(SHF(*E&WYR(_A&F(AAAAAAAAAAAAAHG
21:54:40 -!- sekhmet has quit (Remote closed the connection).
21:54:44 -!- sekhmet has joined.
22:18:59 -!- jix has quit ("CommandQ").
22:43:30 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
22:43:49 -!- Judofyr has joined.
22:54:32 <SimonRC> http://www.youtube.com/watch?v=6cAs1YBELmA
22:55:06 <SimonRC> do American houses really have the flag hanging on the wall indoors?
22:55:36 <wildhalcyon> depends on how patriotic/neurotic/insane the owner is
22:57:03 <SimonRC> This guy is so blatently pre-uni
22:57:28 <SimonRC> in his lyrics rather than just in appearance
23:07:07 <ehird> a language where all variables are mutable, but cells, would be interesting
23:07:29 <ehird> x -> 5; y -> x+2; // here y is 7
23:07:38 <ehird> x -> y; // here y is ...
23:08:31 <ehird> also, dictionaries are functions
23:08:34 <ehird> and scopes are dictionaries
23:08:49 <ehird> CurrentScope[#x] -> 5; is x -> 5;
23:10:00 <oerjan> war is peace! freedom is slavery!
23:10:25 <ehird> oerjan: and scopes are functions
23:12:10 <SimonRC> the problem is that "x = y" sets the two variables to be the same cell, whereas "x = y + 0" sets x to be a new cell which contains that value that y happened to have at that time.
23:12:43 <SimonRC> also, wasn't there an esolang where every program gradually made every number integer to every other integer?
23:12:53 <ehird> SimonRC: and that is wrong
23:13:01 <ehird> x = y + 0 means that the value of 'x' is the value of 'y', plus 0
23:13:10 <ehird> 'here y is ...' meant 'here y loops forever'
23:13:35 <ehird> (random note on the scope-function-dictionary thing: you could extend that by using {...} as dictionary syntax)
23:13:46 <ehird> {X -> 2; Y -> 3} is like:
23:13:54 <ehird> Foo[#X] -> 2; Foo[#Y] -> 3
23:13:54 -!- olsner has quit ("Leaving").
23:13:58 <ehird> except with Foo anonymous
23:15:34 <ehird> incidentally, here's BCT
23:15:34 <ehird> BCT[{0,...},{_,....}] -> ....;
23:15:34 <ehird> BCT[{1,X,...},{1,....}] -> {1,....,X};
23:15:34 <ehird> BCT[{1,X,...},{_,....}] -> ....;
23:15:50 <ehird> (decided that if {} could be dictionaries it could damn well be lists too)
23:16:03 <ehird> the ellipsis semantics are a bit vague though
23:17:09 <ehird> you can replace the dots with underscores to make it ignored variable elements, too
23:17:09 -!- Corun has quit ("This computer has gone to sleep").
23:17:10 <ehird> Head[{X,___}] -> X;
23:17:10 <ehird> Tail[{_,XS}] -> XS;
23:18:29 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
23:19:04 -!- Judofyr has joined.
23:19:47 <ehird> http://esolangs.org/wiki/User:Tom_Duff
23:19:59 <ehird> ChrisCunningham, Tom Duff... esolangs is famous :)
23:23:59 <ehird> oerjan: inventor of the wiki
23:24:11 <ehird> you know -- http://c2.com/cgi/wiki, the first wiki
23:24:28 <oerjan> oh that was the first?
23:24:54 * oerjan got up a director or something on google
23:25:12 <ehird> chris cunningham is also a director who makes videos for people like Aphex Twin
23:25:18 <ehird> but is not the same as the wiki one :)
23:25:39 <ehird> I meant Ward Cunningham
23:26:16 <ehird> I swore I saw Ward CUnningham on the wiki as a user
23:26:47 <lament> AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
23:26:55 <ehird> lament: BBBBBBBBBBBBBBBBBBBBBBBBBB
23:27:01 <lament> looking at the tom duff page led me to http://esolangs.org/wiki/Image:Explor.gif
23:27:17 <ehird> lament: that's great
23:27:32 <lament> god that's painful to look at
23:27:38 <ehird> lament: squint your eyes when looking at it
23:27:42 <ehird> your head will move to the left
23:33:13 <ehird> but my screen is very good
23:35:38 * SimonRC praises Sun for the system of transistion from raw to parameterised types.
23:36:09 * SimonRC larts Sun for not having parameterised types in the first bloody place.
23:36:18 <ehird> SimonRC: Generics are crap.
23:36:35 <ehird> they're definately not parameterised types
23:36:59 <lament> why are you using java
23:37:26 <SimonRC> ehird: it is a type, it has parameters
23:37:38 <SimonRC> lament: because the code is already written in it
23:37:39 <ehird> lament: java can be used to write good code
23:37:48 <ehird> you just have to be good at packing characters to avoid hideous verbosity
23:38:02 <ehird> lament: but as a language it isn't nice at all i agree
23:38:18 <SimonRC> I'd have thought that me talking about adding parameters to types would be a give-away that old Java code was involved.
23:38:23 <lament> why would you avoid IDEs?
23:38:39 <ehird> lament: Java IDEs generate huge monstrosities of code.
23:38:55 <SimonRC> how else am I going to maintain 120,000 lines of code containing repetitions that the language can't capture
23:39:16 <ehird> well, define macros for it. but the way IDEs handle it is crap
23:39:28 <SimonRC> c'mon, to break package cycles recently, I have to automatically extract about 40 interfaces
23:39:39 <ehird> they encourage verbose, high-calorie 'empty-code' by making it easy
23:39:39 <SimonRC> ehird: um, Java ... macros
23:39:44 <ehird> SimonRC: in your editor.
23:40:20 <SimonRC> so I shouldn't use the IDE because it makes it easy to generate lots of code...
23:40:23 <lament> ehird: sorry? IDEs don't have to generate any code
23:40:30 <lament> ehird: why would an ide generate code?
23:40:31 <SimonRC> ... but I should define editor macros to generate lots of code
23:40:37 <ehird> SimonRC: when you can get the same effect for less code
23:40:56 <lament> i use an IDE (VS) all the time at work and it doesn't generate any code for me
23:41:06 <SimonRC> anyway, I was mostly joking
23:41:48 <SimonRC> there are several dimensions of functionality that we will probably never need again
23:41:51 -!- oerjan has quit ("Good night").
23:42:28 <lament> anything which makes programming easier is good.
23:42:32 <SimonRC> wildhalcyon: better than C++
23:42:53 <lament> SimonRC: that's like saying, the spanish inquisition is better than the nazis.
23:43:18 <SimonRC> wildhalcyon: ok, what advantage does C++ have?
23:43:48 <ehird> wildhalcyon: Java is a below-mediocre language. Not an 'evil' one.
23:44:27 <SimonRC> Java is what happens when take early-90s C++ and drag it half-way to Lisp
23:45:00 <wildhalcyon> Here's the deal. Java and C++ are the two worst non-esolang languages I can think of. We're quibbling over the bottom of the heap.
23:45:07 <SimonRC> stuff like GC, more type safety, exceptions with actual stack traces, etc
23:45:23 <SimonRC> early Pascal sucks far more
23:45:41 <SimonRC> operations couldn't be generic in array length
23:46:22 <wildhalcyon> I've been reading too much smalltalk propaganda and have become disallusioned with type safety. GC is a nice java feature though.
23:46:36 <RodgerTheGreat> wildhalcyon: Ruby is scads worse than Java could possibly be construed as being
23:46:46 <lament> RodgerTheGreat: ?????????????????????????????
23:47:10 <SimonRC> wildhalcyon: in this case, by "type safety", I meant strong typing
23:47:46 <SimonRC> oh yes, and Java has a guarantee that you fellow programmers will neither use pointers nor force their use upon you
23:48:19 <wildhalcyon> SimonRC, I interpreted "type safety" to mean static typing.
23:48:32 <lament> it's kinda silly to say java has no pointers when it has null pointer exceptions :)
23:48:57 <SimonRC> a mere terminological difference
23:49:04 <RodgerTheGreat> Ruby is a mishmash of disparate syntax styles. It is painful to look at, and the structure of the language is inconsistent.
23:49:09 <SimonRC> static typing really helped when we were doing a recent major refactoring...
23:49:24 <SimonRC> ... it found a whole class of bugs
23:49:27 <lament> RodgerTheGreat: but damn it lets you write code fast
23:50:01 <SimonRC> there were about 100 instances of that bug, and unit tests took a few minutes to run each time, and caught one instance of it each time
23:50:38 <RodgerTheGreat> Java has pointers, it just disallows most math on them and auto-dereferences them. You can think of it as always passing primitives by value and objects by reference, which, 95% (if not more) is what you actually want.
23:50:49 <SimonRC> static types not only appear in the code right before your eyes, but Eclipse will give you a red squiggly line if you screw up
23:51:03 <RodgerTheGreat> I see it as having nearly all the advantages of pointers without the hideous problems that haunt C++ programs
23:51:12 <lament> SimonRC: IDEs are wonderful, yeah
23:51:28 <SimonRC> but any compiler would have picked them up too
23:52:11 <ehird> Slereah: link to that self-containing set pic?
23:52:11 * lament wants sane IDE support for haskell
23:52:11 <RodgerTheGreat> I personally don't like IDEs because I find them extremely distracting and unhelpful, but their usefulness in the workplace is arguable. They're a *horrible* way to introduce someone to a language, though.
23:52:44 <RodgerTheGreat> In an educational environment, (mainly introductory classes) IDEs should. not. be. used.
23:52:48 <lament> i'm not sure what's distracting about IDEs
23:53:04 <RodgerTheGreat> when I think "IDE" I generally think of Eclipse or similar
23:53:08 <lament> RodgerTheGreat: do you use tab-completion on IRC?
23:53:59 <RodgerTheGreat> that doesn't have anything to do with coding. I'm not trying to learn the "#Esoteric API"
23:54:08 <wildhalcyon> SimonRC, how did your IDE catch the type errors if Java implements static typing?
23:54:13 <lament> RodgerTheGreat: well, do you?
23:54:24 <RodgerTheGreat> yes, and I stand by my statement that it rots your brain
23:54:29 <SimonRC> wildhalcyon: um, by looking at the static types
23:54:35 <lament> RodgerTheGreat: does tab-completion on IRC rot your brain?
23:54:51 <lament> wildhalcyon: type R and press Tab.
23:55:16 <lament> wildhalcyon: but beware - it will rot your brain.
23:55:21 <SimonRC> wildhalcyon: I was putting one kind of thing in a list and taking another out
23:55:25 <ehird> wildhalcyon: Hello! You must be new here.
23:55:42 <ehird> Please leave your brain at the door.
23:55:44 <wildhalcyon> ehird, I don't use IRC much. Pretty much for #esoteric
23:55:58 <SimonRC> when I upgraded from old-style lists (dynamic element type) to new-style lists (static element type) all those problems became obvious
23:56:00 -!- timotiis has quit ("leaving").
23:57:57 <SimonRC> We split one major concept in the program in two basically by chasing type errors
23:59:03 <wildhalcyon> SimonRC, I'm still not convinced that static typing fixed your bug. I'll give it to you though.