En programmation fonctionnelle, une fonction est l'unité de manipulation principale.
En POO, un objet est l'unité de manipulation principale.
La programmation fonctionnelle prend principalement en charge l'abstraction sur les données et l'abstraction sur le comportement.
Des langages fonctionnels plus récents tels ML (1973), Haskell (1987), OCaml, Erlang, Clean et Oz, CDuce, Scala (2003), F# ou PureScript (2013), Agda (en) sont fortement typés.
Par son design, la programmation fonctionnelle propose des avantages très intéressants, car elle permet de faire des programmes : Extrêmement modulaires, car ce n'est rien de plus que de l'assemblage.
Bien plus prédictibles, grâce à des fonctionnalités plus faciles à concevoir, créer, débugger et tester.