When comparing Reason ML vs C#, the Slant community recommends Reason ML for most people. In the question“What are the best languages for learning functional programming?” Reason ML is ranked 17th while C# is ranked 21st.
Ranked in these QuestionsQuestion Ranking
Pro Superior type inference
Ocaml type inference is so smart that you never have to repeat yourself and keep code very clean, type errors also are very pleasant
Pro Immutability with escape hatches
reason includes true immutability, but it has escape hatches to let you use mutations in exceptional cases.
The same reasonml code can compile to js (eg. run on browsers or node.js, use any lib in npm), or compile to assembly thru ocaml (unless of course you load js externals), running on any device, with C-comparable (or better) performance.
Pro JSX syntax natively supoorted
reason was created by the creator of react, for developers already using JSX to template web or native UIs this results very familiar
Pro Visual Studio
The Visual Studio IDE offers one of the best development environments. The Community Edition can be used for free.
Can be designed visually with the Visual Studio designer for traditional Windows forms, WPF, or Web forms.
.NET offers rich functionality.
Pro Can be used in a variety of fields
with Xamarin for Mobile (ios, android)
with .net core asp for server (linux, windows)
with .net core for desktop (windows, mac)
with mono for desktop (windows, linux)
with blazor for web client with webassembly.
However, it is not considered top for any of those categories
top choice for windows desktop with .net framework
top choice for Unity
.net 5 will unify frameworks similar to JVM (just one)
Pro It is a C like language.
Being a C like language counts in favor for it as a general purpose programming language, given the ease of using existing skills to pick up this language easily.
there are other superior languages that could be used as a general purpose, such as: F#, Haskell, but the complexity of those languages, being functional, make them strange to the usual C Syntax.
C# is better than C whenever garbage collection, Objects, classes, data access, are needed. But C is going to be the choice when hardware access and performance are paramount.
Pro 3rd Party support
Lot's of tools and libraries available.
Con A standard async syntax is pending
Async syntax is not standard across native/js projects and in both cases a bit awkward for non-ocaml devs. Currently this is reasonml most voted issue in their GitHub repo so hopefully, there's news soon.
Con Learning curve
For a beginner the .NET framework can be daunting, the rich functionality means that things often can be done in several ways.
Con Microsoft will mess up with the Visual studio installation
And all of a sudden you'll need to reinstall the entire thing just because it stopped working.
Microsoft assumes that every workstation is connected to the Internet then it is always pushing updates.
Con Very large runtime
Cannot be used for embedded programming