Skip to content

Latest commit

 

History

History

readme.md

Оглавление

1. Постановка задачи
   1.1. Пример работы
2. Теория
   2.1. λ-исчисление
   2.2. Связь с рекурсивными функциями
   2.3. Примеры работы

1. Реализовать интерпретатор лямбда-исчислений

Программа должна уметь работать с вложенными лямбда-функциями, а также иметь графический интерфейс.

1.1. Пример работы

2. Теория

2.1. λ-исчисление
формальная система, разработанная американским математиком Алонзо Чёрчем, для формализации и анализа понятия вычислимости.

λ-исчисление может рассматриваться как семейство прототипных языков программирования. Их основная особенность состоит в том, что они являются языками высших порядков. Тем самым обеспечивается систематический подход к исследованию операторов, аргументами которых могут быть другие операторы, а значением также может быть оператор. Языки в этом семействе являются функциональными, поскольку они основаны на представлении о функции или операторе, включая функциональную аппликацию и функциональную абстракцию.


2.2. Связь с рекурсивными функциями
Рекурсия — это определение функции через себя; на первый взгляд, лямбда-исчисление не позволяет этого, но это впечатление обманчиво. Например, рассмотрим рекурсивную функцию, вычисляющую факториал:
f(n) = 1, if n = 0; else n × f(n - 1)

В лямбда-исчислении, Y g — неподвижная точка g; продемонстрируем это:

Y g
(λh.(λx.h (x x)) (λx.h (x x))) g
(λx.g (x x)) (λx.g (x x))
g ((λx.g (x x)) (λx.g (x x)))
g (Y g)

2.3. Пример
```text λx.λy.x+(5*y) 10 (λx.λy.y-x+10 5 (λu.u+8 1)) > 80

λx.λy.λz.x+y+z 1 (λx.x+2 3) 5

11

λx.λy.λz.x+y+y+z 1 2 3

8

<br>