ScholarGate
Assistant

Programmation fonctionnelle

La programmation fonctionnelle considère le calcul comme l'évaluation de fonctions mathématiques, évitant l'état mutable et mettant l'accent sur les fonctions d'ordre supérieur, l'immuabilité et le raisonnement équationnel.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

La programmation fonctionnelle est un paradigme dans lequel les programmes sont construits en composant des fonctions pures sur des données immuables, de sorte que l'évaluation d'une expression ne dépend que de ses entrées et ne produit aucun effet secondaire observable.

Scope

Ce thème couvre le paradigme fonctionnel fondé sur le calcul lambda : les fonctions de première classe et d'ordre supérieur, l'immuabilité et la transparence référentielle, la récursion, l'évaluation paresseuse (lazy evaluation), les types de données algébriques et le filtrage par motif (pattern matching), ainsi que l'utilisation de monades et d'autres abstractions pour structurer les effets. Il aborde les raisons pour lesquelles les fonctions pures facilitent la composition, le raisonnement et le parallélisme.

Core questions

  • Comment les fonctions d'ordre supérieur et l'évaluation paresseuse améliorent-elles la modularité ?
  • Qu'apporte la transparence référentielle en termes de raisonnement et d'optimisation ?
  • Comment les effets secondaires sont-ils modélisés dans un cadre purement fonctionnel ?
  • Comment le code fonctionnel se rapporte-t-il au calcul lambda et à la théorie des types ?

Key theories

Le rôle de « colle » des fonctions d'ordre supérieur et de l'évaluation paresseuse
Hughes soutient que l'avantage de la programmation fonctionnelle en termes de modularité provient des fonctions d'ordre supérieur et de l'évaluation paresseuse, qui agissent comme une « colle » pour composer de petits éléments de programme réutilisables.
Les monades pour structurer les effets
Wadler a montré comment les monades offrent un moyen uniforme et compositionnel de gérer l'état, les exceptions et d'autres effets au sein de programmes fonctionnels par ailleurs purs.
L'algèbre des programmes fonctionnels
La programmation au niveau des fonctions de Backus présente une algèbre de combinateurs avec des lois équationnelles qui soutiennent le raisonnement et la transformation des programmes.

Clinical relevance

Les techniques fonctionnelles telles que l'immuabilité et les fonctions pures réduisent certaines catégories de bogues liés à l'état mutable partagé et facilitent le test et la parallélisation du code. Ces idées se sont largement diffusées dans les langages courants par le biais des lambdas, des collections immuables et des abstractions de type flux/map-reduce.

History

La programmation fonctionnelle trouve ses origines dans le calcul lambda de Church et le Lisp de McCarthy (1958). Les années 1970 et 1980 ont vu l'émergence de ML, Miranda et Scheme ; la conférence Turing de Backus en 1977 a fait progresser la critique fonctionnelle du style impératif. Haskell a standardisé la programmation fonctionnelle pure et paresseuse vers 1990, et la gestion des effets basée sur les monades de Wadler a rendu la programmation fonctionnelle pure pratique pour les tâches du monde réel.

Debates

Évaluation paresseuse contre évaluation stricte
Les concepteurs de langages fonctionnels débattent si l'évaluation paresseuse (appel par besoin), qui permet des structures infinies élégantes et une modularité accrue, justifie ses coûts en termes de raisonnement sur l'espace mémoire et les performances par rapport à l'évaluation stricte.

Key figures

  • John Hughes
  • Philip Wadler
  • John Backus
  • Richard Bird
  • Simon Peyton Jones

Related topics

Seminal works

  • hughes1989
  • wadler1992
  • backus1978
  • bird1998

Frequently asked questions

Qu'est-ce que la transparence référentielle ?
Une expression est référentiellement transparente si elle peut être remplacée par sa valeur sans modifier le comportement du programme, ce qui est vrai lorsque les fonctions sont pures et les données immuables.
Comment la programmation fonctionnelle gère-t-elle les entrées/sorties et l'état ?
Les effets sont généralement modélisés explicitement, par exemple via des monades ou des systèmes d'effets, de sorte que l'ordre et la présence des effets secondaires sont capturés dans les types plutôt que de découler implicitement de la mutation.

Methods for this concept

Related concepts