By way of introduction: I'm CEO of a small software company in Southern Germany, which also offers training in functional programming and software architecture. I am the founder of the DeinProgramm educational initiative (alas, in German): http://www.deinprogramm.de/ This is closely aligned with PLT's Program by Design / How to Design Program, and comes with its own textbook. The pedagogy of these projects is based on the idea of *design recipes* - explicit instructions for building programs starting with a systematic data analysis. DrRacket also ships with DeinProgramm-specific teaching languages. My experience has been that Program by Design is a hugely successful intro to programming/algebra/FPfor a wide variety of learners. In particular, having programming languages tailored for beginners is crucial. DrRacket has a huge headway here, and most teachers are well-advised to make use of it instead of trying to devise their own pedagogy or go with their own favorite language. Consequently, I don't think Haskell, as-is, is an appropriate language for teaching beginners. However, as the design recipes are very much types-based, they also apply to Haskell, and Haskell is a great second language to go to from Program by Design. (When we do 3-day professional Haskell training, we do 2 days of Program by Design and one day of Haskell - we usually get to monads.) -- Regards, Mike