小编λ-d*_*tox的帖子

如何在 Haskell 中使用 Monad 类将函数映射到多个构造函数参数上?

我偶然发现的问题与>>=应用到这样的样本类型有关:

data ThreeArgs a = ThreeArgs a a a deriving (Show,Eq)

instance Functor ThreeArgs where
    fmap f (ThreeArgs a b c) = ThreeArgs (f a) (f b) (f c)

instance Applicative ThreeArgs where
    pure x = ThreeArgs x x x
    (ThreeArgs a b c) <*> (ThreeArgs p s q) = ThreeArgs (a p) (b s) (c q)
Run Code Online (Sandbox Code Playgroud)

我将声明一个 Monad 实例如下:

instance Monad ThreeArgs where
    return x = ThreeArgs x x x
    (ThreeArgs a b c) >>= f = …
Run Code Online (Sandbox Code Playgroud)

monads haskell functional-programming

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

标签 统计

functional-programming ×1

haskell ×1

monads ×1