假设我有一个对类型:
data Pair a = Pair a a
Run Code Online (Sandbox Code Playgroud)
为它编写monad实例的正确方法是什么?我的想法大致是这样的:
instance Semigroup a => Semigroup (Pair a) where
Pair a1 a2 <> Pair b1 b2 = Pair (a1 <> b1)(a2 <> b2)
instance Monad Pair where
return = pure
(Pair a b) >>= f = f a <> f b
Run Code Online (Sandbox Code Playgroud)
这是对的吗?如果是这样,那么在对中指定b型中的b类型是一个半群?