domain functional seed

Functional Languages

Languages built on mathematical functions, immutability, and declarative expression. Rooted in lambda calculus (Church, 1936) and emphasizing composition over mutation.

#paradigm #functional #lambda-calculus

Sub-topics

Lisp topic

Created by John McCarthy at MIT in 1958. The second-oldest high-level language (after Fortran). Pioneered garbage collection, tree data structures, dynamic typing, and homoiconicity. Parent of Scheme, Common Lisp, Clojure, and Racket.

Scheme topic

Created by Guy Steele and Gerald Sussman at MIT in 1975. A minimalist Lisp dialect emphasizing lexical scoping, tail-call optimization, and first-class continuations. Hugely influential in CS education (SICP) and language design.

Common Lisp concept

Standardized in 1984 (ANSI 1994) to unify fragmented Lisp dialects. A multi-paradigm powerhouse with CLOS (object system), macros, conditions, and dynamic typing. Used in AI research, Grammarly, and ITA Software (now Google Flights).

Clojure concept

Created by Rich Hickey in 2007. A modern Lisp on the JVM emphasizing immutability, persistent data structures, and concurrency via STM (Software Transactional Memory). Influenced by Lisp, Haskell, Erlang, and Java.

Racket concept

Originally PLT Scheme (1995), renamed Racket in 2010. A language-oriented programming language — designed for creating new languages. Built by Matthias Felleisen's team for CS education and PL research.

ML topic

Meta Language, created by Robin Milner at Edinburgh in 1973. Introduced Hindley-Milner type inference, pattern matching, and algebraic data types. Parent of SML, OCaml, F#, and spiritual ancestor of Haskell and Rust's type systems.

OCaml concept

Created by Xavier Leroy et al. at INRIA in 1996. Extends Caml (an ML dialect) with objects and a powerful module system. Compiles to efficient native code. Influenced Rust, F#, Scala, and Haskell. Used at Jane Street and Facebook.

Haskell topic

Designed by committee in 1990 to consolidate lazy functional language research. Named after logician Haskell Curry. Features lazy evaluation, monads, type classes, and purity. Influenced Rust, Swift, Scala, Elm, PureScript, and many others.

F# concept

Created by Don Syme at Microsoft Research in 2005. An ML-family language on .NET, strongly influenced by OCaml. Combines functional programming with OOP and .NET interop. Pioneered async workflows that influenced C# async/await.

Elm concept

Created by Evan Czaplicki in 2012 as his thesis. A purely functional language for web front-ends that compiles to JavaScript. Known for 'no runtime exceptions' guarantee. Influenced by Haskell, OCaml, and F#. Pioneered The Elm Architecture (TEA), later adopted by Redux.

Erlang topic

Created by Joe Armstrong at Ericsson in 1986 for telecom switches. Designed for massive concurrency, fault tolerance, and hot code swapping via the BEAM VM. Powers WhatsApp, RabbitMQ, and telecom infrastructure worldwide.

Elixir concept

Created by Jose Valim in 2011. Runs on the Erlang BEAM VM with Ruby-inspired syntax and modern metaprogramming. Combines Erlang's concurrency model with developer-friendly tooling (Mix, Hex, Phoenix framework).

Scala topic

Created by Martin Odersky at EPFL in 2004. Fuses OOP and functional programming on the JVM. Features pattern matching, type inference, implicits, and actors (Akka). Used at Twitter, LinkedIn, and the Spark ecosystem.

PureScript concept

Created by Phil Freeman in 2013. A strongly typed, purely functional language that compiles to JavaScript. Heavily inspired by Haskell but designed specifically for the JS ecosystem. Features row polymorphism and extensible records.

Gleam concept

Created by Louis Pilfold in 2016 (v1.0 in 2024). A friendly, type-safe language for the Erlang BEAM VM. Combines Erlang's concurrency with ML-family type safety. Can also compile to JavaScript. Growing rapidly in the web services space.

Coq concept

Developed at INRIA starting in 1989, first released in 1991. An interactive theorem prover and dependently typed functional language. Used to formally verify mathematical proofs and critical software (CompCert C compiler). Renamed to Rocq in 2024.

Idris concept

Created by Edwin Brady, first released in 2007 (Idris 2 in 2020). A general-purpose language with dependent types — like Haskell but types can depend on values. Bridges the gap between theorem provers and practical programming.

Standard ML concept

Standardized in 1990 (revised 1997). The first formally defined programming language with a complete rigorous semantics. Direct descendant of ML, featuring modules with functors. Influenced OCaml, Haskell, and Rust.

Miranda concept

Created by David Turner in 1985. A lazy, purely functional language that directly precipitated Haskell's creation. Miranda was proprietary, so the Haskell committee designed an open alternative incorporating Miranda's key innovations.