Beberapa fungsi tingkat tinggi untuk beroperasi pada daftar atau array telah berulang kali diadopsi atau diciptakan kembali. Fungsi peta , lipat [ l | r ], dan filter ditemukan bersama dalam beberapa bahasa pemrograman, seperti Skema, ML, dan Python, yang tampaknya tidak memiliki leluhur yang sama. Saya akan menggunakan ketiga nama ini untuk menjaga fokus pertanyaan.
Untuk menunjukkan bahwa nama-nama itu tidak universal, berikut adalah contoh nama untuk fungsi yang setara dalam bahasa lain. C ++ memiliki transformasi alih-alih peta dan remove_if alih-alih filter (membalikkan makna predikat). Lisp memiliki mapcar alih-alih peta , menghapus-jika-bukan sebagai pengganti filter , dan mengurangi alih-alih lipatan (Beberapa varian Lisp modern memiliki peta tetapi ini tampaknya merupakan bentuk turunan .) C # menggunakan Pilih sebagai ganti peta dan Di mana alih-alihfilter . Nama C # berasal dari SQL melalui LINQ , dan meskipun namanya berubah, fungsinya dipengaruhi oleh Haskell, yang dipengaruhi oleh ML.
Nama-nama peta , lipatan , dan filter tersebar luas, tetapi tidak universal. Ini menunjukkan bahwa mereka dipinjam dari sumber yang berpengaruh ke bahasa kontemporer lainnya. Dari mana nama-nama fungsi ini berasal?
mapcar
adalah peta, di mobil (bukan cdr).
filter
tidak persis itu - itu menyaring data. Tampak cukup jelas.
map
akan datang dari teori himpunan matematika, yang menggambarkan transformasi set sebagai "pemetaan" dari domain input ke rentang output.