Been studying a bit of Haskell during the previous (rather hectic) weeks. Learnings this far:
- Proper type inference (vs. Scala etc.) is wonderful and removes all the pain that have turned me off from traditional statically typed langs before
- Type classes and parametric polymorphism seems like a very good and natural idea, easy to understand (at least at face value) and very explicit without any big hassle (like the variance/covaricance/invariance things with subtyping)
- Monadic IO etc. are not as hard as I thought it to be with some background knowledge
- Curried functions with minimal function call syntax seem essential for proper FP-style programming (fn composition, point-free style, etc.)
- JavaScript seems even more dangerous now, I want me some type safety
I've favored dynamically typed languages for years now, but especially the good type inference takes most of the pain away. Using immutable values, recursion, and strong types seems very natural to me now.
Note that I've only been reading 9 chapters of http://learnyouahaskell.com/ , read some articles and watched some SPJ lectures, only playing a little bit with the GHCI REPL, so these are just very initial thoughts.
--
also, proper tail call optimisation enables using recursion as a natural solution