我有一个类型
data Maybe a = Nothing | Just a
我需要验证以下类型构造函数Maybe是否为Monad
instance Monad Maybe where return x = Just x Nothing >>= f = Just (f (Nothing)) (Just x) >>= f = f x
请给我一些指示如何做上述任务.
谢谢
为此,您必须验证monad法律.它们有几种(等效的)形式,最接近Haskell monads
x >>= return = x return x >>= f = f x (x >>= f) >>= g = x >>= (\y -> f y >>= g)
从第一次启动并应用定义为>>=
和return
.您可能希望通过案例进行:要么x
是Nothing
或者是Just a
对于一些价值a
...