
On 12/21/05, John Hughes
----------------------------------------------------------------------
Message: 1 Date: Wed, 21 Dec 2005 10:48:08 +0000 From: Robin Green
Subject: Re: [Haskell-cafe] Re: Tutorial uploaded Beginners should start with non-monadic functions in order to later avoid IO in their functions whereever possible.
Whilst localising IO to a small part of the program is generally a good idea, beginners should not be scared off by the thought that IO in Haskell is so hard it has to be covered on page 94. This is not the case. It should be introduced on page 1.
If people want Haskell to be treated as a practical language, not just something for doing academic teaching and research with, it should be taught as a practical language - which means that things like IO and space/time usage come to the forefront.
Couldn't agree more. I show my students IO in the first lecture of their first programming course in the first term of their first year. A few lectures later I discuss it in more detail, and tell to think of an IO a as instructions on a piece of paper to produce an a. My students have no difficulty understanding the difference between being given 500 crowns (a value), and being given my ATM card and code with instructions how to work an ATM! Haskell IO is mystifed far too often in my opinion--it needn't be hard at all.
You should write a book, or at least a tutorial series! :-) The order in which you deal with Haskell subjects in your course is, imo, very close to ideal. It emphasizes Haskell as a real-world pracical langauge, rather then making it look like an academic toy langauge which can't be used for anything real-world. As I mentioned in an earlier message I have yet to come across a book or tutorial which does this "right". It should treats the language from a practical point of view, with IO, QuickCheck generators, data types, GUI's etc. right up front, rather than avoiding it until chapter 19 and later. /S -- Sebastian Sylvan +46(0)736-818655 UIN: 44640862