Деякі функції вищого порядку для роботи зі списками або масивами були неодноразово прийняті або заново створені. Мапа функцій , скласти [ l | r ], і фільтр зустрічаються разом у кількох мовах програмування, таких як Scheme, ML та Python, які, схоже, не мають спільного предка. Я збираюся з цими трьома іменами, щоб тримати питання зосередженим.
Щоб показати, що імена не є універсальними, ось вибірка імен для еквівалентної функціональності іншими мовами. C ++ має трансформацію замість map та delete_if замість фільтру ( повертає значення присудка). У Lisp замість карти є mapcar , видалити if-not замість фільтру та зменшити замість fold (Деякі сучасні варіанти Lisp мають карту, але це, як видається, є похідною формою .) C # використовує Select замість карти та Where замістьфільтр . Імена C # прийшли з SQL через LINQ , і, незважаючи на зміни імен, на їх функціональність впливав Haskell, на який саме впливав ML.
Мапа , складання та фільтр імен широко поширені, але не є універсальними. Це говорить про те, що вони були запозичені з впливового джерела в інших сучасних мовах. Звідки взялися ці імена функцій?
mapcar
- карта на автомобілі (а не компакт-диск).
filter
робить саме це - фільтрує дані. Здається, досить очевидно.
map
походила б із теорії математичних множин, яка описує перетворення множин як "відображення" з вхідного домену у вихідний діапазон.