Як саме числення лямбда обчислює інтуїтивне поняття обчислюваності?


12

Я намагався обернути голову навколо того, що, чому і як обчислення, але я не в змозі зіткнутися з "чому це працює"?λ

"Інтуїтивно" я отримую модель обчислення машин Тьюрінга (ТМ). Але ця абстракція просто залишає мене збентеженою.λ

Припустимо, ТМ не існує - тоді як можна "інтуїтивно" переконатися у здатності -рахунку захопити це поняття обчислюваності. Як наявність купі функцій для всього та їх сумісність передбачає обчислюваність? Що я тут пропускаю? Про це я читав статті Алонцо Церкви, але все ще плутаюсь і шукаю більш «збитого» розуміння того ж.λ


У вас те саме питання із системами переписування та граматиками? В обчисленні лямбда основні операції досить прості: абстракція функції, застосування функції заміна, а обчислення - бета-нормалізація. Іншими словами, я не бачу, у чому полягає ваша проблема в тому, що це розумна модель обчислення.
Каве

2
Я не бачив, щоб хтось сумнівався, що функції обчислення лямбда-обчислення обчислюються. Історично питання полягало у тому, чи це єдині інтуїтивно зрозумілі функції, що зовсім інше питання, ніж те, що ви, здається, задаєте.
Каве

1
Одне, що мені здалося корисним, - це книга Реймонда М Смулляна "Знущатися над глумливим птахом", яка замінює функції птахам у чарівному лісі (і це добре читається)
dspyz

1
Книга Smullyans про комбінаторну логіку
Trismegistos

Відповіді:


21

λ

λλ


4
Якщо firewalking так само весело, як ви кажете, то я мушу спробувати це.
Раду ГРИГо

Андрію, ти знаєш для них будь-яку посилання? Годель не сприйняв модель Хруха як захоплення всіх змінних функцій, але я не пам'ятаю, щоб ніде бачив, що він критикував модель набагато далі. Наскільки я знаю, його критика моделі обчислення ламбади Церкви була нарівні з критикою власних рекурсивних функцій Годеля-Гербранда.
Каве

3
Я думаю, ти хочеш К. Годеля: "Деякі зауваження щодо результатів нерозбірливості", Соломон Феферман, Джон Доусон та Стівен Клін (ред.), Курт Гедель: Зібрання творів Vol. Ii. Oxford University Press. 305--306 (1972). Дивіться books.google.si/…
Андрій Бауер

6

Ви програмуєте в ньому! Погляньте на церковні кодування . Ви можете бачити, наскільки можна виконати всю арифметику, яка, мабуть, переконає вас, що вона надзвичайно потужна. Мені подобається дивитися на операції за списками. Ви можете визначити більшість будь-якої структури даних з точки зору функції, яка виконує найважливішу операцію над нею.

Наприклад, кодування списку - це функція складання, яка складається над ним. Зауважте, це не кодування Церкви, а одне з типів та мов програмування Percie. Парові кодування церкви не дають нам рекурсії, ми повинні додати її назад у себе за допомогою якогось комбінатора рекурсії.

тому список містить два аргументи: функцію робити складання та початкове значення, яке потрібно в якийсь момент підключити до складки.

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

тепер ми можемо визначити підсумовування, задане функцією додавання (див. кодування церкви зверху)

sum xs = xs add 0

ми можемо зробити більше і визначити функцію карти

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

якщо ви все ще не впевнені, що тут проводяться обчислення, і хочете переконатися, що ви можете виконати будь-які обчислення, тоді перевірте комбінатор фіксованої точки . Мені болить голова трохи подумати про інколи, тому я не впевнений, що я б назвав це інтуїтивно зрозумілим, але якщо ви вручну оціните це за допомогою деяких аргументів, ви можете побачити, що відбувається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.