Alcune funzioni di ordine superiore per operare su liste o array sono state ripetutamente adottate o reinventate. Le funzioni mappa , volte [ l | r ] e filtro sono state trovate 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 focalizzata la domanda.
Per mostrare che i nomi non sono universali, ecco un campionamento di nomi per funzionalità equivalenti in altre lingue. C ++ ha trasforma invece di mappa e remove_if invece di filtro (invertire il significato del predicato). Lisp ha mapcar invece di map , remove-if-not invece di filter e reduce invece di piega (alcune varianti Lisp moderne hanno map ma questo sembra essere un forma derivata .) C # utilizza Seleziona invece di mappa e Dove al posto di filtro . I nomi di C # provenivano da SQL tramite LINQ , e nonostante il nome modifiche, la loro funzionalità è stata influenzata da Haskell, che è stato a sua volta influenzato da ML.
I nomi map , fold e filter sono diffusi, ma non universali. Questo suggerisce che sono stati presi in prestito da una fonte influente in altre lingue contemporanee. Da dove vengono questi nomi di funzioni?