我正在閱讀“我希望在學習 Haskell 時知道的內容”,在第 72 頁上有這樣的宣告:
第一條定律是當
return a被傳遞(>>=)到一個函式中時f,這個運算式完全等價于f。
所以我正在嘗試這樣做:
return 3 >>= ( 1)
我得到
No instance for (Num (m0 b0)) arising from a use of ‘it’
In a stmt of an interactive GHCi command: print it
我究竟做錯了什么?
uj5u.com熱心網友回復:
Thereturn 3 >>= ( 1)等價于3 1,但是 of 的型別3 1應該是 a Monad m => m a:(>>=) :: Monad m => m a -> (a -> m b) -> m b要求右運算元是一個接受 ana并回傳 an的函式m b。因此,它尋找一種將其視為錯誤的方法Num,但這沒有多大意義。
例如,您可以使用print :: Show a => a -> IO ()列印結果,因此:
return 3 >>= print . ( 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/432687.html
