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.
On GitHub you can find a list of Haskell projects I work on, the notable of which are Neuron, Ema and Emanote.
Learning Haskell
If you wish to learn Haskell yourself, these pointers may be of help:
- Attitude
- Lose the limiting beliefs, if any. 2 Approach Haskell, with maximum locus of control, as if it is a new programming language that had been created this year (ie. sans any vague preconceptions introjected from naysayers and their enablers).
- Books
- 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).
- Self-learning courses
- Practice
- 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.