我目前擁有Haskell大學。考慮下面的Haskell代碼:haskell的布爾邏輯和類型
true::t -> t1 -> t
true = (\x y -> x)
false::t -> t1 -> t1
false = (\x y -> y)
-- Implication
(==>) = (\x y -> x y true)
的任務是確定的功能(==>)
的類型。 GHCi說它是(==>) :: (t1 -> (t2 -> t3 -> t2) -> t) -> t1 -> t
。
我可以看到,評估順序如下(作爲類型保持不變):
(==>) = (\x y -> (x y) true)
因此函數true
IST參數(x y)
。
任何人都可以解釋爲什麼結果類型t綁定到第一個參數的結果,以及在哪種方式GHCi確定(==>)
的類型?
這可能會有所幫助:http://lucacardelli.name/Papers/BasicTypechecking.pdf它解釋說,GHC用來推斷和檢查類型的東西(當然真正的算法是更基本的算法複雜,但這適用於您的示例) – Wes
x的返回類型是==>的返回類型,因爲x是最外層的函數,我認爲。 – user3001