我正在阅读《学习 Haskell 时我希望知道什么》,第 72 页上有这样一句话:
\n\n\n第一定律是,当
\nreturn a传递(>>=)给函数时f,该表达式完全等价于f。
所以我正在尝试这样做:
\nreturn 3 >>= (+ 1)\nRun Code Online (Sandbox Code Playgroud)\n我得到
\n No instance for (Num (m0 b0)) arising from a use of \xe2\x80\x98it\xe2\x80\x99\n In a stmt of an interactive GHCi command: print it\nRun Code Online (Sandbox Code Playgroud)\n我究竟做错了什么?
\n相当于return 3 >>= (+1),3+1但 的类型3+1应该是 a Monad m => m a:(>>=) :: Monad m => m a -> (a -> m b) -> m b要求正确的操作数是一个接受 ana并返回 an 的函数m b。因此,它寻找一种方法将其视为Number,但这没有多大意义。
例如,您可以使用print :: Show a => a -> IO ()打印结果,因此:
return 3 >>= print . (+1)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |