5 ms·
There is barely any reason for FSharp to exist if not for dotnet interop(from the fsharp history paper). There are some novelties but they came later. Any lang
by xfer 6y ago
There is barely any reason for FSharp to exist if not for dotnet interop(from the fsharp history paper). There are some novelties but they came later.
Any language developed on dotnet platform will always be in C#'s shadow. F# is much nicer to write than C#(for now), if you need to develop on dotnet.
- de_keyboard 6y agoI want a statically typed functional language with a big ecosystem. I want to use the same language across front-end and back-end. What are my options? - PureScript on web and Node.js Can use NPM packages! Node.js as a run-time lacks features like shared memory across threads. PureScript is still too early IMO. - Scala on JVM and web using Scala.js Not a bad option, although the language is very complex. More towards the OOP end than the ML end in the spectrum of language design. JVM can be a good or a bad thing, depending on what you are doing. - F# on .NET Core and web using Fable Simple functional language with access to the .NET ecosystem. ASP.NET has great performance. Access to NPM packages on web. Lacks some advanced type-system features in Haskell, OCaml and Scala. However, the community has a pragmatic focus as a result. - OCaml and ReasonML ReasonML has limited backing from Facebook. OCaml has support from a few financial institutions (e.g. Jane Street) but it's not on the same level as what a big tech company could provide. Tiny (but high quality) community and ecosystem. OCaml has great single-threaded performance but mult-threading is not quite ready. Already small community split by compiler extensions and standard libraries. - Haskell and GHCJS Again, tiny community and ecosystem. Beautiful language, but lazy evaluation has bit me too many times. Steep learning curve since newcomers cannot fall-back to OOP and imperative code. - Elm Tiny ecosystem, tied to Node.js (see PureScript). Interop story with NPM modules is worse than PureScript. For me, F# is the clear winner. If you aren't particularly interested in functional programming - maybe you just use some delegates here and there - then C# is a fine choice. Otherwise, C# quickly becomes awkward compared to F#. Besides, C# to JS options are not as mature as Fable.
- anotherhue 6y agoAlso Clojure/ClojureScript if you're willing to give up the static typing.
- LandR 6y agoClojurescript with Re-Frame / RE-Frame-10x / Reagent has transformed front-end for me. It's so good.
- ollran 6y agoRe-frame (just like Clojure in general) seems to be much more stable than alternatives in a sense how much things change over time.
- de_keyboard 6y agoClojure is such a different school of thought! Most of the arguments I have heard for Clojure (immutability, thinking in data, etc) also apply to ML though. Still, I hope to try it out properly one day! I wonder what is easier for a strong OOP developer to learn, Lisp or ML?
- pjmlp 6y agoLisp and Clojure have CLOS, which is more powerful than what most people know as OOP. ML, depending on the flavour gets pretty how one combines functors, aka generic modules, which is similar to component based programming like COM, or just plain objects as in OCaml. Now the immutability isn't as hard to adapt to as one may think.