雖然在Haskell寫一些lambda函數,我本來寫類似的功能: tru = \t f -> t
fls = \t f -> f
不過,我很快就從例子中注意到網上,這樣的功能是經常這樣寫: tru = \t -> \f -> t
fls = \t -> \f -> f
具體,傳遞給函數的每個項目都有自己的\和->而不是上面的。當檢查它們的類型時,它們看起來是相同的。我的問題是,它們是否
讓我們將[x |-> v] t表示爲「用v替換x中的所有空閒事件」。 我的教科書的替代規則是 [x |-> v] x=v
[x |-> v] y=y (where y is not x)
[x |-> v] (function x -> t) = (function x -> t)
[x |-> v] (function y -> t) (where y is not x) =
我正在閱讀Pierce的類型和編程語言書籍,在關於遞歸類型的章節中他提到可以用類型化語言對動態lambda積分進行編碼。作爲練習,我試着寫在Haskell該編碼,但我不能讓它通過typechecker:眼下 {-# LANGUAGE RankNTypes, ScopedTypeVariables #-}
data D = D (forall x . x -> x)
lam :: (D ->