title: Functional Programming
text: # Functional Programming
  
  Le Functional Programming, abrégé FP, est un langage créé par John Backus en 1977 dans son article intitulé « Can programming be liberated from the von Neumann style ? : a functional style and its algebra of programs » en français : « La programmation peut-elle se libérer du style de von Neumann ? : un style fonctionnel et son algèbre des programmes ».
  
  La fonction factorielle s'y écrit :
  
  Def fact = eq0 -> ~1 ; * o [ id, fact o sub1 ]
  
  avec :
  
  Def eq0 = eq o [ id, ~0 ]
  
  Def sub1 = - o [ id, ~1 ]
  
  ## Vue d'ensemble
  
  Il existe plusieurs types de valeurs atomiques : booléens, entiers (positifs), caractères, symboles…
  
  Étant donné des valeurs $x_1,$ …, $x_n,$ la suite $<x_1,$ …, $x_n>$ est elle-même une valeur pour le langage.
  
  ⊥ (« antitruc ») est la valeur « indéfini » ; elle est absorbante par formation de suite : si une suite comporte la valeur ⊥, alors elle est évaluée à ⊥.
  
  Une fonction f transforme une valeur x en une autre, dénotée f:x.
  
  Toute fonction est stricte (en), c'est-à-dire que si x s'évalue à ⊥, alors f:x = ⊥.
  
  ## Fonctionnelles
  
  Une fonctionnelle est une fonction opérant sur d'autres fonctions.
  
  Exemples :
  
  * unit ;
  * composition ;
  * construction ;
  * condition ;
  * apply-to-all ;
  * insert-right ;
  * insert-left.
  
  ## À voir aussi
  
  * Programmation fonctionnelle
  * Logique combinatoire
  