Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Джон Харрисон
Университет Кембриджа
10 сентября 2008 г.
Темы
Влияние λ-исчисления
4
true = λx y . x
4
false = λx y . y
4
not p = if p then false else true
4
p and q = if p then q else false
4
p or q = if p then true else q
Пары
Мы можем представить упорядоченные пары следующим образом:
4
(E1 , E2 ) = λf . f E1 E2
Для такого представления соответствующие деструкторы пар будут
выглядеть как:
4
fst p = p true
4
snd p = p false
Они работают как полагается
fst (p, q) = (p, q) true
= (λf . f p q) true
= true p q
= (λx y . x) p q
= p
Кортежи
(p)1 = fst p
и для i > 1:
Декаррированные функции
4
CURRYn f = λx1 · · · xn . f (x1 , . . . , xn )
4
UNCURRYn g = λp. g (p)1 · · · (p)n
UNCURRYn (λx1 · · · xn . t)
И мы получаем обобщённую β-конверсию:
Натуральные числа
0 = λf x. x
1 = λf x. f x
2 = λf x. f (f x)
3 = λf x. f (f (f x))
4 = λf x. f (f (f (f x)))
и так далее.
Инкремент
Следующая операция прибавляет единицу к нумералу Чёрча:
4
SUC = λn f x. n f (f x)
В самом деле:
Сложение
Сложение нумералов Чёрча определяется как
4
m + n = λf x. m f (n f x)
В самом деле:
m+n = λf x. m f (n f x)
= λf x. (λf x. f m x) f (n f x)
= λf x. (λx. f m x) (n f x)
= λf x. f m (n f x)
= λf x. f m ((λf x. f n x) f x)
= λf x. f m ((λx. f n x) x)
= λf x. f m (f n x)
= λf x. f m+n x
Умножение
Умножение определяется как
4
m ∗ n = λf x. m (n f ) x
В самом деле:
m∗n = λf x. m (n f ) x
= λf x. (λf x. f m x) (n f ) x
= λf x. (λx. (n f )m x) x
= λf x. (n f )m x
= λf x. ((λf x. f n x) f )m x
= λf x. (λx. f n x)m x
= λf x. (f n )m x
= λf x. f mn x
Декремент
f (Y f ) = Y f
fact = Y F
Let-выражения
Зачастую, удобно привязать выражение к некоторому имени, чтобы
избежать множества повторов одного и того же выражения. Введём
следующий вариант синтаксического сахара XXX:
4
let x = s in t = (λx. t) s
(λ(x1 , . . . , xn ). t) (s1 , . . . , sn )
let f = λx1 · · · xn . t
Рекурсивные let-выражения
равнозначно
let fact = Y F
Функциональные программы
Способ вычисления