Niektóre funkcje wyższego rzędu do pracy na listach lub tablicach były wielokrotnie adoptowane lub wymyślane na nowo. Funkcje map , fold [ l | r ] i filtr znajdują się razem w kilku językach programowania, takich jak Scheme, ML i Python, które nie wydają się mieć wspólnego przodka. Idę z tymi trzema nazwiskami, aby skupić się na pytaniu.
Aby pokazać, że nazwy nie są uniwersalne, oto próbka nazw dla równoważnej funkcjonalności w innych językach. C ++ przekształcił zamiast map i remove_if zamiast filter (odwraca znaczenie predykatu). Lisp ma mapcar zamiast mapy , usuń, jeśli nie zamiast filtru i zmniejsz zamiast składania (niektóre nowoczesne warianty Lisp mają mapę, ale wydaje się, że jest to forma pochodna ). C # używa Wybierz zamiast mapy i Gdzie zamiastfiltruj . Nazwy C # pochodzą z SQL za pośrednictwem LINQ i pomimo zmian nazw, na ich funkcjonalność miał wpływ Haskell, na który sam miał wpływ ML.
Nazwy map , fold i filter są powszechne, ale nie uniwersalne. Sugeruje to, że zostały one zapożyczone z wpływowego źródła na inne współczesne języki. Skąd pochodzą te nazwy funkcji?
mapcar
to mapa na samochodzie (a nie cdr).
filter
robi dokładnie to - filtruje dane. Wydaje się to dość oczywiste.
map
pochodziłby z matematycznej teorii zbiorów, która opisuje transformacje zbiorów jako „odwzorowania” z dziedziny wejściowej na zakres wyjściowy.