Lambda The Ultimate посилається на ідею, що лямбди лямбда-числення можуть ефективно реалізувати кожну вбудовану концепцію в кожній мові програмування, минулому, теперішньому та майбутньому. Класи, модулі, пакети, об'єкти, методи, потік управління, структури даних, макроси, продовження, розробки, генератори, списки, потоки тощо.
Як це буває, до цієї кінцевої природи належить стояння за анонімною функцією. Але лямбда по своїй суті не обмежуються лише анонімними функціями. Вони вчаться таким чином, але суть лямбда йде набагато глибше, ніж математичні функції без імен. Іншими словами, я приймаю питання з:
Я розумію, що означає лямбда, ідея анонімної функції є одночасно простою і потужною, але я не розумію, що означає "кінцеве" в цьому контексті.
Як практичне питання, використання лямбда в якості синтаксичних абстракцій ("макросів"), які не є за значенням / застосовними (які є математичні функції), є абсолютно важливим для розуміння того, що лямбди справді можуть служити Ядро кожної системи обробки мови програмування.
Для теорії: Існує цікавий зв’язок з парадоксом Бертран Рассела та аксіомами розуміння (і розширення) в теорії наївних множин. Лямбда - це функція, якою є нотація побудовника наборів: лямбда - позначення конструктора функцій. Існує важлива різниця, яка зазвичай ігнорується, між (лямбда (x) (* xx)) і тим, що оцінюється (функція, що складається з квадратів). Якщо не вдасться розрізнити це взагалі, тобто між позначенням та позначенням (помилка, яку зробили Церква та Фреге), тоді можна зіткнутися з парадоксами. Для наборів і Фреге саме Бертран Рассел Севільський цирульник ілюструє помилку; що стосується функцій та церкви, це Олланг Оракул Алана Тьюрінга.
Зауважте, що парадокси - це хороші, практичні речі. Ми хочемо, щоб EVAL був виразним, і ми хочемо, щоб лямбди означали більше, ніж просто функції. Це припущення про протилежне - бажаний результат; це служить приємним випробуванням на здоровий стан: лямбди навряд чи можуть бути кінцевими, якщо вони виражають лише прості функції.
Ракетка (раніше PLT Scheme) продовжує переслідувати думку про те, що практичні мови програмування справді можна будувати з нуля на "просто лямбда".
Кернель , за Шуттом, стверджує, що лямбда - це насправді не кінцева абстракція. Він стверджує, що існує ще одна примітивна концепція (для грецької мови, яка називається vau), яка була відома Суссману як FEXPR.
Felleisin та компанія (для Ракетки) отримують велику потужність ватта Shutt, використовуючи концепцію фаз , або метарівнів, що приблизно означає виконання вихідного коду через кілька етапів перекладу (як при попередній обробці C, але використовуючи одну й ту ж мову на кожному "крок" і "кроки" насправді не є цілком різними в часі). (Отже, вони стверджують, що лямбда у вищій фазі наближається до вау.) Насправді вони стверджують, що фази кращі, ніж FEXPR, саме тому, що вони є більш обмеженими; коротше кажучи, "FEXPR є надто потужними" (див. роботу Ванда, проти якої заперечує Шатт).
3-Lisp Брайана Сміта, "Процедурна рефлексія в мовах програмування", намагається суворо переформулювати теорію мов, подібних до LISP, відповідно до різко розмежування позначень (символів / мови / програм) від позначень (речі / референти / значення / результати) ). http://dspace.mit.edu/handle/1721.1/15961
Мітчелл Ванд "Теорія FEXPRs є тривіальною" надсилає більше цвяхів у (тимчасову?) Труну, яку Кент Піттман зробив для FEXPR (який, як і Феллейзен, сперечається проти FEXPR, оскільки компіляція надто складна).
Пол Грехем із силою та тривалістю стверджує в "Про Лісп", що реальна сила - це лямбда як трансформатори синтаксису (макросів), а не як трансформатори значень (математичні функції). Розробка аплікативного лямбда-обчислення Плоткіна може сприйматись як дещо контрастна, оскільки Плоткін обмежує обчислення Церкви своїм підмножиною "за вартістю / додатком". Звичайно, ефективне поводження з додатковою частиною є дуже важливим, тому важливо розробити теорію, спеціалізовану для використання ламбда. (Плоткін і Грехем не сперечаються один проти одного.)
Насправді, загалом, поняття Ламбда як Кінцева - це лише один такий поворот у вічній дискусії між ефективністю та виразністю; саме ця позиція є тим, що лямбда є найвищим інструментом виразності, і, якщо достатньо вивчити, в кінцевому підсумку виявиться і найвищим інструментом ефективності. Іншими словами, ми можемо, якщо хочемо, бачити майбутнє мов програмування нічим іншим і не менш ніж вивченням того, як ефективно реалізувати всі практично відповідні фрагменти обчислення лямбда.
"Наступні 700 мов програмування" Ландіна, http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf , є доступною посиланням, що сприяє розвитку цієї концепції про те, що Ламбда є остаточним.