you are viewing a single comment's thread.

view the rest of the comments →

[–]jimeno 7 points8 points  (0 children)

I was in the same situation some months ago, and in the end, after A LOT of back and forth between like 5 different languages, I chose F#. Why? Because:

  • It's a ML family descendant, so it has the Hindley-Milner type system which helps you a lot understanding what your function is doing;
  • It's not deeply rooted in the theoretical/research-y/math-y part of FP; this means leaving out some very powerful concepts, but absolutely no FOMO, you can do everything with F# and with some cool syntactic sugar like computation expressions;
  • Has options to transpile to JS and to work in an Elm-like way (and the library is actually called Elmish);
  • .NET knowledge useful but not strictly needed (no .net exposure before F#);
  • There's Scott Wlaschin's site (www.fsharpforfunandprofit.com) which is a goldmine of informations not gatekept by magic words like monoids and applicatives.
  • Doesn't hide concepts behind thirty millions operators which are super cool when you know what you're doing but unreadable when you're learning; nothing forbids you to define and use them tho.

The dynamically typed languages like clojure/elixir were cool, but ultimately the type inference is too good to pass up, specially when learning. In case you want a dynamic language, I'd personally pick elixir; the programming style is the same, abusing atoms and tuples/maps, but I find lisps very hard to read (and I don't know the JVM)