为什么 Hackage 上 pair 的 Monad 实例没有 return 的实现?
Why Monad instance of pair on Hackage has no implementation for return?
在我阅读的 Hackage 上写下 (,) a
的 Monad
实例
instance Monoid a => Monad ((,) a) where
(u, a) >>= k = case k a of (v, b) -> (u <> v, b)
return
在哪里???我希望找到这样的东西
return a = (mempty, a)
除了上面两行。 return
的这个定义是否以某种方式暗示了其他东西?或者它可能在其他地方定义?
在 Haskell 的现代版本中(具体来说,base
版本 4.8.0.0 及更新版本,对应于 GHC 版本 7.10.1 及更新版本),the Monad
class has the default implementation return = pure
, so instances of it only need to define >>=
. This was a result of the Functor-Applicative-Monad Proposal.