Listelerde veya dizilerde çalışmak için bazı üst düzey işlevler tekrar tekrar benimsenmiş veya yeniden keşfedilmiştir. Fonksiyonlar haritası , katlama [ l | r ] ve filtre , ortak bir ataya sahip görünmeyen Scheme, ML ve Python gibi çeşitli programlama dillerinde birlikte bulunur. Soruyu odakta tutmak için bu üç isimle gidiyorum.
İsimlerin evrensel olmadığını göstermek için, burada diğer dillerde eşdeğer işlevsellik için bir örnekleme örneği verilmiştir. C ++, harita yerine dönüşüme sahiptir ve filtre yerine kaldırırsa (yüklemin anlamını tersine çevirir ). Lisp vardır mapcar yerine haritası , kaldırma-eğer-değil yerine filtresi ve azaltmak yerine kat (Bazı Modern Lisp var varyantları harita ama bu göründüğü bir olmak türetilmiş formu .) C # kullanır seçin yerine haritası ve nerede yerinefiltre . C # 'ın adları LINQ aracılığıyla SQL'den geldi ve isim değişikliklerine rağmen, işlevleri ML'den etkilenen Haskell'den etkilendi.
İsimleri map , kat ve filtre yaygın, ancak evrensel değildir. Bu, etkili bir kaynaktan diğer çağdaş dillere ödünç alındıklarını göstermektedir. Bu işlev adları nereden geldi?
filter
tam olarak bunu yapar - verileri filtreler. Oldukça açık görünüyor.
map
küme dönüşümlerini girdi alanından çıktı aralığına "eşlemeler" olarak tanımlayan matematiksel küme teorisinden gelir.