I strongly recommend that you learn Haskell.<p>I have some reasons to back up my endorsement of Haskell.<p>First and foremost, Haskell is the best language to learn if you want to learn about functional programming. Why? Because Haskell is the quintessential functional programming language. It is approaching 30 years of age and was originally developed back when functional programming was nowhere to be found in production settings. A bunch of academics who were all working on separate functional programming languages got together and said, “hey, how about we all work together and make the ultimate FP language rather than reinventing the wheel on our own?” And that’s exactly what they did. The result today is a very mature, feature rich and programmer-friendly language. If you really want to delve into the history of Haskell, check out this paper or watch the video based on it:<p><a href="https://www.microsoft.com/en-us/research/publication/a-history-of-haskell-being-lazy-with-class/?from=http%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Fsimonpj%2Fpapers%2Fhistory-of-haskell%2F" rel="nofollow">https://www.microsoft.com/en-us/research/publication/a-histo...</a><p>The second reason to learn Haskell is that it is a great language for doing the things you want to do. A prominent Haskeller, Gabriel Gonzalez, estimates that Haskell is mature in the domain of server-side web development. Check out his view on the state of the Haskell ecosystem:<p><a href="https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#server-side-programming" rel="nofollow">https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#s...</a><p>Writing CLI programs is also rated mature in the same article:<p><a href="https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#scripting--command-line-applications" rel="nofollow">https://github.com/Gabriel439/post-rfc/blob/master/sotu.md#s...</a><p>If you want to do front end web programming, I highly recommend checking out PureScript:<p><a href="https://leanpub.com/purescript/read" rel="nofollow">https://leanpub.com/purescript/read</a><p>This might be an even better starting point for you if your background is in JavaScript (you don’t mention which languages you have experience with).<p>The third reason you should choose Haskell is that there are some great educational resources out there. Most notable among them is this book:<p>Haskell Programming from First Principles: <a href="http://haskellbook.com/" rel="nofollow">http://haskellbook.com/</a>
This book is the most thorough, pedagogically sound, and practical book out there. It is what you should read if you have any interest in ever using Haskell in production.<p>For excellent exercises, check out Programming in Haskell:
<a href="http://www.cs.nott.ac.uk/~pszgmh/pih.html" rel="nofollow">http://www.cs.nott.ac.uk/~pszgmh/pih.html</a><p>For something free but somewhat problematic (the author will call you fat) and not very in depth, check out Learn You a Haskell for Great Good:
<a href="http://learnyouahaskell.com" rel="nofollow">http://learnyouahaskell.com</a><p>For blog posts that will expose you to some of the many libraries in the Haskell ecosystem, or some of the language extensions that are heavily used in production Haskell, check out the 24 Days of Hackage series:
<a href="https://ocharles.org.uk/blog/" rel="nofollow">https://ocharles.org.uk/blog/</a>
<a href="http://conscientiousprogrammer.com/blog/2015/11/30/haskell-tidbits-24-days-of-hackage-2015-day-1-introduction-and-stack/" rel="nofollow">http://conscientiousprogrammer.com/blog/2015/11/30/haskell-t...</a><p>The fourth reason you should learn Haskell is that the compiler makes everything easier. You don’t have to be super smart to program in Haskell because the compiler is smart for you. It will catch most of your mistakes and prevent so many errors. This could be an argument for many statically typed languages, but the fact is that Haskell has the most expressive type system of any language used in production.<p>The fifth reason you should learn Haskell is that it has a great tool for managing dependencies:
<a href="https://docs.haskellstack.org/en/stable/README/" rel="nofollow">https://docs.haskellstack.org/en/stable/README/</a>
This tool and other work done by the company FP Complete (<a href="https://www.fpcomplete.com/" rel="nofollow">https://www.fpcomplete.com/</a>) are the main reasons that Haskell is a great option for production applications and not just a research language like it used to be.<p>I hope this has convinced you. I love programming in Haskell and I am having a blast learning it. There is so much to learn about functional programming and I would still consider myself an advanced beginner, or maybe just barely intermediate. I hope you have as much fun learning Haskell as I have and continue to. Cheers and best of luck!<p><i>Disclaimer</i> Haskell is the first and only language that I have used in any kind of professional context, and I cannot even claim to be a beginner in any of the other languages you mentioned. I have recently begun coding in PureScript, but that’s basically the same language.