相关疑难解决方法(0)

为什么 Hackage 上的对的 Monad 实例没有返回实现?

在写下这个答案时,主要是为了更好地理解对作为 monads 的理解,我偶然发现了我阅读的 Hackage 上的源代码Monad(,) a仅参考了这个实例

instance Monoid a => Monad ((,) a) where
    (u, a) >>= k = case k a of (v, b) -> (u <> v, b)
Run Code Online (Sandbox Code Playgroud)

在哪儿return???我希望能找到这样的东西

    return a = (mempty, a)
Run Code Online (Sandbox Code Playgroud)

除了上面的两行。这个定义是否return以某种方式隐含在其他事物中?或者它可能是在其他地方定义的?

monads haskell

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

同构对的 monad 实例的已知/已建立的用例

一旦我问了这个问题,这个问题就被正确地标记为与另一个问题重复。

现在我很好奇,一对同构类型的 monad 实例是否有任何已知的用例?

以下是它的实例:

data Pair a = Pair a a deriving Show

instance Functor Pair where
  fmap f (Pair a b) = Pair (f a) (f b)

instance Applicative Pair where
  pure a = Pair a a
  Pair f g <*> Pair x y =  Pair (f x) (g y)

instance Monad Pair where
    m >>= f = joinPair (f <$> m)

joinPair :: Pair (Pair a) -> Pair a
joinPair (Pair (Pair x …
Run Code Online (Sandbox Code Playgroud)

monads haskell

3
推荐指数
1
解决办法
166
查看次数

标签 统计

haskell ×2

monads ×2