Einige Funktionen höherer Ordnung für die Bearbeitung von Listen oder Arrays wurden wiederholt übernommen oder neu erfunden. Die Funktionen ordnen , falten [ l | r ] und Filter befinden sich zusammen in mehreren Programmiersprachen wie Scheme, ML und Python, die keinen gemeinsamen Vorfahren zu haben scheinen. Ich gehe mit diesen drei Namen, um die Frage fokussiert zu halten.
Um zu zeigen, dass die Namen nicht universell sind, finden Sie hier eine Auswahl von Namen für äquivalente Funktionen in anderen Sprachen. C ++ hat Transformation anstelle von map und remove_if anstelle von filter (Umkehrung der Bedeutung des Prädikats). Lisp hat mapcar statt Karte , remove-wenn-nicht statt Filter und reduzieren statt Falte (Einige moderne Lisp - Varianten haben Karte aber dies scheint eine zu sein abgeleitete Form .) C # Anwendungen Wählen Sie statt Karte und Wo stattFilter . Die Namen von C # stammten aus SQL über LINQ , und trotz der Namensänderungen wurde ihre Funktionalität von Haskell beeinflusst, das selbst von ML beeinflusst wurde.
Die Namen Map , Fold und Filter sind weit verbreitet, aber nicht universell. Dies deutet darauf hin, dass sie aus einer einflussreichen Quelle in andere zeitgenössische Sprachen entlehnt wurden. Woher kommen diese Funktionsnamen?
mapcar
ist eine Karte auf dem Auto (und nicht auf der CDR).
filter
macht genau das - es filtert die Daten. Scheint ziemlich offensichtlich.
map
würde aus der mathematischen Mengenlehre stammen, die Mengenumwandlungen als "Abbildungen" von der Eingabedomäne in den Ausgabebereich beschreibt.