为什么我没有因为使用“它”而得到 (Num (m0 b0)) 的实例
Why Am I Getting No instance for (Num (m0 b0)) arising from a use of ‘it’
我正在阅读“What I Wish I Know When Learning Haskell”,第 72 页上有这样一句话:
The first law is that when return a
is passed through (>>=)
into a function f
, this expression is exactly equivalent to 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
我做错了什么?
return 3 >>= (+1)
等价于3+1
,但是3+1
的类型应该是Monad m => m a
:(>>=) :: Monad m => m a -> (a -> m b) -> m b
要求右操作数是a接受 a
和 returns 和 m b
的函数。因此,它寻找一种方法将其视为 Num
ber,但这没有多大意义。
例如,您可以使用 print :: Show a => a -> IO ()
来打印结果,因此:
return 3 >>= <strong>print</strong> . (+1)
我正在阅读“What I Wish I Know When Learning Haskell”,第 72 页上有这样一句话:
The first law is that when
return a
is passed through(>>=)
into a functionf
, this expression is exactly equivalent tof
.
所以我正在尝试这样做:
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
我做错了什么?
return 3 >>= (+1)
等价于3+1
,但是3+1
的类型应该是Monad m => m a
:(>>=) :: Monad m => m a -> (a -> m b) -> m b
要求右操作数是a接受 a
和 returns 和 m b
的函数。因此,它寻找一种方法将其视为 Num
ber,但这没有多大意义。
例如,您可以使用 print :: Show a => a -> IO ()
来打印结果,因此:
return 3 >>= <strong>print</strong> . (+1)