Hacker News new | ask | show | jobs
by akra 600 days ago
I've found this when seeing F# team adoption in the past especially if coming from outside the .NET ecosystem (no previous .net knowledge). It is easier learning F# for a number of reasons BUT as per another comment when you need to use the "inter-op feature" (i.e. using C# libs) then the learning curve widens quickly especially if using C# like frameworks - libraries are typically still OK/relatively easy. I see interop to large frameworks and moving to different idiomatic C# styles as an advanced F# topic for these adopters.

While it's good to have the escape hatch; because it means its less of a risk to adopt F# (i.e. you will always have the whole .NET ecosystem at your finger tips) if the C# framework being adopted is complex (e.g. uses a lot of implicits) it requires good mentoring and learning to bridge the gap and usually at this point things like IDE support, mocking, etc that weren't needed as much before are needed heavily (like a typical C# code base). Many C# libraries are not that easy therefore IMO, but with C# native templates, etc it becomes more approachable if coming from that side.

I've found things like the differences in code structure, the introduction of things like patterns (vs F#'s "just functions" ideal), dependency injection, convention based things (ASP.NET is a big framework with lots of convention based programming) and other C# things that F# libraries would rather not have due to complexity is where people stumble. Generally .NET libraries are easy in F# - its frameworks that are very OOP that make people outside the C#/Java/OOP ecosystem pause a bit at least in my experience. There's good articles around libraries vs frameworks in the F# space if I recall illustrating this point.