Programmation fonctionnelleLa programmation fonctionnelle est un paradigme de programmation de type déclaratif qui considère le calcul en tant qu'évaluation de fonctions mathématiques. Comme le changement d'état et la mutation des données ne peuvent pas être représentés par des évaluations de fonctions la programmation fonctionnelle ne les admet pas, au contraire elle met en avant l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d'état.
Lambda-calculLe lambda-calcul (ou λ-calcul) est un système formel inventé par Alonzo Church dans les années 1930, qui fonde les concepts de fonction et d'application. On y manipule des expressions appelées λ-expressions, où la lettre grecque λ est utilisée pour lier une variable. Par exemple, si M est une λ-expression, λx.M est aussi une λ-expression et représente la fonction qui à x associe M. Le λ-calcul a été le premier formalisme pour définir et caractériser les fonctions récursives : il a donc une grande importance dans la théorie de la calculabilité, à l'égal des machines de Turing et du modèle de Herbrand-Gödel.
Catégorie cartésienneUne catégorie cartésienne est, en mathématiques — et plus précisément en théorie des catégories — une catégorie munie d'un objet terminal et du produit binaire. Dans une catégorie cartésienne, la notion de morphisme entre morphismes n'a pas encore de sens. C'est pourquoi l'on définit l'exponentiation, c'est-à-dire l'objet B qui représente l'« ensemble » des morphismes de A dans B. Munie de cette propriété de clôture qu'est l'exponentiation, une catégorie cartésienne devient une catégorie cartésienne fermée.
HaskellHaskell est un langage de programmation fonctionnel fondé sur le lambda-calcul et la logique combinatoire. Son nom vient du mathématicien et logicien Haskell Curry. Il a été créé en 1990 par un comité de chercheurs en théorie des langages intéressés par les langages fonctionnels et l'évaluation paresseuse. Le dernier standard est Haskell 2010 : c'est une version minimale et portable du langage conçue à des fins pédagogiques et pratiques, dans un souci d'interopérabilité entre les implémentations du langage et comme base de futures extensions.
Simply typed lambda calculusThe simply typed lambda calculus (), a form of type theory, is a typed interpretation of the lambda calculus with only one type constructor () that builds function types. It is the canonical and simplest example of a typed lambda calculus. The simply typed lambda calculus was originally introduced by Alonzo Church in 1940 as an attempt to avoid paradoxical use of the untyped lambda calculus. The term simple type is also used to refer extensions of the simply typed lambda calculus such as products, coproducts or natural numbers (System T) or even full recursion (like PCF).
Objet exponentielEn mathématiques, et plus particulièrement en théorie des catégories, un objet exponentiel est un équivalent catégorique à un espace fonctionnel en théorie des ensembles. Les catégories avec tous les produits finis et tous les objets exponentiels sont appelées catégories cartésiennes fermées. Un objet exponentiel peut aussi être appelé un objet puissance ou objet des morphismes. Soit C une catégorie avec produits et soient Y et Z des objets de C. L'objet exponentiel ZY peut être défini comme un morphisme universel du foncteur –×Y à Z.
Fermeture (informatique)Dans un langage de programmation, une fermeture ou clôture () est une fonction accompagnée de son environnement lexical. L'environnement lexical d'une fonction est l'ensemble des variables non locales qu'elle a capturées, soit par valeur (c'est-à-dire par copie des valeurs des variables), soit par référence (c'est-à-dire par copie des adresses mémoires des variables). Une fermeture est donc créée, entre autres, lorsqu'une fonction est définie dans le corps d'une autre fonction et utilise des paramètres ou des variables locales de cette dernière.
ApplyIn mathematics and computer science, apply is a function that applies a function to arguments. It is central to programming languages derived from lambda calculus, such as LISP and Scheme, and also in functional languages. It has a role in the study of the denotational semantics of computer programs, because it is a continuous function on complete partial orders. Apply is also a continuous function in homotopy theory, and, indeed underpins the entire theory: it allows a homotopy deformation to be viewed as a continuous path in the space of functions.
SchemeScheme (prononciation : ) est un langage de programmation dérivé du langage fonctionnel Lisp, créé dans les années 1970 au Massachusetts Institute of Technology (MIT) par Gerald Jay Sussman et Guy L. Steele. Le but des créateurs du langage était d'épurer le Lisp en conservant les aspects essentiels, la flexibilité et la puissance expressive. Scheme a donc une syntaxe extrêmement simple, avec un nombre très limité de mots-clés. Comme en Lisp, la notation préfixée permet de s'affranchir d'une précédence des opérateurs.
AritéEn mathématiques, l'arité d'une fonction, ou opération, est le nombre d'arguments ou d'opérandes qu'elle requiert. Une fonction ou un opérateur peut donc être décrits comme unaires, binaires, ternaires, etc. Des termes comme 7-aire ou n-aire sont aussi utilisés. L'addition de deux nombres, par exemple, est une fonction binaire, ou opération binaire. La fonction inverse, qui associe à un élément son inverse, est une fonction unaire. En calcul propositionnel, on considère aussi l'arité des connecteurs qui sont des fonctions des booléens dans un booléen.