Ein Programmierstil, dessen wichtigstes Werkzeug Funktionen sind. Funktionen sind dabei im mathematischen Sinne zu verstehen: Sie transformieren Eingangswerte in Ausgangswerte ohne den Programmzustand zu verändern (Seiteneffektsfrei). Funktionen können wie Variablen benutzt werden: Sie können als Parameter übergeben werden, sie können als Ergebnis übergeben werden, sie können in Variablen zwischengespeichert werden und sie können „teilweise“ angewendet werden (Partial applied)