2013-04-04 4 views
1

Я знаю, что это, вероятно, очень просто, но у меня возникают проблемы с выяснением того, как уменьшить это. Следующее - мое уравнение.Бета-редукция исчисления лямбда

(λx λy . y x) z 

Мне просто нужно знать, с чего начать, потому что я полностью потерян.

ответ

3

что лямбда-выражение не syntacticly правильно, я думаю, что ты хотел написать:

(λx.λy.y x) z 

Или

(λxy.y x) z 

Это важно, поскольку действительный лямбда-expession находится в виде Хх. M, а не λx M, или используя синтаксический сахар, вы можете написать λxy.M, но не λxλy.M, и это (λx.λy.yx) запутывает, потому что оно похоже на приложение.

Я уменьшит как (λx.λy.y x) z и (λx.λy.yx) z

1) (λx.λy.y x) z
2) уменьшают (λx.λy.y x) путем применения х к λx.λy.y, поэтому (λx.λy.y x) z сводится к λy.y z 3) снизить λy.y z путем применения г к λy.y z, то результат будет be z.

А если вы имеете в виду (λx.λy.yx) г

1) (λx.λy.yx) z 2) λx.(λy.yx) z 3) Нанести г на первой абстракции: λy.yz 4) Ничто, чтобы уменьшить результат не является: λy.yz

Я рекомендую вам посмотреть на определение лямбда-исчисления и понять разницу между приложением, абстракцией и переменной.

Также на ранних этапах лучше использовать() и всегда писать лямбда-выражения расширенным образом, поэтому вы будете делать меньше ошибок.

0

Ваше выражение лямбда может принимать два входных параметра, но предоставляется только один вход, z. Следовательно, это приводит к частичному применению.

В вашем случае это означает, что для параметра x задано значение z. Таким образом, все вхождения x в это выражение заменяются на z. Тем не менее, параметр y не получает никакого значения, так как нет никакого ввода влево, поэтому параметр y остается связанным.

λy.yz - правильный ответ, как сказал fsvieira.

Смежные вопросы