Introduction to F#
1.1 What is F#?
F# is a functional-first, multi-paradigm, strongly typed language created by Don Syme at Microsoft Research Cambridge, first released in 2005 (F# 1.0) and shipped with Visual Studio 2010 (F# 2.0). It's descended from ML and OCaml, open source (the F# Software Foundation and Microsoft maintain it), and runs on .NET (Windows, Linux, macOS), in the browser via Fable (JavaScript) and WebAssembly (Bolero/Blazor), and more.
1.2 Key Features
Immutability by default, first-class functions, expressions everywhere Type inference
Hindley–Milner-based: few type annotations needed Algebraic data types
Records and discriminated unions for precise domain modeling Pattern matching
Exhaustive matching with compiler warnings Succinct syntax Indentation-based, minimal ceremony Computation expressions
Unified syntax for async, tasks, sequences, results, and custom workflows Units of measure Compile-time dimensional analysis Type providers
Typed access to external data (JSON, CSV, SQL) at compile time .NET interop
Use any .NET library; full object-oriented support when needed
.fsx scripts with dotnet fsi and #r "nuget:..." Null safety
Option types; nullable reference type support (F# 9)
1.3 Where F# Is Used
Finance and trading (Jet.com historically, Credit Suisse, Tachyus, Counterparty risk systems), insurance, energy, healthcare, data analysis, compilers and tooling (Microsoft's internal tools, the F# compiler itself), web backends, game development, and scientific computing.
Companies/projects: Microsoft (parts of Azure, Bing ads, Quantum (Q#) tooling heritage), Walmart (Jet.com), G-Research, Bayer, Olo, Paket, FAKE, Fable, Fantomas, Ionide.
1.4 F# Compared
Functional-first, multi-paradigm OO-first, multi-paradigm.NET, JS (Fable) Tracked (IO monad)