< 1171930294 0 :sebbu2!unknown@unknown.invalid QUIT :"@+" < 1171932915 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i made bf with wav output :P < 1171933777 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1171933786 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how to parse something like this: < 1171933803 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : := i < 1171933811 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : := * < 1171934128 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, heh, nevermind < 1171934181 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that took a whole 8 lines < 1171934473 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/364284 < 1171934943 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... it's odd how different my mindset was before I started programming. < 1171934950 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :"complex" had a positive connotation. < 1171934952 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171935341 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oui < 1171935734 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1171936434 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1171937105 0 :kxspxr!unknown@unknown.invalid QUIT : < 1171938317 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec "x='floo'" in globals() < 1171938322 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171938323 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :floo < 1171938328 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1171939806 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt so why doesn't the normal mode of execution simply go to the "globals"? < 1171939816 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :~exec x = 2 < 1171939817 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :because < 1171939825 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171939825 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :floo < 1171939831 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :because that would make too much sense right? < 1171939836 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1171939844 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :because then the locals aren't available < 1171939851 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self, for example < 1171939853 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :what locals? < 1171939873 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :sure they are. < 1171939882 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :self isn't a local... in this context it's a global. < 1171939922 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, it's local < 1171939923 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :doesn't exec take two environment arguments, one for the globals and one for the locals? So you could have both. < 1171939930 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1171939931 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it does. < 1171939937 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :uh huh < 1171939944 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :self is a variable name... < 1171939955 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :but if you say something like "x=2", x goes in the locals < 1171939960 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it's neither local nor global... it's whatever you decide to put it in. < 1171939980 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self isn't in globals() < 1171939980 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :in my opinion it would be more convient to simply (and more intuitive) to treat everything as globals.. < 1171939998 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :~exec global x; x = 2 < 1171940018 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout.write(x) < 1171940018 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :2 < 1171940048 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but then you couldn't do tricks like ihope's extra bot inside the bot < 1171940062 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't make any sense to, nor is it even useful to, by default, bind variables to a temporary local scope. < 1171940064 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I think you could < 1171940091 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I could copy the globals dict, then add the need locals into i < 1171940092 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :t < 1171940117 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i suppose. < 1171940138 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :....just make self a global. < 1171940139 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stderr) < 1171940152 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but if self is global you cannot have two bots! < 1171940155 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: no < 1171940162 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :wrong... you cannot have two selfs. < 1171940167 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout) < 1171940168 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :{'command': 'pprint.pprint(locals(), sys.stdout)', < 1171940168 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : 'message': ':bsmntbombdood!n=gavin@about/copyleft/user/bsmntbombdood PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout)', < 1171940168 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : 'r': <_sre.SRE_Match object at 0xb7c55cc8>, < 1171940168 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : 'self': <__main__.IRCbot instance at 0xb7c4208c>} < 1171940177 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so that works < 1171940198 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... < 1171940200 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :uno momento < 1171940206 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :threading would mess up horribly then, wouldn't it? or do threads have different global directories? < 1171940210 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I really don't like using the global declaration. < 1171940231 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :no... they all seem to share a global directory... < 1171940239 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, globals is the same < 1171940257 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so it doesn't work, because multiple execs run in separate threads. < 1171940268 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what doesn't work? < 1171940270 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and they might need different selfs. < 1171940285 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't work to make self global. < 1171940294 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :of course not < 1171940306 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1171940307 0 :bsmnt_bot!unknown@unknown.invalid QUIT : < 1171940309 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171940316 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it would work... if each bot were a different process. < 1171940328 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: then NOTHING would work < 1171940340 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...? < 1171940348 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stderr) < 1171940378 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec x=1 < 1171940383 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171940392 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :damnit < 1171940400 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it still goes into a local scope < 1171940418 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self) < 1171940419 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :<__main__.IRCbot instance at 0xb7bd508c> < 1171940440 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it looks like it generates an empty local scope if you dont' give it one < 1171940469 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec x= 42; pprint.pprint(locals(), sys.stderr) < 1171940474 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm... can you pass it globals(), globals() ? < 1171940492 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i'll try < 1171940505 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :you could. < 1171940514 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1171940515 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :or just {}, globals() if you wanted.... < 1171940515 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1171940517 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171940526 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec x = 32 < 1171940528 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that would make global declarations act screwy though... < 1171940531 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171940538 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1171940541 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :weird < 1171940541 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so globals(), globals() would be best. < 1171940545 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :still gebrochen? < 1171940557 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :gebrochen? < 1171940563 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mock german < 1171940563 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, damn < 1171940570 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I was making a copy of the dictionary < 1171940575 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so nothing could be added < 1171940575 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...yeah < 1171940584 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I was about to say... that would work. < 1171940587 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :but without making a copy, I can't put self into it < 1171940602 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :sure you can. < 1171940611 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, you can't < 1171940623 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that will break < 1171940632 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1171940633 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1171940636 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171940636 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :globals().update({"self":self}) < 1171940636 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sheesh. Rewrite the bot in Erlang or something :) < 1171940640 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec x = 23 < 1171940654 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171940655 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :23 < 1171940658 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171940663 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(self) < 1171940664 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :huzzah < 1171940671 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :or or just globals["self"] = self < 1171940671 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : NameError: name 'self' is not defined < 1171940677 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, SevenInchBread < 1171940685 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :globals()["self"] = self < 1171940687 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :because globals are shared < 1171940692 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so? < 1171940700 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and self must not be shared. < 1171940709 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so you can't have more than one bot running < 1171940710 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :if you rewrite self each time... it effectively doesn't matter. < 1171940716 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :threads < 1171940728 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :execs can run simultaneously < 1171940738 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :all the execs running use the last exec executed's self < 1171940741 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and will, if some are long-running computations < 1171940753 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so just fork a new process like a sane person. < 1171940774 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :What, sane persons, in #esoteric? Perish the thought. < 1171940795 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :with forks, none of the cool tricks are possible < 1171940815 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... you want to preserve the locals. < 1171940825 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... give each bot a local dictionary? < 1171940841 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and then... all the bots share a glolbal dictionary? < 1171940847 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1171940860 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it seems kind of obvious now that I think about it... < 1171940867 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i thought that was the way it was working already < 1171940876 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :a global declaration in this case means "all bots can share" < 1171940878 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :nope < 1171940878 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :nope... < 1171940883 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :one sec < 1171940890 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :locals are basically just discarded after a thread is executed. < 1171940931 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~quit < 1171940932 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Client Quit < 1171940935 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171940938 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec x=12 < 1171940952 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stderr) < 1171940959 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yay! < 1171940963 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171940963 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(x) < 1171940963 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :12 < 1171940964 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :12 < 1171940974 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout < 1171940976 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec pprint.pprint(locals(), sys.stdout) < 1171940979 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :{'x': 12, 'self': <__main__.IRCbot instance at 0xb7c0008c>} < 1171940983 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :eh, wait, are you making the local directory persistent? < 1171940987 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171940988 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :weird stuff < 1171941004 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :each bot has it's own locals dictionary < 1171941017 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :makes sense... really. < 1171941057 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :the threads might run over each other still < 1171941069 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :makes managing scopes between bots far less of a pain in the long run. < 1171941091 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :might delay updates to the dictionary untill finished executing < 1171941123 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm... yeah... that might be a good idea. < 1171941130 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :except not < 1171941143 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :still conflicts < 1171941146 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so two processes on the same thread don't like... murder each other. < 1171941184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what is wrong with the old idea that execs that wanted persistence add attributes to self? < 1171941188 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :basically... python's scoping makes inter-process memory weird. < 1171941200 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :but it works great for normal stuff. < 1171941206 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i dunno < 1171941256 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well.. the problem with that is that functions defined on self don't have the closure of their local scope. < 1171941276 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :which is an unexpected behavior in Python < 1171941279 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec foo = lambda : self < 1171941287 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(foo) < 1171941287 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric : at 0xb7c01684> < 1171941291 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(foo() < 1171941302 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :gAH I HATE THE INSERT KEY < 1171941304 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(foo()) < 1171941317 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : NameError: global name 'self' is not defined < 1171941320 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :bargle < 1171941327 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :like that. < 1171941331 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i thought the expected behavior in Python is that scope hardly makes sense ;) < 1171941344 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :closures are broken < 1171941357 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :eh... scope makes sense in Python... to me anyways... but that's because I've been using it... a lot. < 1171941369 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i don't understand scope in python < 1171941400 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :everything is local unless stated otherwise. < 1171941407 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :mm hmmm < 1171941436 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :and a closure is just an encapsulation of the globals() at the time of definition. < 1171941475 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so... any idea of what's causing self to be undefined? I'm thinking it might be something with the way you have it set up... can I see the source? < 1171941550 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood.mooo.com/chroot_ircbot.py < 1171941638 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :argh < 1171941645 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I think it would be cool if python.exe could take URLs as pathnames. < 1171941662 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so it would interpret a program off of a URL. < 1171941701 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :this needs a script to start i < 1171941702 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :t < 1171942054 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there, mime types are better < 1171942187 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION suddenly has a realization: mime types cannot possibly handle sound data. < 1171942642 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: this configuration is equivalent to adding attributes to self < 1171942654 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :just now it's implicit < 1171942729 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but what if an exec needs private local variables? < 1171942752 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it can't < 1171942764 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it could previously < 1171942766 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :...that's kind of a weird choice. < 1171942797 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :now you're just moving the namespace to self.__dict__... when you could easily just keep a special self.localnamespace dictionary. < 1171942810 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1171942814 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's what i'm doing < 1171942825 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :self.locals < 1171942828 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Python's scoping is very good for handling three scopes (a thread scope, a bot scope, and an all-bot scope) < 1171942835 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you have the source < 1171942845 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh? < 1171942846 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :er... isn't < 1171942848 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :very < 1171942851 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :good < 1171942857 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, yeah < 1171942884 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Python basically just recognizes two scopes... I kind of wish it could use a list of scopes. < 1171942897 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :localest scope all the way to globalest :) < 1171942911 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's how i did it in my mini lisp interpreter < 1171943046 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :SevenInchBread: you do realize you're completely wrong, right? < 1171943072 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :>.> ...that sounded really arrogant. :) < 1171943305 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :What am I wrong aboutZ < 1171943320 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :>>> def foo(x): < 1171943320 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... def bar(y): < 1171943320 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... def baz(): < 1171943320 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... print x,y < 1171943320 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... return baz < 1171943322 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... return bar < 1171943325 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :... < 1171943356 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :>>> foo(1)(2)() < 1171943356 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :1 2 < 1171943361 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Right. < 1171943384 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :that's a closure... either way... a Python variable still only have two scopes it can be found in. < 1171943392 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i see a bunch of scopes here. < 1171943409 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :x can be found in the scope of foo, the scope of bar and the scope of baz, and those are all different scopes. < 1171943411 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :yeah... but only two are used to look up a variable. < 1171943477 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :to look up x from baz, we check baz, then bar, then foo. < 1171943500 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :no... we check the functions closure... which is one namespace. < 1171943515 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't "slide upwards"... although that's the effect given. < 1171943592 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1171943833 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well no.. < 1171943840 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I take that back... functions have -three- namespaces. < 1171943859 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :still, that's not a list. :/ < 1171944049 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :#raw names < 1171944060 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~raw names < 1171944062 0 :bsmnt_bot!unknown@unknown.invalid QUIT :SendQ exceeded < 1171944066 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1171944082 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171944101 0 :bsmntbombdood!unknown@unknown.invalid NICK :xor < 1171945561 0 :calamari!n=calamari@ip72-200-73-175.tc.ph.cox.net JOIN :#esoteric < 1171945955 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :xor: Do you know that the xor operation can be defined on ordinal numbers? ;) < 1171945963 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1171945974 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if there's a way to find xors non-bitwisely < 1171946008 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Xor is "nimber" addition, and nimbers can be identified with ordinals. < 1171946021 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :nooooooo! < 1171946051 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :I know i^j = (j & i) - (j | i) < 1171946054 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Alas, it also boils down to ordinals having base 2 representations. < 1171946089 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Any base too... the omega base was the one previously mentioned as "Cantor normal form" < 1171946132 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :You mean i^j = (j | i) - (j & i) < 1171946175 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :And that works because the bits in the second part are all set in the first, so - requires no borrow and becomes bitwise. < 1171946318 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Do you know Nim? < 1171946357 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Basically if you have three heaps, of size x, y and z, then the first player loses iff x == y ^ z. < 1171946389 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Which is equivalent to x ^ y ^ z == 0 < 1171946433 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It may not be practical, but there is no mention of bits in it :) < 1171946488 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(Assuming both players play perfectly, as usual in mathematical game theory.) < 1171946538 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :And relax, ordinals are not mentioned either unless your heaps are infinite. < 1171946554 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :i don't get it < 1171946573 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :each turn you add one to a heap? < 1171946604 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :No, each turn the player takes as many iterms as he wishes from one heap. < 1171946608 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*items < 1171946611 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171946736 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It turns out there is a large class of games that can all be reduced to Nim and assigned nimbers to their positions. < 1171946762 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :chess? :) < 1171946844 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Not chess, at least not easily. The games should have the property that there are no fundamental differences between the players, each position can in principle occur for each, with the same allowed moves. < 1171946889 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :In addition, all games must end. < 1171946920 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(Well-foundedness, through which the ordinals creep in if you have infinitely many positions) < 1171946995 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The nimber of a position is easily defined recursively: It is the smallest natural number (from 0) that cannot be the nimber of the position after the player has moved. < 1171947015 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*natural = ordinal, if games are infinite. < 1171947064 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and one final property, the first player who cannot make a move loses. < 1171947074 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :And there are two players. < 1171947120 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :For Nim, the nimber of a single heap is its number of items, naturally. < 1171947147 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :For several heaps you can prove that it is the xor of the heap sizes. < 1171947220 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The first player loses iff the nimber is 0. < 1171947350 0 :goban!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1171947367 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171948403 0 :digital_me!unknown@unknown.invalid QUIT :"Lost terminal" < 1171949359 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1171952456 0 :Sgeo!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952456 0 :meatmanek!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952456 0 :sp3tt!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952457 0 :ShadowHntr!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952458 0 :cmeme!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952458 0 :puzzlet!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952459 0 :bsmnt_bot!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952459 0 :SevenInchBread!unknown@unknown.invalid QUIT :zelazny.freenode.net irc.freenode.net < 1171952489 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1171952489 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1171952489 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1171952489 0 :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1171952489 0 :puzzlet!n=puzzlet@122.46.198.22 JOIN :#esoteric < 1171952489 0 :meatmanek!n=meatmane@cpe-65-29-79-179.indy.res.rr.com JOIN :#esoteric < 1171952489 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171952489 0 :cmeme!n=cmeme@boa.b9.com JOIN :#esoteric < 1171952583 0 :nooga!unknown@unknown.invalid QUIT :Remote closed the connection < 1171952588 0 :nooga!i=nooga@xdsl-6552.lubin.dialog.net.pl JOIN :#esoteric < 1171954650 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1171954708 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1171955125 0 :GreaseMonkey!n=notapoly@219-89-241-53.adsl.xtra.co.nz JOIN :#esoteric < 1171955177 0 :GreaseMonkey!unknown@unknown.invalid QUIT :Client Quit < 1171955201 0 :GreaseMonkey!n=notapoly@219-89-241-53.adsl.xtra.co.nz JOIN :#esoteric < 1171958399 0 :clog!unknown@unknown.invalid QUIT :ended < 1171958400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1171959621 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :about that: http://fukung.net/v/720/school.gif < 1171959625 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ruby kills u all < 1171959639 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :500.times {print "yadda yadda"} < 1171959870 0 :oklobot!n=oklobot@194.251.102.88 JOIN :#esoteric < 1171959892 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :!exec 500["yadda yadda"PrntNlDrp1SubDbl] < 1171959895 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171959896 0 :oklobot!unknown@unknown.invalid PRIVMSG #esoteric :yadda yadda < 1171959900 0 :oklobot!unknown@unknown.invalid PRIVMSG #esoteric :yadda yadda < 1171959903 0 :oklobot!unknown@unknown.invalid PRIVMSG #esoteric :yadda yadda < 1171959907 0 :oklobot!unknown@unknown.invalid PRIVMSG #esoteric :yadda yadda < 1171959910 0 :oklobot!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171959912 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah yeah < 1171960101 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but in ruby it's more elegant :> < 1171960150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :YOU are more elegant. < 1171960150 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!*",211yadda yadda,3500 < 1171960153 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171960163 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :!sadol !*",211yadda yadda,3500 < 1171960165 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :BDSM: Invalid argument types for '*': string, integer (index: 1, row: 1, col: 2) < 1171960170 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1171960174 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :old interpreter ;p < 1171960181 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171960205 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"gnight" < 1171960221 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i added that to oklobot quite late to < 1171960222 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*oo < 1171960247 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's still not turing complete :P < 1171960272 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nooga i have a lot shorter quicksort than the page < 1171960279 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :sow me < 1171960281 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :show* < 1171960298 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll search... no idea where it is < 1171960381 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay... was in a folder named posakdif < 1171960513 0 :Sgeo!unknown@unknown.invalid QUIT :Remote closed the connection < 1171960578 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://www.pastebin.ca/364621 < 1171960625 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i had a lot shoter one than that... put i did some very strange things < 1171960631 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and it failed from time to time < 1171960635 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :cool < 1171960657 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but you must admit that reversed quine is genious < 1171960663 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :something like using then same operator many times... < 1171960666 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't remember < 1171960668 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171960684 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :(7:C",228!R!C!"7822,"R:!R!"9822,"C:7(:R",228(7:C",2289"!R!:R",2287"!C!RR!C!"7822,"R:!R!"9822,"C:7( < 1171960691 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :the beauty < 1171960704 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah it's pretty cool :D < 1171960728 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :7( in the end... eof can be there? < 1171960747 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :it's within a string < 1171960809 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hard to say, i can't read that anymore < 1171960815 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171960825 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :need to make indents < 1171960825 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :':' is? < 1171960842 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :where? < 1171960843 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1171960853 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what's : < 1171960855 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i forgot < 1171960859 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :in that quine, to see the structure < 1171960865 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::ab --> a=b < 1171960890 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haven't played with sadol after you were here last < 1171960902 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :ow < 1171960934 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :! < 1171960935 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171960937 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171960938 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :! does? < 1171960941 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171960945 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :well.. bbl, classes start in 10 mins < 1171960956 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :! first < 1171960959 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171960969 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :! prints < 1171960971 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171960977 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :though so < 1171960978 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :have fun < 1171960983 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :rtfm ;p < 1171961000 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/SADOL here's the cheat sheet < 1171961370 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1171961379 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just came up with trecursion :) < 1171961423 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's neat, gotta come up with a lang around it < 1171964593 0 :oklofok!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171964594 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171965440 0 :oklodok!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171965442 0 :oklodok!unknown@unknown.invalid PRIVMSG #esoteric :olp. < 1171965459 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :pop. < 1171965463 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1171965472 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :%out oklodok < 1171965476 0 :oklodok!unknown@unknown.invalid PART #esoteric :? < 1171967037 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171967497 0 :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1171967827 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171967877 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171968014 0 :UpTheDownstair!unknown@unknown.invalid NICK :nazgjunk < 1171968690 0 :nazgjunk!unknown@unknown.invalid QUIT :"Bi-la Kaifa" < 1171969697 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1171970192 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was impressed with Keymaker's Underload interpreter in Brainfuck < 1171970216 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so I wrote a Brainfuck (minus input) to Underload compiler: http://pastebin.ca/364737 < 1171970478 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help daemon < 1171970481 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Use: daemon Function: start a daemon process. < 1171970508 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon ul bf http://www.bf-hacks.org/hacks/uload.b < 1171970521 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ul (Hello, world!)S < 1171970538 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171970541 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ais523: ps < 1171970618 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help bf < 1171970619 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :To use an interpreter: Note: can be the actual program, an http:// URL, or a file:// URL which refers to my pseudofilesystem. < 1171970666 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon ul bf http://www.bf-hacks.org/hacks/uload.b < 1171970670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171970674 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: ps < 1171970678 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :" can be the actual program" means you can write the binary there i assume? < 1171970695 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :You can write the source code straight in, like this: < 1171970697 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1171970702 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not the interpreter < 1171970704 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf +++++++++++++++++++++++++++++++++++.+.+.+.+. < 1171970706 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :#$%&' < 1171970707 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171970715 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171970727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but for some reason, daemoning the Underload compiler doesn't seem to take < 1171970728 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i reada quickly, though program meant the interpreter < 1171970731 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*read < 1171970736 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1171970738 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon < 1171970740 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1171970782 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon ul bf8 http://www.bf-hacks.org/hacks/uload.b < 1171970786 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171970790 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :4 ais523: ps < 1171970869 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dup bf >+[>,]<[<]>[>.]<[<]>[>.] < 1171970873 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171970876 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :5 ais523: ps < 1171970884 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dup Hello, world! < 1171970906 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :That's strange, there's no output but there isn't an error message either. < 1171970915 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!this makes no sense and should cause an error message < 1171970918 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171970927 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon dup < 1171970930 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 4 killed. < 1171970995 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dup bf >++++++++++++++++++++++++++++++++[>,----------]<[<]>[++++++++++.>]<[<]>[>.] < 1171971005 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dup Hello, world! < 1171971008 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :*Hello, world!Hello, world! < 1171971042 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :The problem seems to be that EgoBot is interpreting newline as newline (10), not EOF < 1171971063 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon ul < 1171971066 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1171971068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION slaps EgoBot < 1171971070 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon ul < 1171971084 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171971086 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: ps < 1171971100 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :There are still two broken daemons lying around, it seems < 1171971109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon ul < 1171971118 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help eof < 1171971120 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Use: eof Function: send EOF to a process < 1171971127 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :That looks promising < 1171971142 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf http://www.bf-hacks.org/hacks/uload.b < 1171971151 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171971154 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: bf < 1171971156 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :4 ais523: ps < 1171971168 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!i 3 (Hello, world!)S < 1171971171 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!eof 3 < 1171971174 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1171971213 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 1 < 1171971214 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 1 killed. < 1171971216 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 2 < 1171971218 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 2 killed. < 1171971220 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171971222 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ais523: ps < 1171971265 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help usertrig < 1171971268 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Use: usertrig Function: manage user triggers. may be add, del, list or show. < 1171971297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf-textgen +[] < 1171971300 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171971306 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf-txtgen +[] < 1171971310 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1171971320 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf_txtgen +[] < 1171971350 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :45 +++++++++[>+++++>++++++++++>><<<<-]>--.>+.++. [473] < 1171971381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure that >><< bit can be shortened < 1171971470 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1171971654 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf http://www.bf-hacks.org/hacks/uload.b < 1171971715 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!i 1 (:aSS):aSS < 1171971717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!eof 1 < 1171971720 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :(:aSS):aSS < 1171971729 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Underload is a good language for writing quines in < 1171971790 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :StringIO's eof check in python? < 1171971928 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't figure out the context of your last comment < 1171972936 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171972946 0 :oklopol!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171974990 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've asked this before < 1171974991 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but < 1171975022 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i reach a var of the parent functions in a subfunction < 1171975030 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in python < 1171975067 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :def oso: < 1171975068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : a="" < 1171975068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : def b: < 1171975068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : a="adsf" < 1171975068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : b() < 1171975068 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : print a < 1171975132 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm... globals might be the answer, can a global be global in a function? < 1171975147 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :def oso: < 1171975148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : a="" < 1171975148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : def b: < 1171975148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : global a < 1171975148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : a="adsf" < 1171975148 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : b() < 1171975150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : print a < 1171975404 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i feel leetish when i write an interpreter and then close python without saving :) < 1171975422 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"lol i can rewrite this in 5 min" < 1171976072 0 :helios24!i=xyzzy@item.n1.helzilla.de JOIN :#esoteric < 1171976086 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :python 2.5 won't work... something about a refused connection... < 1171976089 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::\ < 1171976090 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1171976266 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is there True?true_stuph:false_stuph in python? < 1171976274 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :cond?true_stuph:false_stuph in python? < 1171976319 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :python 2.5 works fine until i click ok on these all-ways-on-to error messages < 1171976331 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :after which it quits < 1171976343 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*always-on-top < 1171976345 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1171976361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(true?"True":"False") < 1171976377 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :seems as though Python doesn't have a ?: operator < 1171976392 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout("The previous line would have worked if I had a ?: operator") < 1171976392 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :The previous line would have worked if I had a ?: operator < 1171976497 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :True < 1171976509 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(True?"True":"False") < 1171976528 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(("True" if True else "False")) < 1171976553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout((if True then "True" else "False")) < 1171976599 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout((["True" for i in [True] if i]+["False"])[0]) < 1171976600 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :True < 1171976607 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout((["True" for i in [False] if i]+["False"])[0]) < 1171976607 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :False < 1171976618 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :handy, i must say -____- < 1171976875 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :def cond_to_for(cond,true,false): < 1171976876 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : ([true for i in [cond] if i]+[false])[0] < 1171976877 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmph < 1171976883 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't know how to use exec it seems < 1171977394 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://www.pastebin.ca/364857 < 1171977406 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have some serious mental problems :< < 1171977414 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :exec... wtf, this is metaproggin < 1171977464 0 :helios24!unknown@unknown.invalid QUIT :"Leaving" < 1171978757 0 :jix!n=jix@L614a.l.strato-dslnet.de JOIN :#esoteric < 1171978760 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(23)+(23,6424)+(23534,653) -> (23,23,6424,23534,653) <<<<<< how is that done? < 1171978763 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in python < 1171978775 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :+ is not right < 1171979398 0 :helios24!i=xyzzy@item.n1.helzilla.de JOIN :#esoteric < 1171979651 0 :helios24!unknown@unknown.invalid QUIT :Client Quit < 1171979683 0 :ais523!unknown@unknown.invalid QUIT :"/quit" < 1171979773 0 :helios24!i=xyzzy@item.n1.helzilla.de JOIN :#esoteric < 1171979777 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :y00 < 1171979781 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :sup? < 1171980213 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is there something like StringIO in haskell? < 1171980220 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it would be a cheat of course < 1171980229 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but i suppose you have one anyway < 1171980247 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :python's StringIO, the one bsmntbombdood used < 1171981082 0 :helios24!unknown@unknown.invalid QUIT :Remote closed the connection < 1171981343 0 :tgwizard!n=tgwizard@c-a73ee155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1171981371 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :huh < 1171981440 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :well < 1171981477 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :http://strlen.com/aardappel/index.html this might be interesting < 1171981508 0 :helios24!i=xyzzy@item.n1.helzilla.de JOIN :#esoteric < 1171981561 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, wouter's a pro < 1171981588 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :yeah, but false is not as good as sadol :d < 1171981713 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::X < 1171981748 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :sorry to say but it is :\ < 1171981748 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, i like it more < 1171981755 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :YEAH! < 1171981778 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :what really lacks in sadol is classic higher order functions < 1171981830 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :sadol is completely functional but not in the normal wa < 1171981834 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :way < 1171981961 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :when i designed it i didn't even know what is lambda ;d < 1171982066 0 :oklofok!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171982072 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171982209 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :;p < 1171982605 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1171982628 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :once i had an idea to write simple lisp interpreter in SADOL < 1171982635 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :;d < 1171982731 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :we all snap from time to tim < 1171982733 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*time < 1171982798 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1171982804 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but it's possible < 1171982814 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :and even not so hard < 1171982839 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :but it requires enormous amoun of time I don't have < 1171982938 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :true < 1171983505 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :g2g < 1171983506 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :bbl < 1171984226 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171984266 0 :oklopol!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171985990 0 :goban!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171987091 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171987700 0 :goban!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171987723 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171987743 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171987753 0 :oklopol!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171988286 0 :goban!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171988303 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171988743 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :My compiler lecturer is a bastard. < 1171988776 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Basically our assignment is: "This is a 1.24M-instruction machine code program. Make it faster." < 1171988996 0 :goban!unknown@unknown.invalid QUIT :Operation timed out < 1171989059 0 :crathman!n=chatzill@69.15.198.171 JOIN :#esoteric < 1171989113 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1171989275 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: He's really just a programmer using a class of students to cheat for his company :P < 1171989305 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC that sounds fun imo < 1171989332 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That sounds like quite possibly the least fun thing imaginable. < 1171989372 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :"Tedius" would be a better word. < 1171989422 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Plus an o in there :P < 1171989445 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, if you do it manually < 1171989447 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wouldn't < 1171989460 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i assume it's a metaprogramming task < 1171989945 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Ah, I forgot to mention... < 1171989951 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :It is for a VM < 1171989956 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :A 2200-year-old VM < 1171989966 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :http://www.boundvariable.org/um-spec.txt < 1171989977 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: indeed it is < 1171989996 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :After all, he has just taught us about optimisation. < 1171990054 0 :oklofok!n=villsalo@194.251.102.88 JOIN :#esoteric < 1171990055 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171990278 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1171990283 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :then i'd find it fun < 1171990288 0 :oklofok!unknown@unknown.invalid PRIVMSG #esoteric :maybe i'm sick somehow < 1171990291 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1171990325 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :my project in the uni is to create a jave class that can randomize a poker hand and check for straight and flush... < 1171990328 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*java < 1171990403 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :basically a 20 minute job max, but it required a plan that has to be checked before implementation... plus a 5 page documentation < 1171990409 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*requires < 1171990424 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :actually, the example documentation is 15 pages < 1171990505 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :The assignment is supposed to be about 10h work. < 1171990583 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :maybe, would take longer for me, prolly < 1171990657 0 :SevenInchBread!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1171990919 0 :FabioNET!i=500@217.201.30.210 JOIN :#esoteric < 1171990955 0 :FabioNET!unknown@unknown.invalid QUIT :Remote closed the connection < 1171991031 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171991308 0 :FabioNET!i=500@217.201.104.192 JOIN :#esoteric < 1171993430 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171993610 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171993687 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes. (Bizarre coursework: http://www.dur.ac.uk/s.r.clarkstone/ASAM%20Compilers%20coursework.eml ) < 1171993790 0 :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1171993873 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171994058 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171994257 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171994477 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171994759 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171996176 0 :sebbu!n=sebbu@ADijon-152-1-10-157.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1171996314 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :dur < 1171996737 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1171996974 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'll have to complain again about a lack of context, after reading the previous two lines and today's logs < 1171997272 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bf http://www.bf-hacks.org/hacks/uload.b < 1171997301 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!i 1 (:*)(:::::::*******)^(*)~^S < 1171997303 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!eof 1 < 1171997305 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :**************************************************************************************************************************************************************************************************************************************************************** < 1171997426 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :. < 1171997432 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :? < 1171997594 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1171997752 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was getting EgoBot to run Underload < 1171997771 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't know what underload is ^^ < 1171997783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://esolangs.org/wiki/Underload < 1171997818 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't daemon Keymaker's interpreter, though, because it expects EOF at the end of the program rather than newline < 1171997838 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Aww :( < 1171997856 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It could be modified ... but BF is sort of write-only coding ^^ < 1171997898 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :It shouldn't be too hard; the start of the program looks like a EOF-seeking routine to read the whole program, which could be modified independently < 1171997929 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Anyway, I was sufficiently impressed with the Underload interpreter in BF that I wrote a BF (minus input) to Underload compiler: http://pastebin.ca/364737 < 1171997950 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171998219 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon ul bf http://pastebin.ca/raw/365170 < 1171998229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ul (Hello, world!)S < 1171998232 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1171998239 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Whoot < 1171998240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1171998240 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171998244 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ais523: ps < 1171998248 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1171998252 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 GregorR: ps < 1171998261 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, so it closes after receiving one line ;) < 1171998265 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :The modified version ends after it runs one program, though < 1171998271 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Crossed messages... < 1171998318 0 :ais523!unknown@unknown.invalid QUIT :"I have to go home" < 1171998580 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1171999369 0 :oklopol!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1171999513 0 :oklofok!n=villsalo@194.251.102.88 JOIN :#esoteric < 1172000570 0 :sp3tt!unknown@unknown.invalid QUIT :Read error: 131 (Connection reset by peer) < 1172001362 0 :sp3tt!n=sp3tt@80-162.cust.umeaenergi.com JOIN :#esoteric < 1172001612 0 :oklofok!unknown@unknown.invalid NICK :oklopol < 1172001884 0 :voodooattack!n=voodooat@217.54.5.55 JOIN :#esoteric < 1172003293 0 :crathman!unknown@unknown.invalid QUIT :"Chatzilla 0.9.77 [Firefox 2.0.0.1/2006120418]" < 1172006563 0 :wooby!n=alan@cpe-66-67-60-51.rochester.res.rr.com JOIN :#esoteric < 1172007569 0 :jix!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1172011671 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1172011906 0 :goban!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1172011919 0 :goban!n=whyso@ip68-229-102-1.hr.hr.cox.net JOIN :#esoteric < 1172013159 0 :nazgjunk!unknown@unknown.invalid NICK :na[zZz]gjunk < 1172013330 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :exercise: write a turing-machine evaluator in the lambda calculus. < 1172013350 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :evil exercise: write a lambda-calculus evaluator for the turing machine < 1172013357 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1172013360 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes for a bit < 1172013389 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1172013402 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just wrote a ski calculus interpreter < 1172013541 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :unparse(simp(parse("```S`KKIx"))) ==> "`Kx" < 1172013755 0 :tgwizard!unknown@unknown.invalid QUIT :Remote closed the connection < 1172013765 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :unparse(simp(parse("```S``SI`KS`KKx"))) ==> "``xSK" < 1172013880 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1172013918 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has nothing clever to say < 1172013919 0 :SevenInchBread!n=CakeProp@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1172013937 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION leaves feeling embarrassed --> < 1172013954 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmmm... interesting. < 1172013963 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :Anyone heard of the term "rope" as a datatype? < 1172013982 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :I just read about it. < 1172013986 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :<-- < 1172013990 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :url < 1172014038 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :It's basically a binary tree of arrays of characters (a tree of strings). < 1172014078 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :omg! --------------> < 1172014101 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :so to concatenate ropes you just make a new node, with the two ropes being the branches. < 1172014159 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :? < 1172014346 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :IT apparently makes concatenation operations faster... at the expense of a few extra chunks of memory lying around. < 1172014616 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how to make it reduce things like S(KK)I automatically < 1172014650 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :(using extensionality) < 1172014671 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :hmm... well... < 1172014716 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :let's see... I don't know if ropes would actually make anything faster. It lightens the burden of the concatenation operation... but in doing so it makes it less straightforeward to traverse. < 1172014738 0 :xor!unknown@unknown.invalid PRIVMSG #esoteric :concantenation of strings is only O(n) < 1172014827 0 :SevenInchBread!unknown@unknown.invalid PRIVMSG #esoteric :well... that adds up when you insert values onto strings continuously. < 1172014902 0 :FabioNET!unknown@unknown.invalid QUIT :Client Quit < 1172015268 0 :wooby!unknown@unknown.invalid QUIT :