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).
filterfa esattamente questo: filtra i dati. Sembra abbastanza ovvio.
mapverrebbe dalla teoria dell'insieme matematico, che descrive le trasformazioni dell'insieme come "mappature" dal dominio di input all'intervallo di output.