我正在閱讀Programming in Haskell書籍和測試,它提供了GHCi口譯員的例子。事實證明,GHCi和Hugs解釋器中的Int類型行爲存在差異。根據「Haskel編程」第3章,2^31 :: Int應該超出Int類型的範圍。同時,在GHCI解釋,我得到: Prelude> 2^31 :: Int
2147483648
而擁抱它的行爲就像書上說: Hugs> 2^31 :: In
TL; DR:什麼會導致GHCi中的類型不匹配錯誤純粹是由於函數組合?這是奇怪地看到GHCI評估以下代碼: foldl (a . b . c) crackle pop <- GHCi evaluates this`
......之後我們試圖評估以下只給一個錯誤: let snap = a . b . c <- GHCi evaluates this
foldl snap crackl
啓用語言擴展TypeOperators時,可以定義自己的類型運算符。另外,可以將它們的相對優先級設置爲infix*。但是,例如(->)的優先順序是什麼? > :i (->)
data (->) a b -- Defined in `GHC.Prim'
instance Monad ((->) r) -- Defined in `GHC.Base'
instance Functor ((->)