Лямбда-числення: відмінності між версіями

[перевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
категоризація
Рядок 5:
Ядро λ-числення ґрунтується трохи більше ніж на визначені [[змінна|змінних]], області видимості змінних та впорядкованому заміщенні змінних виразами. λ-числення є замкненою мовою, тобто, [[семантика]] мови може бути визначена на основі еквівалентності виразів (або термів) самої мови.<ref>Kluge 2005, сторінка 51.</ref>
 
== ЗаписВизначення лямбда-виразів ==
 
Вони не такі складні, як здаються на перший погляд. Просто треба трохи звикнути до префіксної форми запису. Більше немає ні інфіксних (<math>+,\, -</math>), ні постфіксних (<math>x^2</math>) операцій. Крім того, аргументи функцій просто записуються в список після функції, розділені пропуском. Тому всюди, де математики пишуть <math>\sin(x)</math>, в лямбда-численні пишуть <math>\sin x</math> (хоча математики самі часто грішать опусканням дужок. Програмісти в цьому плані культурніші). Так само замість <math>x\ +\ y</math> пишуть <math>+\ x\ y</math>, а замість <math>x^2</math>&nbsp;— <math>*\ x\ x</math>.
Множину λ-вираз можна визначити індуктивно:
 
* будь-яка ''змінна'' - це λ-вираз;
* <math> \lambda </math>-''абстракція'' <math> \lambda x.M </math> - це λ-вираз, якщо 'x' - це змінна, а M - λ-вираз;
* ''аплікація'' MN - це λ-вираз, якщо M та N - це λ-вирази.
 
Наприклад, <math> \lambda x.x </math> - це λ-вираз, що відповідає функції ідентичності, <math> \lambda x.x M </math> - це аплікація цієї функції до M, якщо M - це λ-вираз.
 
Інтуїтивно, абстракції відповідають функціям, а аплікації їх застосуванню. Особливістю лямбда-числення є те, що аргументи "функцій", визначених таким чином, - це теж функції.
 
Вониλ-вирази не такі складні, як здаються на перший погляд. Просто треба трохи звикнути до префіксної форми запису. Більше немає ні інфіксних (<math>+,\, -</math>), ні постфіксних (<math>x^2</math>) операцій. Крім того, аргументи функцій просто записуються в список після функції, розділені пропуском. Тому всюди, де математики пишуть <math>\sin(x)</math>, в лямбда-численні пишуть <math>\sin x</math> (хоча математики самі часто грішать опусканням дужок. Програмісти в цьому плані культурніші). Так само замість <math>x\ +\ y</math> пишуть <math>+\ x\ y</math>, а замість <math>x^2</math>&nbsp;— <math>*\ x\ x</math>.
 
Хоча дужки таки не пропадають. Вони використовуються для групування. Наприклад математичний вираз <math>\sin (x) + 4</math> в лямбда-численні записується як <math>+\ (\sin x)\ 4</math>.