相关疑难解决方法(0)

如何为两个参数都具有相同类型的对编写monad实例?

假设我有一个对类型:

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类型是一个半群?

monads haskell

4
推荐指数
1
解决办法
124
查看次数

标签 统计

haskell ×1

monads ×1