Haskell is an advanced, purely functional programming language. I use Haskell because of its correctness guarantees that are difficult or impossible to achieve with mainstream programming languages 1 .
My first foray into Haskell was to write fullstack web applications using Reflex-FRP, after having used Elm prior to that. Nowadays I consider it my go-to language for general application development.
- Some prefer concise learning materials; if this is you, check out the two books by Graham Hutton and Richard Bird. For a thorough and practical book, Vitaly Bragilevsky’s Haskell in Depth or Will Kurt’s Get Programming with Haskell might be of interest. Books are only a starting point (see the next two sections).
- Learning anything takes practice, and this is particularly a key for a purely functional language like Haskell. See Haskell Mentors List for progressing in learning Haskell by way of contributing to open source projects that you already enjoy using.
Graham Hutton: “My experience is that people need to be ‘ready’ to learn what a monad is. If they are ready, it’s not too difficult, but still requires quite a bit of effort - as with anything worthwhile."