Certaines fonctions d'ordre supérieur pour fonctionner sur des listes ou des tableaux ont été adoptées ou réinventées à plusieurs reprises. La carte des fonctions , fold [ l | r ], et filter se trouvent ensemble dans plusieurs langages de programmation, tels que Scheme, ML et Python, qui ne semblent pas avoir un ancêtre commun. Je vais avec ces trois noms pour garder la question ciblée.
Pour montrer que les noms ne sont pas universels, voici un échantillon de noms pour des fonctionnalités équivalentes dans d'autres langues. C ++ a transformé au lieu de map et remove_if au lieu de filtre (inversant la signification du prédicat). Lisp a mapcar au lieu de la carte , supprimer, si non pas au lieu de filtre , et réduire au lieu de pli (LISP moderne variantes ont carte , mais cela semble être une forme dérivée .) C # utilisations Sélectionnez au lieu de la carte et où au lieu defiltre . Les noms de C # provenaient de SQL via LINQ , et malgré les changements de nom, leur fonctionnalité a été influencée par Haskell, lui-même influencé par ML.
Les noms map , fold et filter sont répandus, mais pas universels. Cela suggère qu'ils ont été empruntés à une source influente dans d'autres langues contemporaines. D'où viennent ces noms de fonction?
mapcar
est une carte, sur la voiture (plutôt que le cdr).
filter
fait exactement cela - il filtre les données. Semble assez évident.
map
proviendrait de la théorie mathématique des ensembles, qui décrit les transformations d'ensemble comme des «mappages» du domaine d'entrée à la plage de sortie.