Most Haskell tutorials on the web use a style of teaching akin to language reference manuals. They show you the syntax of the language, a few language constructs, then tell you to create a few simple functions at the interactive prompt. The "hard stuff" of how to write a functioning, useful program is left to the end, or omitted entirely. This tutorial takes a different approach.
When I recently asked a roomful of developers, if there’s anyone who had learned a new language this year, only very few hands went up. A year ago today, that would have been me in the audience, keeping my hands down. … And it was like this, until Haskell ruined it for me!
Historically, I’ve struggled to find a concise, simple way to explain what it means to practice type-driven design. Too often, when someone asks me “How did you come up with this approach?” I find I can’t give them a satisfying answer. ...
A. de Buitléir, M. Daly, M. Russell, and D. Heffernan. Trends in Functional Programming: 15th International
Symposium, TFP 2014, Soesterberg, The Netherlands, May
26-28, 2014. Revised Selected Papers, volume 8843 of Lecture Notes in Computer Science, Springer International Publishing, (2015)
E. de Vries, and A. Löh. Proceedings of the 10th ACM SIGPLAN workshop on Generic programming - WGP '14, page 83--94. New York, NY, USA, ACM Press, (2014)
K. Stengel, F. Schmaus, and R. Kapitza. Proceedings of the 12th International Workshop on Adaptive and Reflective Middleware, New York, NY, USA, Association for Computing Machinery, (2013)
R. Hinze, N. Wu, and J. Gibbons. Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming, page 209--220. New York, NY, USA, ACM, (2013)