
What does a programmer need to know to be proficient in "basic Haskell"? For my money, basic programming skills are those that are required to write programs for simple tasks in the common idioms of the language. This means the practitioner should be able to read input from the terminal or files, select/combine/reformat data, and output a result. At this point, efficiency isn't really the point; only getting to a correct answer without writing anything really weird matters. In LYAH, I'd put the boundary at the end of chapter 9, which covers the IO monad. At that point the reader has studied functions, lists, tuples, types, recursion, higher order functions, four major modules, and algebraic data types. Actually, some of the later topics in chapter 8 (functors, kinds, recursive data structures) seem more like intermediate material. Thoughts? -- Johan Larson -- Toronto, Canada