What's New in F# 9
Perception of F#, C#, and .NET
- Many commenters praise F# as a beautiful, productive, and readable language, especially for backend, algorithms, and data-heavy work.
- C# is seen as underrated: productive, easy to teach (especially to JS/TS devs), with strong tooling and cross‑platform support.
- Some criticize “enterprise-style” C# culture (DI-heavy, reflection, complex frameworks like EF/Spring-like stacks) for over‑abstraction and poor readability, while others argue that’s a team/culture issue, not the language.
Ecosystem, Jobs, and Microsoft Support
- Major F# downside: few jobs, smaller ecosystem, fewer libraries, and less marketing from Microsoft.
- Some worry about long‑term dependence on Microsoft, though others point to open-source status and the F# Software Foundation.
- F# is often used in niche or high‑leverage teams inside .NET shops rather than as a widely advertised primary language.
Tooling, Platforms, and Deployment
- F# works well on Windows, Linux, and macOS via .NET; parity with C# for non‑Windows-specific APIs.
- Ionide (VS Code) and Rider are cited as strong F# environments; tooling has improved significantly in the last decade.
- .NET deployment options discussed: shared runtime, self‑contained single binaries, trimming, and NativeAOT (including for F#).
Language Features and Interop
- F# strengths: discriminated unions, pattern matching, records, type inference, REPL, pipeline operators, and scripting (.fsx).
- F# 9: nullable reference interop (
T | null) to align with C# nullable reference types; some disappointed this introduces null rather than mapping more strictly to options. - Async interop between F#
asyncand C#Taskis seen as historically painful; newer task computation expressions and helpers improve this but edge cases remain debated. - Tail-call attribute and TCO enforcement are welcomed for correctness.
GUI, Web, and WASM
- GUI options: Avalonia-based libraries, Fabulous, and others; usage in production seems niche.
- Web frameworks and WASM options (e.g., Bolero) exist; maintenance activity is mixed but still ongoing.
Learning Curve and Experience Reports
- Functional newcomers (from JS/Python/Go) often adapt well; OO veterans (C#/Java) may need to “unlearn” patterns and initially find F# less discoverable.
- Some report F# code as easier to read than Python or C#; others find it visually “ugly” or hard to get into.
- One long case study describes abandoning a large F#/Fable-based system in favor of TypeScript+Rust due to complex multi-target interop and dependency management.