< 1141862996 0 :lindi-!unknown@unknown.invalid QUIT :Remote closed the connection < 1141863332 0 :GregorR_!i=id@tor/session/x-421d10dd679c8698 JOIN :#esoteric < 1141864358 0 :lindi-!n=lindi@kulho150.adsl.netsonic.fi JOIN :#esoteric < 1141865100 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :So I have AltGr AND dead keys? < 1141865109 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I only need one! < 1141865140 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...or the other! < 1141866605 0 :GregorR__!unknown@unknown.invalid QUIT :SendQ exceeded < 1141866645 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :My technique for learning Haskell was a sort of Esme Wetherwax technique... < 1141866661 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I read every Haskel tutorial I could find for info. < 1141866691 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Then I started hacking. < 1141866705 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Using the ghc library docs page. < 1141866759 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :The trick with monads is to read tutorials, look at the types, try to write something, look at the types, keep trying to push the concepts into your head so they all stay in at once, look at the types, etc... < 1141866791 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :When learning monads, you go through 3 stages. < 1141866836 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :1. "Dang, monads are complex." 2. "Oh, I get it now!" < 1141866863 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :First everything is very simple. A monad is a type of kind * -> * which implements the >>= and return functions with the right properties... < 1141866942 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Next, everything is very complicated, trying to fit [], Maybe, State Int, IO, etc all into the same mental category, trying to work out which operations can be performeda and which can't. < 1141866960 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Finally, everything is very simple. A monad is a type of kind * -> * which implements the >>= and return functions with the right properties. < 1141866975 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Um. < 1141866982 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :But you understand it. < 1141867007 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :StateT rocks! < 1141867023 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :A monad is a magic container for values such that you can put a value into the container, you can stick a function through the container to act on its contained values, and you can turn a container of containers into a container. < 1141867025 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :StateT :: * -> (* -> *) -> * < 1141867032 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :kinda < 1141867044 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :but it's also a way of sequentialising actions. < 1141867070 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I've never thought of it as anything but a container. < 1141867070 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Monads were added to Haskell for the express purpose of creating the IO monad. < 1141867082 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, I must disappear now. < 1141867097 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION disppears < 1141867104 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :...Close enough. < 1141867105 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :before that, there was some godawful Lazy-K-like thing called a dialogue. < 1141868139 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What was the dialogue things? < 1141868143 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :s/things/thing/ < 1141868158 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Like in Lazy-K (the esolang). < 1141868173 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :something about [String]->[String] < 1141868184 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Aha. < 1141868197 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :An awful system, compared to monadic IO. < 1141868200 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yep. < 1141868238 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Actually, in ghc there is a RealWorld type, like that in, erm, Clean. < 1141868276 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :It is related to the ST monad, and unsafeIOtoST, or whatever it's called. < 1141868312 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :data RealWorld -- < 1141868316 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Not very helpful. < 1141868663 0 :calamari!n=Kid@cb03.cs.arizona.edu JOIN :#esoteric < 1141870231 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out < 1141871026 0 :ihope!unknown@unknown.invalid QUIT :"Chatzilla 0.9.69.1 [Firefox 1.5.0.1/2006011112]" < 1141873100 0 :calamari!unknown@unknown.invalid QUIT :"Leaving" < 1141881803 0 :Sgeo!unknown@unknown.invalid QUIT : < 1141883204 0 :Arrogant!i=Scott@74.orlando-09rh15-16rt.fl.dial-access.att.net JOIN :#esoteric < 1141884843 0 :Arrogant!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141884845 0 :lament_!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141884911 0 :Arrogant!i=Scott@74.orlando-09rh15-16rt.fl.dial-access.att.net JOIN :#esoteric < 1141884911 0 :lament_!n=lament@S010600110999ad06.vc.shawcable.net JOIN :#esoteric < 1141887428 0 :Arrogant!unknown@unknown.invalid QUIT :"Leaving" < 1141891199 0 :clog!unknown@unknown.invalid QUIT :ended < 1141891200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1141898676 0 :nooga!i=nooga@ip-50.net-41.rev.inter-c.pl JOIN :#esoteric < 1141898683 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1141902423 0 :kipple!n=kipple@250.80-202-100.nextgentel.com JOIN :#esoteric < 1141902701 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hi kipple < 1141903152 0 :kipple!unknown@unknown.invalid PRIVMSG #esoteric :hello < 1141903210 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric ::D<-< 0000 < 1141903224 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :valid SADOL code ;p < 1141907639 0 :jix!i=jix@L61dc.l.strato-dslnet.de JOIN :#esoteric < 1141907884 0 :nooga!unknown@unknown.invalid PRIVMSG #esoteric :hi jix < 1141908020 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :moin nooga < 1141910098 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has to go to a lecture. < 1141914332 0 :jix!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1141914347 0 :jix!i=jix@L61dc.l.strato-dslnet.de JOIN :#esoteric < 1141914863 0 :jix!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1141917009 0 :nooga!unknown@unknown.invalid QUIT : < 1141917858 0 :CXI!i=Sanity@dialup-146.89.221.203.acc50-kent-syd.comindico.com.au JOIN :#esoteric < 1141918857 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :hi people < 1141922563 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1141927982 0 :twobitsprite!unknown@unknown.invalid PART #esoteric :? < 1141928581 0 :jix!i=jix@L61dc.l.strato-dslnet.de JOIN :#esoteric < 1141930386 0 :fizzie!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141930444 0 :fizzie!i=fis@sesefras.tky.hut.fi JOIN :#esoteric < 1141930460 0 :fizzie!unknown@unknown.invalid QUIT :Remote closed the connection < 1141930554 0 :fizzie!i=fis@sesefras.tky.hut.fi JOIN :#esoteric < 1141930806 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :What are møøse? < 1141931180 0 :fizzie!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141931191 0 :fizzie!i=fis@sesefras.tky.hut.fi JOIN :#esoteric < 1141931584 0 :GregorR__!n=gregor@tor/session/x-87c17f079a0f1531 JOIN :#esoteric < 1141932303 0 :GregorR__!unknown@unknown.invalid QUIT :Remote closed the connection < 1141932314 0 :GregorR__!n=gregor@tor/session/x-9afe21387b2592ae JOIN :#esoteric < 1141932373 0 :GregorR__!unknown@unknown.invalid QUIT :Remote closed the connection < 1141932422 0 :GregorR__!n=gregor@tor/session/x-2145b5c1c230a401 JOIN :#esoteric < 1141933381 0 :fuse!n=mpersano@medusa.insite.com.br JOIN :#esoteric < 1141933386 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1141933389 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Ello. < 1141933408 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :what's going on? < 1141934134 0 :GregorR__!unknown@unknown.invalid QUIT :Remote closed the connection < 1141934350 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :GregorR's popping in and out. < 1141934363 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :All three of him. < 1141934402 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :did you already program in some imperative language before learning haskell? < 1141934422 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Sort of. < 1141934438 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :how was the transition? < 1141934462 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, once you learn functional programming in general, Haskell's a piece of cake. < 1141934476 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :As long as you have a good tutorial, that is... < 1141934498 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :ok. i think i mentioned i'm currently trying to learn scheme. the problem is, i don't yet see myself using it in a non-toy project. < 1141934516 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :and i heard many times how it's supposed to make you more productive etc etc. < 1141934522 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Well, choose a project. < 1141934538 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :If Scheme's good for it, stay with it. Otherwise, find some other language. < 1141934560 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :and i think i'm at a point where i grok the basic idea. < 1141934587 0 :fuse!unknown@unknown.invalid PRIVMSG #esoteric :ah well. i shall persevere. < 1141936705 0 :GregorR!unknown@unknown.invalid QUIT :SendQ exceeded < 1141936730 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :SendQ exceeded? Oh noes! < 1141937015 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1141937369 0 :sekhmet!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141937369 0 :sp3tt!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141937371 0 :fuse!unknown@unknown.invalid QUIT :"ircII EPIC4-2.0 -- Are we there yet?" < 1141937427 0 :sp3tt_!n=sp3tt@80.244.80.162 JOIN :#esoteric < 1141937479 0 :sekhmet!n=pez@ppp-70-226-129-202.dsl.mdsnwi.ameritech.net JOIN :#esoteric < 1141937479 0 :sp3tt!n=sp3tt@80.244.80.162 JOIN :#esoteric < 1141937530 0 :sekhmet!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141937530 0 :sp3tt!unknown@unknown.invalid QUIT :niven.freenode.net irc.freenode.net < 1141937652 0 :sp3tt!n=sp3tt@80.244.80.162 JOIN :#esoteric < 1141937670 0 :sp3tt!unknown@unknown.invalid QUIT :Success < 1141937893 0 :sekhmet!n=pez@ppp-70-226-129-202.dsl.mdsnwi.ameritech.net JOIN :#esoteric < 1141938645 0 :jix!unknown@unknown.invalid PART #esoteric :? < 1141943922 0 :ihope!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1141944386 0 :ihope!n=ihope@c-67-172-99-160.hsd1.mi.comcast.net JOIN :#esoteric < 1141945462 0 :kipple!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1141945666 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Non-kipple drives out kipple? < 1141947192 0 :pgimeno!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1141948162 0 :pgimeno!n=pgimeno@124.Red-80-59-211.staticIP.rima-tde.net JOIN :#esoteric < 1141948254 0 :CXI!unknown@unknown.invalid QUIT :Connection timed out