Loading AI tools
type de fonction De Wikipédia, l'encyclopédie libre
En mathématiques et en informatique, les fonctions d'ordre supérieur sont des fonctions qui ont au moins une des propriétés suivantes :
En mathématiques, on les appelle des opérateurs ou des fonctionnelles. L'opérateur de dérivation en calcul infinitésimal est un exemple classique, car elle associe une fonction (la dérivée) à une autre fonction (la fonction que l'on dérive).
Dans le lambda-calcul non typé, toutes les fonctions sont d'ordre supérieur. Dans le lambda-calcul typé, dont la plupart des langages de programmation fonctionnels sont issus, les fonctions d'ordre supérieur sont généralement celles dont le type contient plus d'une flèche. En programmation fonctionnelle, les fonctions d'ordre supérieur qui retournent d'autres fonctions sont dites curryfiées.
La fonction map
présente dans de nombreux langages de programmation fonctionnelle est un exemple de fonction d'ordre supérieur. Elle prend une fonction f comme argument, et retourne une nouvelle fonction qui prend une liste comme argument et applique f à chaque élément. Un autre exemple très courant est celui d'une fonction de tri qui prend en argument une fonction de comparaison ; on sépare ainsi l'algorithme de tri de la comparaison des éléments à trier.
D'autres exemples de fonction d'ordre supérieur sont la composition de fonctions et l'intégration.
Les langages de programmation peuvent obtenir les mêmes résultats algorithmiques que ceux qui sont obtenus par des fonctions d'ordre supérieur en exécutant dynamiquement du code dans la portée de l'évaluation. Cela se fait généralement par un appel à la commande eval ou à la commande execute. Cette approche a cependant des défauts :
On peut aussi utiliser des macros pour obtenir certains effets des fonctions d'ordre supérieur. Mais les macros ne peuvent généralement pas éviter le problème de capture de variable. Elles peuvent aussi donner lieu à une grande quantité de code dupliqué, qui peut être difficile à optimiser pour un compilateur. Les macros ne sont généralement pas typées, bien qu'elles puissent produire du code fortement typé.
Les objets d'un environnement de programmation orientée objet peuvent être utilisés comme des fonctions d'ordre supérieur. La méthode d'un objet agit essentiellement comme une fonction, et une méthode peut prendre des objets (contenant des méthodes) comme arguments et retourner des objets avec des méthodes. Malheureusement, les objets consomment souvent plus de ressources que des fonctions pures. La syntaxe du langage peut introduire des difficultés supplémentaires : un objet peut être créé pour contenir des paramètres qui sont des fonctions, et toute fonction résultante peut avoir un objet associé.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.