F# is a general-purpose programming language for the .NET platform, designed for writing “succinct, robust and performant code.” It originated at Microsoft Research, led by Don Syme, and is descended from the ML family of languages, most directly from OCaml. The official site describes it as offering “simplicity like Python with correctness, robustness and performance beyond C# or Java.”
The defining characteristic of F# is that it is functional-first: the Microsoft Learn documentation lists its features as “Lightweight syntax,” “Immutable by default,” “Type inference and automatic generalization,” “First-class functions,” “Powerful data types,” “Pattern matching,” and “Async programming.” It also provides full support for objects, so it blends functional and object-oriented styles within the .NET runtime.
F# brings several ideas from the ML tradition into mainstream .NET use. Its rich data types include records and discriminated unions, which the docs note are “non-null, immutable, and comparable by default.” Combined with pattern matching, these let the compiler enforce that code accounts for every case of a value, catching errors at compile time rather than runtime.
Because it targets .NET (and also compiles to JavaScript), F# interoperates with the wider .NET and npm ecosystems while keeping a strongly typed, functional core. The fsharp.org site emphasizes that this design shifts bugs “from runtime to compile time, dramatically improving software reliability.”