Spokes.wiki Search About
Computer Language source ↗ source url updated Thu Aug 06 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

OCaml

ocaml.org sells “an industrial-strength functional programming language with an emphasis on expressiveness and safety”, and its headline is about the type system: “Powerful Type Safety Made Simple” — lightweight, highly expressive, catching more bugs at compile time, with inference doing the writing. The homepage’s worked example is the compiler rejecting a non-exhaustive pattern match, which is an unusually specific thing for a front page to choose. Native-code compiler for efficient machine code plus a fast bytecode compiler; garbage collected; opam as package manager; 5.5.0 current with 4.14.4 as LTS (read from ocaml.org on 2026-08-06; not cross-checked against a second source). INRIA’s historical role is referenced. Users named: Facebook, Microsoft, Docker, Jane Street, Bloomberg, Tezos, Ahrefs.

T1 — first-party. The standing caveat applies to “industrial-strength”, though the user list is more checkable than most claims in this corpus.

The ancestor of the day’s other ML

fsharp arrived in the same batch and Wikipedia describes it as taking OCaml’s core onto .NET. So the corpus holds a language and its derivative, described independently, which it can do for only one other pair (erlang and elixir, and lisp‘s dialects as a looser family). What carries over is visible: Hindley–Milner-style inference, everything-an-expression, algebraic data types, pattern matching. What F# added is what a host demands — .NET interop, computation expressions, type providers. The host shapes the derivative more than the parent’s design does, which is hosted-language‘s argument with a control case attached.

Exhaustiveness is the claim worth keeping

Most type-system pitches in this corpus are about catching the wrong type in the wrong place. OCaml’s front page picks a different guarantee: that you have handled every case. On type-system‘s “what are the types asked to prove” scale, that sits between kotlin (one bug class, null) and spark (absence of runtime errors, by proof) — a completeness property rather than a safety one, and the same thing rethinking-java-design-patterns reaches for when it rebuilds Visitor as an exhaustive switch over a sealed type. Two sources, six weeks apart in this wiki and decades apart in practice, arguing that exhaustive matching is what makes a design pattern unnecessary.

OCaml also keeps a garbage collector while selling compile-time safety, which separates the two things rust‘s page presents as one purchase: Rust argues that ownership buys you safety and the absence of a runtime. OCaml takes the safety and keeps the collector, so the corpus can now say those are separable commitments.

fsharp · type-system · haskell · rust · hosted-language · rethinking-java-design-patterns · programming-language · synthesis