Guess what ... Tutorial uploaded! :)

Hi all, Recend thread "Tutorial upload" reminded me of my intentions to write haskell tutorial which I suppresend from the times when Hal Daume began to write YAHT. Unusually low temperature here (-22C) freed me a lot of time this weekend, and the result it here: http://www.haskell.org/hawiki/HitchhickersGuideToTheHaskell This is a work in progress, plus I'm trying it on C++/Java folk around me, so it's bound to be heavily corrected, but main direction could already be seen (I hope). If you want - jump on the wagon, and provide me with (constructive) criticism, edits on hawiki or anything else you see fit. -- Dmitry Astapov //ADEpt GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D

On 1/22/06, Dmitry Astapov
Recend thread "Tutorial upload" reminded me of my intentions to write haskell tutorial which I suppresend from the times when Hal Daume began to write YAHT. Unusually low temperature here (-22C) freed me a lot of time this weekend, and the result it here:
http://www.haskell.org/hawiki/HitchhickersGuideToTheHaskell
This is a work in progress, plus I'm trying it on C++/Java folk around me, so it's bound to be heavily corrected, but main direction could already be seen (I hope). If you want - jump on the wagon, and provide me with (constructive) criticism, edits on hawiki or anything else you see fit.
I like the approach - using real tools to perform sensible tasks. I'm not a real newbie any more (but hardly an expert!) so I can't really comment on whether the approach is OK for someone who's never tried Haskell before, but it looks good to me. As a specific example, I haven't used Parsec much, and the section on that is just right - enough details for me to see how I use it, but no more than that, so I'm encouraged to go and look at the manuals if I need any extra. Keep up the good work! (I won't wish any more -22C weather on you, but I hope you find time to keep going). Some other sample tasks might be a web service, and database access. Neither is trivial in Haskell, due to the need to search out the right libraries, but both are very common real-life jobs. Paul.

Dmitry Astapov wrote:
I like the approach too, but the section on IO actions, which I'm reading now, is not correct. It's not true that "a <- someAction" has the effect of associating a with someAction, with the actual work deferred until later. All of the IO associated with someAction happens at the program point where "a <- someAction" appears, whether or not it's needed later. getContents is a rare exception to this rule. It works by using unsafeInterleaveIO behind the scenes, which muddies Haskell's generally clean semantics and leads to odd impure behavior. I wish getContents were a good example of nonstrictness or laziness, but I don't think it is. -- Ben

Evening, Ben.
Ben Rudiak-Gould
BR> I like the approach too, but the section on IO actions, which I'm BR> reading now, is not correct. It's not true that "a <- someAction" BR> has the effect of associating a with someAction, with the actual BR> work deferred until later. Ahem.. I got a "little" carried away on the topic of getContents, apparently :( BR> All of the IO associated with someAction happens at the program BR> point where "a <- someAction" appears, whether or not it's needed BR> later. getContents is a rare exception to this rule. But of course. Now I'll have to think how to back out of the mess I created :) -- Dmitry Astapov //ADEpt GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D

Evening, Ben.
Ben Rudiak-Gould
BR> I like the approach too, but the section on IO actions, which I'm BR> reading now, is not correct. I significantly rewrote it. This one should be better. -- Dmitry Astapov //ADEpt GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D
participants (3)
-
Ben Rudiak-Gould
-
Dmitry Astapov
-
Paul Moore