< 1233707130 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1233707263 0 :FireFly!unknown@unknown.invalid QUIT :"Much later" < 1233707346 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :"bye" < 1233709352 0 :CakeProphet!n=seveninc@wikipedia/The-Prophet-Wizard-of-the-Crayon-Cake JOIN :#esoteric < 1233710049 0 :amca!n=amca@CPE-121-208-81-104.qld.bigpond.net.au JOIN :#esoteric < 1233713085 0 :Sgeo!n=Sgeo@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1233718029 0 :MizardX-!i=MizardX@92.254.128.248 JOIN :#esoteric < 1233718031 0 :MizardX!unknown@unknown.invalid QUIT :Nick collision from services. < 1233718033 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1233719282 0 :Slereah!n=Slereah@ANantes-259-1-32-114.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1233720114 0 :Slereah2!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233722690 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1233724610 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION groans at xkcd < 1233725449 0 :oerjan!unknown@unknown.invalid QUIT :"leaving" < 1233725877 0 :Asztal!unknown@unknown.invalid QUIT :Remote closed the connection < 1233725881 0 :Asztal!n=moo@chunkybacon.org JOIN :#esoteric < 1233728615 0 :bsmntbombdood_!unknown@unknown.invalid NICK :bsmntbombdood < 1233729122 0 :FireFly!n=FireFly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1233730382 0 :MigoMipo!n=MigoMipo@84-217-15-41.tn.glocalnet.net JOIN :#esoteric < 1233730841 0 :ski__!n=md9slj@remote3.student.chalmers.se JOIN :#esoteric < 1233732219 0 :MigoMipo!unknown@unknown.invalid QUIT :"QuitIRCServerException: MigoMipo disconnected from IRC Server" < 1233733450 0 :impomatic!n=John@nat67.mia.three.co.uk JOIN :#esoteric < 1233734228 0 :FireFly!unknown@unknown.invalid QUIT :"Later" < 1233734399 0 :clog!unknown@unknown.invalid QUIT :ended < 1233734400 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1233735378 0 :psygnisfive!n=psygnisf@c-71-57-164-119.hsd1.fl.comcast.net JOIN :#esoteric < 1233735409 0 :Judofyr!n=Judofyr@c809ABF51.dhcp.bluecom.no JOIN :#esoteric < 1233735684 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"Client Excited" < 1233736605 0 :Judofyr!unknown@unknown.invalid QUIT :Remote closed the connection < 1233738624 0 :jix!n=jix@dyndsl-095-033-091-076.ewe-ip-backbone.de JOIN :#esoteric < 1233742052 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :I've implemented an interpreter for Underload in Redcode, http://tr.im/eil7 < 1233743152 0 :ski__!unknown@unknown.invalid QUIT :Remote closed the connection < 1233743155 0 :ski__!n=md9slj@remote3.student.chalmers.se JOIN :#esoteric < 1233744188 0 :amca!unknown@unknown.invalid QUIT :"Farewell" < 1233746378 0 :MizardX!unknown@unknown.invalid QUIT :Nick collision from services. < 1233746380 0 :MizardX-!i=MizardX@92.254.128.248 JOIN :#esoteric < 1233746382 0 :MizardX-!unknown@unknown.invalid NICK :MizardX < 1233746547 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, what would be the default policy for an underload interpreter if the execution pointer encounters any letter that is not valid underload? < 1233746659 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^ul (Our bots tend to just complain, like this:)S@ < 1233746660 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :Our bots tend to just complain, like this: ...bad insn! < 1233746726 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1233746783 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :That underload-in-brainfuck interpreter mostly ignores invalid input, I think. < 1233746835 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, I can't make sense of the "^ul" at the beginning, the doc tells me that ^ removes the first element from the stack and executes it, but at the beginning, there are no elements at the stack? < 1233746856 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :It's just the bot-command to evaluate underload. < 1233746857 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^help < 1233746857 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric :^ ; ^def ; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool < 1233746866 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :ah, thats what I thought. < 1233746885 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :^ul ^ < 1233746885 0 :fungot!unknown@unknown.invalid PRIVMSG #esoteric : ...out of stack! < 1233746892 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1233746913 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :That language looks fun, I think ill write a perl interpreter for it. < 1233749156 0 :Slereah2!n=Slereah@ANantes-259-1-35-61.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1233749273 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :whoppix: fizzie: the program terminates when it reaches the invalid input < 1233749294 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :hm, no form of comments either? < 1233749314 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :And it expects the program to be valid. It will do a swap on an empty stack < 1233749345 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :(comment)! < 1233749420 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :I'm looking for another language to implement < 1233749430 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Maybe Aura < 1233749545 0 :aantn_!n=benji@bzq-79-182-73-236.red.bezeqint.net JOIN :#esoteric < 1233749551 0 :aantn_!unknown@unknown.invalid QUIT :Client Quit < 1233749815 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233749957 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233749968 0 :bsmntbombdood_!n=gavin@97-118-127-13.hlrn.qwest.net JOIN :#esoteric < 1233752480 0 :FireFly!n=FireFly@1-1-3-36a.tul.sth.bostream.se JOIN :#esoteric < 1233753853 0 :Mony!n=Harmony@AToulouse-258-1-42-212.w90-55.abo.wanadoo.fr JOIN :#esoteric < 1233753967 0 :Mony!unknown@unknown.invalid PRIVMSG #esoteric :plop < 1233754186 0 :alex89ru!n=kw@hbrn-5f71659c.pool.einsundeins.de JOIN :#esoteric < 1233755149 0 :Hiato!n=1@dsl-245-35-203.telkomadsl.co.za JOIN :#esoteric < 1233757999 0 :Hiato!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1233758082 0 :Hiato1!n=1@dsl-245-35-203.telkomadsl.co.za JOIN :#esoteric < 1233758856 0 :Hiato1!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1233758932 0 :Hiato!n=1@dsl-245-35-203.telkomadsl.co.za JOIN :#esoteric < 1233759127 0 :Hiato!unknown@unknown.invalid QUIT :Client Quit < 1233764111 0 :alex89ru!unknown@unknown.invalid QUIT :Remote closed the connection < 1233764466 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION embarks on Bloody Crazy Project < 1233764589 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1233764858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hi oerjan < 1233764865 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i've started a Bloody Crazy Projec. < 1233764865 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :t < 1233764871 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :BWAHAHAHAHAHA < 1233764874 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean, hi < 1233764923 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :is this a Bloody Crazy Project Language (BCPL)? < 1233764959 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :afk < 1233765105 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: nope < 1233765764 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Geback < 1233765827 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's an instance of an existing Bloody Crazy Project Idea, but with a twist. < 1233765866 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah, a TCP < 1233765871 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: wut < 1233765872 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1233765875 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Twisted Crazy Project < 1233765906 0 :whoppix!unknown@unknown.invalid PRIVMSG #esoteric :hooray for inventing new meanings to commonly known idioms! :) < 1233765956 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: no guesses, ey/ < 1233765957 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*? < 1233765976 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :certainly not < 1233766000 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION finds the idea of searching infinite spaces appalling < 1233766047 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the existing Bloody Crazy Project Idea: write an OS in Haskell. the Twist: don't write the hooks GHC runtime uses in C or asm, write as much as possible in Haskell. no C allowed, maybe a smidgen of asm for driver stuff that you really can't do outside of asm (e.g. in C you have to use inline asm :-P) < 1233766158 0 :Slereah!n=Slereah@ANantes-259-1-76-120.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1233766167 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :clearly an Impossible Project < 1233766184 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric :-> TCP/IP < 1233766196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :FireFly: i think that was his joke < 1233766196 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1233766197 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION swats FireFly -----### < 1233766206 0 :FireFly!unknown@unknown.invalid PRIVMSG #esoteric ::< < 1233766218 0 :Slereah2!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1233766226 0 :ktne!n=ktne@unaffiliated/ktne JOIN :#esoteric < 1233766229 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1233766241 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hi there < 1233766242 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :anyone here knows how static function closures are implemented? < 1233766263 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :a reference from an inner function to a local variable in the outer function < 1233766282 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :umm, how are they not? :-) < 1233766292 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i mean, what's the issue? < 1233766301 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :my question is how the function frame is allocated < 1233766313 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :because it seems to me that you can't allocate it on the stack < 1233766329 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :because on the stack it would be automatically destroyed when you return from the outer function < 1233766333 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed, you need a pointer in the inner function frame to the outer one < 1233766334 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1233766338 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :they have to go onto the heap < 1233766342 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and be garbage collected < 1233766345 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233766362 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless the variable is immutable, then you can just copy < 1233766366 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :so if the language is static, then you can determine whenever it should go on the stack or on the heap < 1233766377 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :and if the language is dynamic then it has to go on the heap always? < 1233766436 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :depends how dynamic it is? < 1233766444 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1233766446 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: < 1233766453 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can never make it go on the stack if it outlives its parent < 1233766460 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233766468 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :foo = lambda(x){ lambda(y){ return x += y } } < 1233766472 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :but sounds very inefficient < 1233766477 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you really don't have a choice there, it goes on the heap < 1233766480 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: not very < 1233766481 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if it's so dynamic you cannot prove anything about function environments, then i guess so... < 1233766483 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it is a penalty, yes < 1233766492 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: wouldn't the heap explode if you do recursion? < 1233766500 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :garbage collection, yo < 1233766509 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :yes but that would be quite heavy < 1233766512 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your goal of c speed is misguided, however. Yes, all these nice features come at a cost. Programmer time > cpu time < 1233766513 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :quite a lot of GC < 1233766518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :get an efficient GC < 1233766524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like, as I mentioned last time, cheney on the mta < 1233766534 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :cheney on the mta? < 1233766542 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233766569 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :cheney on the mta solves both tail recursion, gc and continuations efficiently < 1233766587 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in that it piles up memory, then just jumps off a cliff semi-efficiently to clean it all out every now and then < 1233766590 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :is it fully described on the paper http://home.pipeline.com/~hbaker1/CheneyMTA.html ? < 1233766607 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yep, for a practical implementation see Chicken Scheme < 1233766612 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1233766614 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :@ http://www.call-with-current-continuation.org/ < 1233766619 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i hope the source is readable :) < 1233766625 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :np :) < 1233766627 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's written in scheme < 1233766631 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and compiles to C < 1233766635 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so, if you know scheme and C :-P < 1233766648 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :should be comprehensible regardless of scheme knowledge to a degree though < 1233766671 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :hmm, does it use any host scheme-specific functionality? < 1233766679 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :like the host continuation or so? < 1233766689 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :or it's implemented from scratch on top of the host scheme? < 1233766702 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Uh, I think it depends on Chicken... < 1233766710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I mean < 1233766711 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the compiler < 1233766717 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1233766717 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the C code only depends on the chicken runtime library, written in C < 1233766726 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e., the compiled code has no scheme left < 1233766729 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :that is ok then < 1233766732 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just the compiled code, and the C/Asm chicken runtime lib < 1233766752 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but the compiler itself, is written in Scheme + Chicken's extensions < 1233766759 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :iirc < 1233766761 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :while since I used it < 1233766807 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ok, thanks for the help :) < 1233766821 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :np :) < 1233766903 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: i'm working on a "very high level language does non-regular-desktop-app stuff project too" < 1233766908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[which I just told oerjan about] < 1233766923 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i think I can get by without making my own implementation, though < 1233768148 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :but if you are not the one to implement it, then who will? :) < 1233768194 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: I'm using an existing implementation < 1233768198 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and bending it to my evil bidding. < 1233768203 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233768206 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(trying to write an OS) < 1233768211 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :what are you using as base implementation? < 1233768236 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Well, I think you're tired of hearing from last time... but I'm attempting to write it in Haskell :-) With the minimum amount of asm stubs for e.g. the grub header... < 1233768252 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1233768260 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :There are Haskell OSes already, but they use quite a bit of C/asm to bootstrap the implementation; I think I can do it within the constraints of Haskell without stepping too far out < 1233768272 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i never heard of an OS written in haskell before :) < 1233768293 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's three: House, Kinetic and hOp < 1233768296 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :none of which are very active < 1233768303 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://programatica.cs.pdx.edu/House/ < 1233768309 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://intoverflow.wordpress.com/kinetic/ < 1233768326 0 :impomatic!unknown@unknown.invalid QUIT :"infinite loops @ http://tr.im/33xe :-)" < 1233768328 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[no link to hop, it's dead, House is a descendent of it] < 1233768367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: each do a different "evil" - < 1233768378 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hOp and House fork the GHC compiler to not depend on a runtime system < 1233768387 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :kinetic links in stub functions that the GHC runtime system uses written in C & asm < 1233768397 0 :alex89ru!n=kw@hbrn-5f71659c.pool.einsundeins.de JOIN :#esoteric < 1233768399 0 :alex89ru!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1233768404 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm going to try to: link in stub functions that the GHC rts uses ... written in _haskell_, as much as possible, with asm bits < 1233768410 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :alex89ru: hi, I'm discussing my crazy project. < 1233768425 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :but why do that? < 1233768428 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :is there a reason? < 1233768434 0 :alex89ru!unknown@unknown.invalid PRIVMSG #esoteric :oO hi ehird < 1233768437 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :you want to avoid linking C? < 1233768459 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: sure -- to write an OS that has all the advantages of being written in haskell, without having to "fall back" on C < 1233768464 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e., having it as standalone as possible < 1233768471 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i see now < 1233768471 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :practical purpose, well, no :) < 1233768475 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1233768567 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the problem is, of course, that the functions have to depend only on the runtime system functions that don't cause a circular dependency. < 1233768581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and I have to get them assigned to the right symbols in the object code. < 1233768703 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :is that even possible? < 1233768716 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :probably not, has that ever stopped this channel? < 1233768726 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1233768733 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1233769053 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1233769066 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what's needed is inline asm in haskell. then, technically, it'd be 100% haskell ;-D < 1233769069 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*:-D < 1233769145 0 :Metcalf!n=John@nat65.mia.three.co.uk JOIN :#esoteric < 1233769232 0 :Metcalf!unknown@unknown.invalid QUIT :Client Quit < 1233769431 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wow? OS in haskell? < 1233769433 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1233769454 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, hm I suspect you would much more asm than you would need if the OS was in C < 1233769473 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the GHC runtime is heavy, yes < 1233769488 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the basic idea is that you write just enough of the functions it uses to make it work < 1233769499 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the extension to that idea is to write as much as possible of those in haskell itself < 1233769506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(that's the Really Hard part) < 1233769514 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: but the grub stuff is still the same < 1233769520 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you just call the main function as usual < 1233769530 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(as, of course, ghc compiles to binaries that you can actually run...) < 1233769639 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I mean, in C you could do something like *(memory_mapped_registers + 0x21) = 'a'; < 1233769642 0 :impomatic!n=John@nat65.mia.three.co.uk JOIN :#esoteric < 1233769649 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :somehow I doubt it would be as easy in haskell < 1233769664 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :probably would involve at least a monad, and some ASM < 1233769675 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: your program is in the IO monad, of course < 1233769679 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233769685 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what about libc function deps? < 1233769694 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :does compiled haskell program use stuff like malloc()? < 1233769697 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but yes, you would need some ASM to import via the FFI for memory access and things like ports < 1233769706 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yep. as I said: < 1233769706 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :17:44 the GHC runtime is heavy, yes < 1233769707 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :17:45 the basic idea is that you write just enough of the functions it uses to make it work < 1233769710 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233769710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :17:45 the extension to that idea is to write as much as possible of those in haskell itself < 1233769717 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's been done, but with them in C/asm < 1233769721 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so you implement malloc() for the kernel in C? < 1233769723 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the idea is basically to minimize that < 1233769734 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yeah < 1233769736 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well < 1233769745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :because basically malloc() would mean the whole memory mangement ends up in C then < 1233769747 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you MIGHT be able to do that in haskell, if you're very very carefully only to use strict, unboxed values < 1233769767 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ghc needs a -ffreestanding then ;P < 1233769777 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or -ffree-standing or whatever it is < 1233769783 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: i don't think it's possible to do haskell completely freestanding < 1233769791 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's too high level < 1233769805 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well you would have to restrict some features, like you do a C++ kernel < 1233769824 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: you'd be writing in a fiddly dialect of a painful subset of C < 1233769837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(with a nazi type checker) < 1233769928 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Nobody said it'd be easy :-) < 1233769946 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but a type-safe operating system is pretty awesome. < 1233769947 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :basically you use some options to tell g++ that you want free-standing (except there is no -ffree-standing for C++, so it is like -fno-builtins -fno-stdlib or something) and then some magical routines like __cxx_abstract________whatever___ < 1233769962 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :iirc, I read about it on osdev < 1233769972 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what about BitCC then? < 1233769987 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I prefer Haskell >:) < 1233770004 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yeah but then you are in this channel too < 1233770011 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :haskell is pretty esoteric < 1233770034 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, so I don't get this in 5 years when it finally runs ghc: Yo dawg, I heard you like Haskell so I put a GHC in yo GHC so you can typecheck while you typecheck < 1233770071 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :wha? < 1233770077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's a meme. < 1233770084 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :EMEME < 1233770085 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1233770095 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is a palindrome too < 1233770104 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :unlike EMEM < 1233770113 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thanks for that < 1233770128 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :thanks for what? < 1233770160 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Hmmm... there's probably more Haskell on reddit than any other language! < 1233770230 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: Indeed, it's quite popular over there. Was even more so in 2007 - early 2008 before the enterprisey folks arrived. < 1233770281 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, prediction: in a few years (maybe 5 or so) reddit will be no better than slashdot < 1233770297 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :what if the inner function makes a by-value reference to the variable in the other function? < 1233770308 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :/r/programming's quality of discourse is probably worse than slashdot's, AnMaster. < 1233770311 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Still beats digg. < 1233770312 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :other prediction: you will have gone to some other site, maybe writtit < 1233770327 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :would that be an acceptable compromise? that would not require heap allocation, just normal stack < 1233770332 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm going back to usenet. Kids, lawn, damn, get off thereof. < 1233770335 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: that kind of defeats the point. < 1233770340 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can't mutate < 1233770341 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(I always read reddit as "readit") < 1233770352 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's impure from a conceptual standpoint and not useful practically < 1233770357 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: that's where the name comes from. < 1233770361 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233770367 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's past-tense read, though < 1233770369 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thus the spelling < 1233770377 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah right < 1233770379 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :true < 1233770383 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: about about defining using a special keyword? < 1233770398 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i mean, defining all local variables to be allocated on stack < 1233770403 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: congratulations, you're a PHP developer now < 1233770406 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ktne: that's what i said earlier about immutable values. iirc ocaml uses that. < 1233770409 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :sorry < 1233770410 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i meant < 1233770411 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(that's what they did for their PHP6 closure implementation, it's rather awful) < 1233770416 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, by the way, wouldn't it be interesting to analyse how much of irc is in present, future and past tense, and make some shiny graph? < 1233770420 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: well yeah, the problem goes away with mutable values < 1233770422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: maybe. < 1233770425 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :say this channel, year by year < 1233770427 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i mean, mark local variables to be allocated on the heap < 1233770432 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :using a special keyword < 1233770433 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :since ML has no mutable variables, only heap references < 1233770434 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :as well as month by month < 1233770447 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :like "heap i = 0; function () { i=3};" < 1233770448 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to see if there is more past after holidays or such < 1233770450 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :that would be mutable < 1233770455 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1233770465 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :sounds hard to analyse to me < 1233770478 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :what is hard to analyse? < 1233770490 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :no idea how to do it, apart from some very extensive word list, and I suspect that is far from a good solution < 1233770495 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ktne, ehird, by the way, wouldn't it be interesting to analyse how much of irc is in present, future and past tense, and make some shiny graph? < 1233770498 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : say this channel, year by year < 1233770505 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ah < 1233770517 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: stemming, yo. < 1233770519 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: so what about my new proposal? < 1233770526 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :consider stuff like "red", that could be "I red that book yesterday" as well as "that book is red" < 1233770527 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: it's exactly what PHP did, and it's awful. < 1233770533 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, because that's "I read" < 1233770539 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, ah true < 1233770542 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: why it's awful? looks like a good compromise to me < 1233770543 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233770547 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: it's not :P < 1233770553 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: well, ok but why? < 1233770561 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it just isn't :D < 1233770568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that is illogical, it is past tense in "I walked on that road yesterday" < 1233770572 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ah, so just because it's verbose? < 1233770578 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: err, and? < 1233770584 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :or non-orthogonal? :) < 1233770593 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: it's verbose, it's hard to predict in advance, it exposes low-level details to the programmer, it's non-orthogonal, ... < 1233770600 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, isn't it a bit odd that it is present tense then? or am I mixing something up < 1233770605 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :well i can understand why you say that :-D < 1233770608 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ... < 1233770616 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :but i guess i'll go with this because i really need performance < 1233770625 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, look, I'm tired and have a headache... < 1233770683 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: :D < 1233770687 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: just implement it efficiently < 1233770689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :without that < 1233770700 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :also, you're really way to obsessed about performance :) < 1233770702 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :+ I hurt myself badly the day before yesterday, one leg is kind of bluish from the knee and 10 cm up, (which is why I'm so tired since it hurt so much I had problems sleeping) < 1233770712 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: is it possible to implement it as fast as C? < 1233770718 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :fell on the ice outside < 1233770725 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: well performance is one of the main reasons i implement my own language :) < 1233770733 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :No!! Nothing is! None of these advanced features can go that fast ktne! If you want C speed, you have to USE A LANGUAGE ON THE LEVEL OF C! < 1233770736 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i'm not satisfied with the performance of javascript :) < 1233770740 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, that reminds me, didn't you have a bit of snow or such in UK a few days ago? < 1233770746 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or did I misremember < 1233770749 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: a lil. < 1233770769 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, saw something in the paper about traffic chaos in London iirc? < 1233770778 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: yes but the performance loss for an orthogonal one is too big for me < 1233770778 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I live up north, so I wouldn't know :-) < 1233770781 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so I guess around half a meter of snow at least? < 1233770784 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: is it? < 1233770788 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :have you implemented it? < 1233770789 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tested it? < 1233770792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tried different strategies? < 1233770793 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :optimized? < 1233770799 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Maybe in London. Not here. < 1233770801 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :no, but i guess it's > 5% < 1233770806 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, anything less than, say, 30 cm would hardly cause traffic chaos < 1233770815 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: guesses are worthless in rational programming < 1233770815 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, don't read morning papers? < 1233770819 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: argh, you fell on the ice too? let's move to the mediterranean < 1233770819 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :i already lose a lot of performance in some other places, this is a place where i can easily get performance :) < 1233770822 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Not most of the time :-) < 1233770842 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :[sp] < 1233770843 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i agree, but also i don't feel like implementing the full stuff :) < 1233770856 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: about 2 inches of snow, I live half way up < 1233770858 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :your language's loss i guess < 1233770864 0 :KingOfKarlsruhe!n=nice@HSI-KBW-085-216-041-239.hsi.kabelbw.de JOIN :#esoteric < 1233770868 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric ::-( < 1233770872 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, sure. July same year: argh, it is 40 C outside in the sun, lets move to Scandinavia! < 1233770888 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, 2 inches in SI units? < 1233770907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :$ units "2 inch cm" < 1233770907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : Definition: 0.000508 m^2 < 1233770907 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : <-- fail? < 1233770918 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1233770920 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1233770923 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the arrow was correct < 1233770928 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION fixes the quotes < 1233770935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :5.08 cm < 1233770935 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1233770941 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, well that isn't very much < 1233770978 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bah :D < 1233770982 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, around 20 cm and I would understand the issus < 1233770984 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :issue* < 1233771022 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I find hot Swedish summer days horribly hot, so I'm quite sure I couldn't stand it (at? on?) in the Mediterranean < 1233771064 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't need much to bring the U.K. to a standstill :-) < 1233771087 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: if they don't have winter tyres, then it takes just about nothing < 1233771170 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :The news reports have been talking about the big freeze and arctic conditions. In reality it's just been a few cm of snow and -2C overnight < 1233771184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what we want is somewhere with _stable_ weather < 1233771236 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :-15C here. BRR < 1233771247 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh and in the day < 1233771302 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :British spring/summer weather is perfect for me :-) < 1233771330 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, oh right, and I guess there is no law in UK about that? In Sweden I think you must have it between November and March or something like that < 1233771350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(I don't have a car, so I haven't needed to remember the details) < 1233771363 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, -2C? Bah, that is warm < 1233771369 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :something like that in norway too < 1233771382 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I think last week it was like -17C in the middle of the day < 1233771394 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :today it was something like -10 or so iirc < 1233771411 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indoors < 1233771438 0 :BeholdMyGlory!n=arvid@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1233771456 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(no not really, but it feels like it, and yes, both fireplaces are in state == active atm) < 1233771475 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I was going to call Monty Python sketch on that last one < 1233771511 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hm you mean stable as in ~ 19-22 C all the year around, will maybe down to 18 C during night? < 1233771548 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :maybe a _little_ higher < 1233771572 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :possibly with a bit of rain in the early morning (5:00-6:00 or so) to clear the air of any dust before the day (and to keep the ecosystem at least slightly in balance) < 1233771580 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Hmmm... it's 25.4C indoors at the moment :-) < 1233771581 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Okay, I think I've read enough. Commence operation codename metal (and brace for epic failure, naturally.) < 1233771595 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, really? 19-23 C then I guess < 1233771604 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what is this operation? < 1233771618 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the haskell OS? < 1233771646 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: yeah. < 1233771698 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Okay, "foreign export ccall" is what I need to expose Haskell functions to other stuff. < 1233771720 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, anyway I suspect a possible way to do it would be creating some restricted subset, a freestanding subset that can be used for the MM subsystem, because MM seems like hardest _large_ part < 1233771729 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I mean, sure you need asm for stuff like port io and what not < 1233771737 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: That's called "Only use strict, unboxed types". < 1233771743 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :but the mm code would not be "small" < 1233771751 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, right < 1233771754 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Informally, "don't use any non-primitive types, and sprinkle #s and !s everywhere that doesn't cause a syntax error". < 1233771762 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ugly as all hell, no doubt. < 1233771764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::-) < 1233771771 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :something like asm("OUT 80h") is "small" < 1233771780 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, what does #s and !s do? < 1233771792 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :3# is an Int# < 1233771794 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :where Int# means < 1233771800 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"a primitive, unboxed (not on the heap) int" < 1233771803 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233771806 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :+# is Int# -> Int# -> Int# < 1233771811 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :are they often used in haskell? < 1233771812 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and compiles to a one-instruction assembly addition < 1233771823 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, not unless you're going for very high speed < 1233771827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and why can't it figure it out itself? < 1233771833 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it can, sometimes < 1233771837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but it doesn't < 1233771837 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah :) < 1233771839 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :for the g < 1233771839 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :c < 1233771841 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :gc < 1233771845 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1233771846 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: and it's needed to _ensure_ they are unboxed < 1233771854 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: !s are bang patterns < 1233771856 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oh yes not only mm, you need a full blown gc < 1233771860 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1233771860 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :specifically < 1233771863 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :\!x -> ... < 1233771866 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :means that whenever this is evaluated < 1233771870 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :x is strictly evalutaed < 1233771872 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e., no laziness < 1233771878 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i.e., no thunks (0-argument functions, used for laziness) < 1233771884 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :how does haskell handle the gc at compile? as a library included at link time? or more central in the code? < 1233771889 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric : oh yes not only mm, you need a full blown gc < 1233771893 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :The GHC runtime system includes the gc. < 1233771904 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I don't write that; I write the neccessary libc&etc to run the gc. < 1233771904 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well... < 1233771908 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1233771917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Another project has done this, but they didn't try and write the libc&etc mostly in Haskell. < 1233771922 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :something like newlib maybe? < 1233771931 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :didn't ais use that for gcc-bf < 1233771936 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's written in C. < 1233771943 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm writing it in Haskell + sprinkles of asm. < 1233771943 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well true < 1233771948 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Plus some C, if really really needed. < 1233772010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well. no offence meant, but writing a good memory management system is hard as it is, and doing it in some haskell + lot of asm instead of lot of C + some asm, well... < 1233772028 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wish you good luck! :) < 1233772028 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233772040 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(you will need it) < 1233772050 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no duh < 1233772058 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm probably going to steal a malloc < 1233772061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sheesh, stop being so condescending < 1233772077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's not like writing an OS with basic memory management is a huge herculean effort that nobody can accomplish < 1233772253 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, indeed, but I said good one < 1233772264 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Good one is rather irrelevant as an experiment starts out < 1233772275 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you can implement a simple slab allocator in hundreds of lines of code < 1233772281 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ktne: I know < 1233772283 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :ehird: and it's extremely efficient < 1233772284 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :tell that to AnMaster :-) < 1233772292 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :at least compared to other naive allocators < 1233772301 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :% ./a.out < 1233772301 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :zsh: bus error ./a.out < 1233772302 0 :ktne!unknown@unknown.invalid PRIVMSG #esoteric :well, it's not actually naive < 1233772304 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Doggammit. < 1233772310 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :memory management in kernel is rather more complex, stuff like TLB, virtual address space vs. physical memory, and so on < 1233772315 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :stuff userspace doesn't need to handle < 1233772316 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(Yes, that was a Haskell program segfaulting.) < 1233772328 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, wow, what did you do with it? < 1233772335 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :to make it segfault < 1233772341 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: Well, I'm using the FFI to export my own main function to C. < 1233772344 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That might have something to do with it :P < 1233772360 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1233772413 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, anyway will you use separate kernel/user spaces? < 1233772422 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :It's just going to be kernelspace first... < 1233772425 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233772428 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do you realise how long OS development takes? :P < 1233772430 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :protected mode kernel space only? < 1233772438 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Who cares: whatever's simplest. < 1233772452 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if I ever make an actual project out of this, there'll be way more ifne-grained control than kernel/user. < 1233772456 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :But, that's work. :D < 1233772459 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :and I do know how long it takes < 1233772498 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :reading ghc's asm output is, um, difficult < 1233772506 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :think think closure thunk _ghczmprim_GHCziTypes_Czh_static_info < 1233772513 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*thunk thunk < 1233772541 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, using something like bochs or qemu? iirc bochs has a good debugger built in, and with qemu you can attach gdb < 1233772550 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, nice mangling scheme < 1233772551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm not at that point yet. < 1233772558 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I'm just reading the asm output. < 1233772562 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Not in OS-land atm < 1233772568 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233772584 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I guess making this kind of work in user space first would be useful < 1233772602 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :void main(void) < 1233772602 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :{ < 1233772603 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :^ despite being technically forbidden, this is the closest type I can get the FFI to output, and gcc accepts it... < 1233772607 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :now to stop it segfaulting! < 1233772615 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um < 1233772628 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, does it segfault at return of main()? < 1233772632 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :dunno < 1233772633 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if yes I solved that issue once < 1233772640 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :_exit(0); < 1233772644 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :do not use exit() < 1233772647 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1233772648 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it works now < 1233772653 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: I don't have control over that code < 1233772656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233772659 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1233772662 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, yes you do! < 1233772665 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :in cat -v, ^@ is \0 right? < 1233772667 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, I don't < 1233772669 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the ffi generates that < 1233772678 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :cpp -Dexit=_exit outputfile.c < 1233772679 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1233772683 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's no exit(). < 1233772686 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233772688 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't know it's generating a main function. < 1233772691 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :replacing return would be harder < 1233772693 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's just exporting a haskell function as "main", blindly < 1233772725 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, idea: export it as real_main and write a main() stub, you won't have such a main() when going OS level anyway < 1233772740 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that's less fun :-) < 1233772745 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(but need some wrapper that match whatever grub expects, or whatever you use) < 1233772764 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah, I think I see the problem < 1233772770 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :that is probably saner for debugging... < 1233772774 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the generated main() just cuts in doing stuff, when the RTS isn't initialized yet < 1233772778 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Since we're talking about osdev, how do I get two processes to agree on a channel to communicate by? < 1233772793 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, that is very vague < 1233772835 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ACTION waits for a clarification of what impomatic meant. IPC? TCP? shared memory? < 1233772918 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :I can implement the IPC primatives easily. But how would program A and B that need to communicate with each other allocate a channel? < 1233772927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :make the kernel broker one to both? < 1233773020 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, well, you could implement some sort of named pipe facility for example to allow different user space processes to open the same named pipe < 1233773041 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: do something like: < 1233773046 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :this could be either a special file on a real file system like on *nix, or some sort of virtual namespace < 1233773054 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :process 31: broker_channel(32); < 1233773055 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :with attached buffers < 1233773058 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :process 32: broker_channel(31); < 1233773062 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and it syncs them both up? < 1233773100 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :or you could of course use shared memory, again possible named. < 1233773125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, interesting idea btw. How would the process read/write from the channel? < 1233773130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: additional functions? < 1233773138 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well I meant, what would they look like? < 1233773139 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :CHANNEL broker_channel(PID) < 1233773144 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :reading fds or? < 1233773145 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1233773148 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: whatever < 1233773151 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the question is about brokering < 1233773155 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well yes < 1233773192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :you could also (if you implement networking), open a connection on loopback < 1233773259 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Hmmm... < 1233773290 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, take a look at the posix apis for shared memory and such maybe? < 1233773350 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :since not implementing stdin/stdout sounds impractical you could possible connect stdio between processes < 1233773371 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :like | does in a (posix) shell (and also in dos iirc) < 1233773392 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :once you got to that level I mean < 1233773436 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, btw, that 31/32 in the example above, was that PIDs or? < 1233773448 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1233773465 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm ok < 1233773478 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Purely Invented Designators < 1233773483 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1233773540 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I would suggest Purely Independable Designators < 1233773565 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Okay, I'll google them < 1233773571 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1233773578 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :the thing oerjan said? < 1233773663 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :impomatic, what "them"? < 1233773745 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Posix apis < 1233773824 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well, just man shm_overview < 1233773829 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(on linux) < 1233773838 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :good introduction to shared memory < 1233773856 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :of course with shm you need mutexes or such < 1233773857 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Possibly Incomprehensible Devices < 1233773900 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, Possibly Integer Designators (iirc PIDs doesn't _have_ to be integers on POSIX, at least in older posix specs, not sure about newer ones) < 1233773917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :% ./test < 1233773917 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hello, world! < 1233773920 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WOOP WOOP WOOP WOOP < 1233773946 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so what is special about it? Not using libc malloc() or? < 1233773960 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Here's what's special about it: < 1233774003 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: http://pastie.org/private/ywv9mcpzwwqno8nctwo7dq < 1233774076 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1233774105 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, so you ended up with a C main() after all? < 1233774113 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: no, these are just experiments < 1233774124 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233774131 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :this one, specifically, was how easy it was to write haskell code that can be called from other stuff < 1233774138 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :with the answer being... very < 1233774162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :technically, I should be doing `hs_add_root(__stginit_Export);` after the hs_init, where __stginit_Export is defined...somewhere, but what the heck < 1233774163 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it works < 1233774174 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: also, that putCStr is a lot simpler than I thought < 1233774180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what you see there is pointer arithmetic being done with haskell < 1233774187 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(peek p) = (*p) < 1233774193 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(plusPtr p n) = (p+n) < 1233774263 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if you ask me, that's cool. < 1233774605 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: < 1233774605 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.org/private/7xnvw7j6cdwqdpz07wsdyg < 1233774612 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the dependencies of the complete linked test program I showed < 1233774614 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :haskell haskell haskell < 1233774619 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yeah - *gettimeofday*. < 1233774620 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I don't know either. < 1233774631 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe it's to produce erratic behaviour depending on the phase of the moon. < 1233774657 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1233774660 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :see how horrible and ugly haskell is? It even has pointer arithmetic. < 1233774680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: XD < 1233774694 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :wonder if you can disable bignums to stop it trying ot clal gmp < 1233774698 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric : yeah - *gettimeofday*. <-- can't you make ghc *output* C code? < 1233774709 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: it doesn't compile via C. < 1233774710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well, it can. < 1233774712 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but not by default < 1233774730 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :besides, what the fuck is the use of it? what can you do with the C that you can't do with the object code? < 1233774791 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Compile on $OBSCURE_PLATFORM_X < 1233774796 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird: do you know of a nice cross-platform way to get keyup/keydown events? < 1233774815 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :I want to write a program that lets you play the computer keyboard as if it were an accordion keyboard. < 1233774822 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: ghc is pretty widely-supporting < 1233774826 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: use SDL or OpenGL < 1233774827 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, I mean for figuring out what gettimeofday() is used for....... < 1233774827 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that sort of stuff < 1233774838 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: ah. it'll just be used by the RTS and therefore every program has to have it < 1233774845 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe seeding a PRNG or sth < 1233774867 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :well not the libc prng, no call to srand or srandom there < 1233774886 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :also the RTS? is it linked in as a static library? < 1233774889 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh, right, sdl does it < 1233774898 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :no idea why i didn't think of it < 1233774926 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :have you played with haskell sdl bindings? < 1233774942 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: 1. dunno 2. Dunno maybe < 1233774946 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: nope, I want to thoug < 1233774947 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :h < 1233774966 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i always thought of sdl as primarily a video thing < 1233774972 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i don't even need any sort of UI < 1233774978 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :That's because it is :P < 1233774997 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :prediction: 2010 headlines: First kernel using SDL internally released < 1233774998 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR: no < 1233775002 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's directmedia < 1233775003 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Most of the input plugins are pretty closely tied to an associated output plugin, so I imagine you'll find no joy. < 1233775037 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, not same api iirc? < 1233775048 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :AnMaster: SDL = Simple DirectMedia Layer < 1233775054 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Yes, that's what they all say, hence the preponderance of non-video SDL apps :P < 1233775055 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1233775071 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :nice, it seems SDL is exactly what i need < 1233775074 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, but "directmedia" made me think of the nightmare called Direct X < 1233775081 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Hahaha < 1233775081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I see. < 1233775090 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(by SDL i of course mean Graphics.UI.SDL) < 1233775099 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(See! It's under Graphics.UI) < 1233775389 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :I have a simple OS - bootloader, kernel with memory management, scheduling, etc written in asm < 1233775419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :neat < 1233775425 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but not as neat as... /me shuts up < 1233775854 0 :KingOfKarlsruhe!n=nice@HSI-KBW-085-216-041-239.hsi.kabelbw.de JOIN :#esoteric < 1233775982 0 :MizardX!unknown@unknown.invalid PRIVMSG #esoteric :Why is "indexable" not an english word? < 1233776049 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :blah, as usual installing stuff on windows is a pain < 1233776161 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :Graphics\UI\SDL\General.hsc:1:17: SDL.h: No such file or directory < 1233776163 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1233776251 0 :alex89ru!unknown@unknown.invalid PRIVMSG #esoteric :isnt there no sdl stuff in the include directory of your compiler? < 1233776260 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :of course there is < 1233776276 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i think the catch is i needed to specify it as C:\cygwin\blah < 1233776279 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :as opposed to just /blah < 1233776485 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :um, cygwin should take care of that < 1233776489 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :if you do it inside cygwin < 1233776530 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :right, but it doesn't < 1233776610 0 :impomatic!unknown@unknown.invalid QUIT :"cw for newbies http://tr.im/xep :-)" < 1233776923 0 :kar8nga!n=kar8nga@a-151.vc-graz.ac.at JOIN :#esoteric < 1233777216 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :jeez < 1233777220 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :cygwin is black magic < 1233777241 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so i changed from unix to windows path syntax, and it finds header files < 1233777249 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so i do the same thing for libraries, yet it still complains < 1233777257 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so i go into /usr/lib and all the libraries are there < 1233777270 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so i open Explorer and go into C:\cygwin\usr\lib and it's fucking empty < 1233777298 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i copied the libraries by hand into another directory and everything compiled < 1233777634 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, um < 1233777645 0 :ktne!unknown@unknown.invalid PART #esoteric :? < 1233777650 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, afaik cygwin basically mount --bind /lib /usr/lib < 1233777653 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :internally < 1233777656 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :so expected < 1233777663 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it does same for /bin and /usr/bin < 1233777681 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh :( < 1233777712 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :well it compiled, i just have no idea if it managed to install properly < 1233777719 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, but not sure why you would need to do think about that inside cygwin < 1233777735 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :are you using some non-cygwin app when building? < 1233777739 0 :Hiato!n=hiato@dsl-245-35-203.telkomadsl.co.za JOIN :#esoteric < 1233777744 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :right < 1233777746 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm using cabal < 1233777751 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :which is uhhhh a cygwin app < 1233777754 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :but < 1233777761 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it must be doing some magic of its own < 1233777767 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :when calling gcc < 1233777879 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1233777991 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1233778010 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :lament, what cabal? < 1233778012 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there is none < 1233778026 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hahahahaha you referenced a meme! < 1233778027 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So hilarious! < 1233778039 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Please put some thought before attempting humour. < 1233778057 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, yes I do. I try to make it as bad as possible. < 1233778073 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's a term for people who do that, it's called "irritating". < 1233778074 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't tell a slightly bad joke, it as to be a positively anti-joke < 1233778087 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, no, "irritating" is far below what I aim for < 1233778106 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Fun fact: aiming for people to hate you because you're annoying is not a noble goal. < 1233778118 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :sure it is. < 1233778135 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :alas, I do not aim for them specifically. < 1233778179 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :1) tell truly bad jokes. < 1233778184 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :2) take over the world < 1233778186 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :3) ???? < 1233778192 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :4) PROFIT! < 1233778249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hey, it's another irritating meme. < 1233778254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :How amusing. < 1233778319 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, All ur memes iz belongz to ur momma! < 1233778327 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :(yay! three in one) < 1233778330 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION eyes ignore button < 1233778353 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :ehird, sorry about the heart attack < 1233778354 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :;P < 1233778356 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :afk < 1233778736 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :"brb" < 1233779037 0 :Hiato!unknown@unknown.invalid QUIT :"Leaving." < 1233779144 0 :BeholdMyGlory!n=arvid@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1233779153 0 :Mony!unknown@unknown.invalid QUIT :"Quit" < 1233779403 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :blah, i'll never get this to work. < 1233779411 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :I hate libraries. < 1233779543 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: whuz wrong < 1233779549 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :if it's ghc linking, < 1233779551 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ghc --make Main < 1233779557 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :let the computer figure it out for you < 1233779577 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so i (thought i) installed sdl < 1233779582 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :and then i compiled and installed hSDL < 1233779588 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :and i'm trying to compile my example < 1233779594 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ghc --make Main < 1233779605 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :and i get this < 1233779647 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric : /Users/hercules/trunk/SDL-1.2/./src/main/win32/SDL_win32_main.c:246:0: undefined reference to `SDL_main < 1233779697 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :all this tells me is that somebody named hercules must have kept his SDL source tree on an OS X machine. < 1233779710 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: why didn't you install hSDL with cabal-install? < 1233779714 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i did! < 1233779721 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :okay. < 1233779723 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :try ghc --make Main < 1233779724 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::-P < 1233779728 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :this is not an hsdl error, this is an sdl error. < 1233779735 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1233779736 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i am using --make. < 1233779737 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :correct you are < 1233779745 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: reinstall SDL? < 1233779755 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :before you spend hours trying to debug it and find you just compiled it wrong < 1233779759 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i did just install it < 1233779794 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :hate :( < 1233779822 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: ok, maybe your program is bugg'd < 1233779845 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :no. < 1233779865 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(my program doesn't do anything) < 1233779873 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: is it just main = return ()? < 1233779894 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway, you installed SDL wrong, is my diagnosis. :-P < 1233779900 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1233779900 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :WAIT < 1233779901 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: < 1233779907 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you need an sdlMain function or sth in haskell < 1233779908 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I bet < 1233779911 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :yes. < 1233779912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :to have it link properly < 1233779915 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so... make one < 1233779938 0 :GreaseMonkey!n=gm@unaffiliated/greasemonkey JOIN :#esoteric < 1233779941 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1233779987 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh, i see. < 1233779988 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :no. < 1233780019 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: ok then, alternate possibility: < 1233780037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hSDL needs you to do something else, and that error is because you didn't < 1233780039 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :alos < 1233780045 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hSDL version incompatible with SDL version maybe? < 1233780051 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :see < 1233780056 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and finally, you installed SDL wrong < 1233780057 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so many possibilities for stuff to go wrong! < 1233780058 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's one of them < 1233780061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: 3. < 1233780063 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :that's why i hate libraries. < 1233780063 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :3 possibilities. < 1233780070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :determining which should not be very hard. < 1233780071 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird: each one possibly taking days to investigate. < 1233780079 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :incompatible versions should take minutes to find out < 1233780081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: just ask #haskell. < 1233780087 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :the author is probably there. < 1233780098 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :he is. < 1233780145 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :but i'm sure he uses unix and everything just works for him. < 1233780180 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :maybe people would help you more if you asked instead of wh inin... < 1233780183 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*whining < 1233780191 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i like whining more. < 1233780200 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then your program won't work. your loss only < 1233780207 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric ::( < 1233780223 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :is typing out your problem into a string of characters and hitting enter difficult for you? :-P < 1233780338 0 :sebbu2!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1233780522 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i think the error is because i'm a retard < 1233780529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: i see < 1233780532 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :what was wrong < 1233780567 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :error code id 10 t < 1233780591 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: did you fix it < 1233780596 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :no :P < 1233780602 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh just ask #haskell or I will < 1233780608 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1233780614 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :don't! < 1233780626 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :do it yourself then < 1233780629 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I give you 30 seconds < 1233780638 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :10 < 1233780643 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :20 < 1233780647 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure it's not a haskell probelm < 1233780649 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :problem < 1233780651 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :30 < 1233780680 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: there you go. < 1233780684 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION so kind < 1233780802 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: well, that worked splendidly. < 1233780822 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1233780837 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :did you see that wonderful sarcasm? < 1233780839 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it was sarcastic < 1233780981 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ohh that's what it was < 1233781009 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ACTION tries to compile SDL instead of using a binary < 1233781020 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: what went wrong < 1233781036 0 :alex89ru!unknown@unknown.invalid QUIT :Remote closed the connection < 1233781040 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :nothing yet, i'm still only running configure, but just you wait! < 1233781104 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :lament: but what was wrong with the binary < 1233781150 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i don't know < 1233781197 0 :BeholdMyGlory!n=arvid@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1233781480 0 :Judofyr!n=Judofyr@95.34.27.156.customer.cdi.no JOIN :#esoteric < 1233782044 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i think i have to reinstall ghc actually < 1233783849 0 :impomatic!n=John@nat65.mia.three.co.uk JOIN :#esoteric < 1233783890 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Has anyone got the spec for Hanoi Love? < 1233783927 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :The link on the wiki is broken, nothing in the web archive :-/ < 1233784028 0 :Slereah2!n=Slereah@ANantes-259-1-6-173.w92-135.abo.wanadoo.fr JOIN :#esoteric < 1233784594 0 :Slereah!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233784636 0 :sebbu!n=sebbu@ADijon-152-1-32-214.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1233785556 0 :jix!unknown@unknown.invalid QUIT :"..." < 1233785754 0 :comex!unknown@unknown.invalid QUIT :"Caught sigterm, terminating..." < 1233785768 0 :comex!n=comex@teklinks.org JOIN :#esoteric < 1233786142 0 :kar8nga!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233786608 0 :KingOfKarlsruhe!unknown@unknown.invalid PRIVMSG #esoteric :my snusp interpreter http://aetius.ae.funpic.de/snusp.py < 1233788595 0 :psygnisfive!unknown@unknown.invalid PRIVMSG #esoteric :hey goise < 1233789026 0 :impomatic!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1233789434 0 :Judofyr!unknown@unknown.invalid QUIT :Remote closed the connection < 1233789636 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"NetSurf is a web browser for RISC OS" < 1233789638 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :That's one large market < 1233789887 0 :MizardX!unknown@unknown.invalid PRIVMSG #esoteric :KingOfKarlsruhe: Three things to fix; 1. "|" and "=" does not carry any action. 2. You need to extend the lines so all are the same length. 3. The for-loop in __call__ that look for "$" needs a break-statement. < 1233789946 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1233790264 0 :BeholdMyGlory!n=arvid@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1233790310 0 :KingOfKarlsruhe!unknown@unknown.invalid PRIVMSG #esoteric :MizardX: ich have a new version http://aetius.ae.funpic.de/snusp_2.py < 1233790343 0 :KingOfKarlsruhe!unknown@unknown.invalid PRIVMSG #esoteric :MizardX: thank you for support, i have to go to bed now < 1233790579 0 :KingOfKarlsruhe!unknown@unknown.invalid PRIVMSG #esoteric :MizardX: the slash and backslash function was broken, now it works < 1233790584 0 :KingOfKarlsruhe!unknown@unknown.invalid PRIVMSG #esoteric :bye bye < 1233790589 0 :KingOfKarlsruhe!unknown@unknown.invalid QUIT :Remote closed the connection < 1233790635 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1233791574 0 :BeholdMyGlory!n=arvid@d83-183-183-70.cust.tele2.se JOIN :#esoteric < 1233791770 0 :BeholdMyGlory!unknown@unknown.invalid QUIT :Remote closed the connection < 1233791993 0 :Corun!n=Corun@94-193-40-216.zone7.bethere.co.uk JOIN :#esoteric