A day for pure functions

haskell.day

Eq

Type Classes

Ad-hoc polymorphism elevated to an art form. Type classes define shared behavior across types without inheritance hierarchies -- a principled approach to abstraction that influenced a generation of languages.

fmap

Functors

Structure-preserving mappings between categories. The humble fmap lifts ordinary functions into computational contexts -- a concept so fundamental it appears everywhere you look.

a m b m c

Monads

Composable computation descriptions. Bind (>>=) threads context through sequential operations with mathematical precision.

quicksort
:: (Ord a) => [a] -> [a]
quicksort []     = []
quicksort (x:xs) =
  let smaller = quicksort [a | a <- xs, a <= x]
      bigger  = quicksort [a | a <- xs, a > x]
  in  smaller ++ [x] ++ bigger

Milestones in Purity

1990

Haskell 1.0

The first version of the Haskell Report is published, unifying existing functional language research into a single, open standard.

1998

Haskell 98

A stable, portable version of the language intended for teaching and as a base for extensions. The foundation for modern Haskell.

2004

GHC 6.2 & Cabal

The Glasgow Haskell Compiler matures into the de facto standard. Cabal brings package management to the Haskell ecosystem.

2010

Haskell 2010

The latest revision of the Haskell standard, incorporating lessons learned from a decade of industrial and academic use.

2015

Stack

Stack arrives as a cross-platform build tool with reproducible builds, dramatically improving the developer experience.

2021

GHC 9.0

Linear types arrive in GHC, bringing resource-safe programming to Haskell and opening new frontiers in type-level expressiveness.