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)