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.
If you wish to learn Haskell yourself, these pointers may be of help:
- 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.
- Talk / Share
- Join FP Slack to chat with other Haskellers (the Slack also has rooms for other FP languages). If you prefer a forum-like format, post to StackOverflow #haskell, which has been quite helpful in my experience. Read r/haskell for news. Be wary of other communities. 3 If you are interested in hacking on my open source projects, join this room on Matrix (it is a part of Awesome-list-of-Haskell-mentors). See Haskell Planetarium for recent Haskell news & discussions.
- Deepen your Haskell knowledge
- Haskell from the ground up (Work in progress)
Take the red pill with Nix
If you are feeling adventurous consider getting acquainted with Nix, which in turns allows you to leverage
haskell-template for bootstraping Haskell projects with full IDE support in VSCode. This works on Linux, macOS and Windows (via WSL) without having to install dependencies other than Nix itself. In my opinion, this is the best way to set up a Haskell development environment if you are willing to approach the learning curve of Nix with alacritty.
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."