(我確定這個網站上已經有這個答案了,但是搜索被C中的一個變量調用free()的概念所淹沒。)我遇到了「eta還原」這個術語,如果x是「M中不空閒」,則定義爲f x = M x ==> M。我的意思是,我認爲我理解它要說的內容的要點,看起來就像你將一個函數轉換爲無點風格時所做的一樣,但我不知道x是不是免費的限定詞意味着什麼。
考慮這個組合子: S (S K)
它應用到的參數XY: S (S K) X Y
它收縮到: X Y
我將S(SK)轉換爲相應的Lambda條款並得到了如下結果: (\x y -> x y)
我用哈斯克爾WinGHCi工具來獲得(\ x和y - > x和y)的類型簽名,它返回: (t1 -> t) -> t1 -> t
這對我來說很有意義。 接下來,我用WinGHCi得到S(S
可以通過高階函數在無類型lambda微積分中編碼各種類型。 Examples:
zero = λfx. x
one = λfx. fx
two = λfx. f(fx)
three = λfx. f(f(fx))
etc
true = λtf. t
false = λtf. f
tuple = λxyb. b x y
null = λp. p (λxy. false)