2013-04-04 71 views
1

我知道這可能很簡單,但我在解決如何減少這個問題時遇到了問題。以下是我的等式。Lambda微積分的Beta縮減

(λx λy . y x) z 

我只是需要一個想法,從這裏開始,因爲我完全失去了。

回答

3

這拉姆達表達不syntacticly正確的,我想你的意思是寫:

(λx.λy.y x) z 

或者

(λxy.y x) z 

這是重要的,因爲一個有效的λ-expession是在形式λx。 M而不是λxM,或者使用語法糖,可以寫入λxy.M,但不能寫入λxλy.M,而這個(λx.λy.yx)會令人困惑,因爲它看起來像是一個應用程序。

我將減少通過應用x至λx.λy.y(λx.λy.y x) z(λx.λy.yx) z

1)(λx.λy.y x) z
2)降低(λx.λy.y x),所以(λx.λy.y x) z減小到λy.y z 3)通過施加Ž減少λy.y zλy.y z,結果將是z。

如果你的意思是(λx.λy.yx)ž

1)(λx.λy.yx) z 2)λx.(λy.yx) z 3)應用Z到第一層抽象:λy.yz 4)閒來無事減少的結果是:λy.yz

我建議你查看lambda-演算定義並理解應用程序,抽象和變量之間的差異。

還處於早期階段,最好使用()並始終以擴展的方式編寫lambda表達式,這樣您將減少錯誤。

0

您的lambda表達式可能需要兩個輸入參數,但只有一個輸入z。因此,這導致部分應用。

在你的情況下,這意味着參數x的值爲z。因此該表達式中x的所有出現都被z替換。然而,參數y沒有給出任何值,因爲沒有任何輸入,所以參數y保持綁定。如fsvieira所說,λy.yz是正確的答案。