Основне питання:
Що робить для нас обчислення лямбда , що ми не можемо виконати основні властивості функції та позначення, як правило, вивчені в алгебрі середньої школи?
Перш за все, що означає абстрактне в контексті обчислення лямбда? Моє розуміння слова абстрактне - це те, що відокремлено від механізму, концептуального резюме поняття.
Однак лямбда-функції, усуваючи імена функцій, запобігають певному рівню абстракції. Наприклад:
f(x) = x + 2
h(x, y) = x + 5 y
Але навіть не визначаючи механізм цих функцій, ми можемо легко говорити про їх склад. Наприклад:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
Ми можемо включити аргументи, якщо хочемо, або можемо повністю абстрагуватися, щоб дати огляд того, що відбувається. І ми можемо швидко звести їх до однієї функції. Давайте розглянемо композицію 2. У мене можуть бути деталі для учнів, які я можу написати, залежно від мого акценту:
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
Виконаємо вищезгадане з обчисленням лямбда або хоча б визначимо функції. Я не впевнений, що це правильно, але я вважаю збільшення першого та другого виразів на 2.
(λuv.u(u(uv)))(λwyx.y(wyx))x
І помножити на 5y.
(λz.y(5z))
Замість того, щоб бути абстрактним, це, здається, потрапляє в саму техніку того, що означає додавати, примножувати і т. Д. Абстракція, на мій погляд, означає більш високий рівень, а не нижчий рівень.
Крім того, я намагаюся зрозуміти, чому числення лямбда - це навіть річ. У чому перевага
(λuv.u(u(uv)))(λwyx.y(wyx))x
над
h(x) = x + 5 y
або комбіноване позначення
Hxy.x+5y
або навіть позначення Хаскелла
h x y = x + 5 * y
Знову ж таки, що робить для нас обчислення лямбда, що ми не можемо виконати властивості функції f (x) -style та позначення, з якими багато хто знайомий.