I’ve looked at Haskell and Elm. Considered Scala, Clojure, and F#. Checked out Racket, Lisp, and Scheme. And wondered about OCaml / ReasonML and Erlang. That’s quite a list, and that’s only scratching the surface.
In the end, my choice fell on Haskell because of available learning materials and its purity. It would force me to learn how to properly use functional programming concepts and not revert back to imperative style while facing difficulties.
- Introduction to Functional Programming - The main purpose of this course is to introduce a complete beginner to functional programming with help of Haskell. The language is not the main focus, the course is free and in video format, just what I’ve been looking for.
- Learn You a Haskell - A free book that was made with a beginner to functional programming in mind.
- Real World Haskell - Another free book that is good for beginners and intermediate Haskell enthusiasts.
- Programming in Haskell - I’ve heard good things about this book. Which is recommended by Erik Meijer, author of Introduction to Functional Programming course.
- Haskell Programming from first principles - This book was recommended a lot during my online search. A potential buy.
A Taste of Haskell
An quick example from Introduction to Functional Programming course to whet one’s appetite for what’s to come.
-- Quicksort f :: (Ord a) => [a] -> [a] f  =  f (x : xs) = ys ++ [x] ++ zs where ys = f [ a | a <- xs, a <= x ] zs = f [ a | a <- xs, a > x ]