Я пытаюсь понять, как работает лямбда-исчисление и как упростить или расширить различные утверждения.
Учитывая пример утверждения (λz.z) (λy.y y) (λx.x a)
Правильно ли я перевожу и упрощаю это утверждение?
Вот мое решение:
# (λz.z) (λy.y y) (λx.x a)
# F G H
# statement translates to -> F( G( H(x) ) )
f = lambda z: z
g = lambda y: (y, y)
h = lambda x: (x, 'a')
print(f(g(h('x')))) # -> (('x', 'a'), ('x', 'a'))
# so simplified statement = lambda x: (xa)(xa)