Alcune funzioni di ordine superiore per operare su elenchi o array sono state ripetutamente adottate o reinventate. La mappa delle funzioni , piega [ l | r ] e filter si trovano insieme in diversi linguaggi di programmazione, come Scheme, ML e Python, che non sembrano avere un antenato comune. Vado con questi tre nomi per mantenere la domanda focalizzata.
Per mostrare che i nomi non sono universali, ecco un campionamento di nomi per funzionalità equivalente in altre lingue. C ++ ha trasformato invece di map e remove_if invece di filter (invertendo il significato del predicato). Lisp ha mapcar invece di map , remove-if-not invece di filter , e si riduce invece di fold (Alcune moderne varianti di Lisp hanno map ma questa sembra essere una forma derivata .) C # usa Select invece di map e Where invece difiltro . I nomi di C # provenivano da SQL tramite LINQ e, nonostante i cambiamenti di nome, la loro funzionalità era influenzata da Haskell, che a sua volta era influenzato da ML.
I nomi map , fold e filter sono diffusi, ma non universali. Ciò suggerisce che sono stati presi in prestito da una fonte influente in altre lingue contemporanee. Da dove vengono questi nomi di funzioni?
mapcar
è una mappa, sull'auto (piuttosto che sul CDR).
filter
fa esattamente questo: filtra i dati. Sembra abbastanza ovvio.
map
verrebbe dalla teoria dell'insieme matematico, che descrive le trasformazioni dell'insieme come "mappature" dal dominio di input all'intervallo di output.