以下是Haskell教程中的示例
instance Monad Maybe where
return x = Just x
Nothing >>= f = Nothing
Just x >>= f = f x
fail _ = Nothing
Run Code Online (Sandbox Code Playgroud)
但是,我对这Just x...条线很困惑.结果不应该是monad吗?我期待这条线
Just x >>= f = Just (f x)
Run Code Online (Sandbox Code Playgroud)
是! 你的结果是monad是正确的,但要记住>>=运算符的类型:m a -> (a -> m b) -> m b.然后,我们猜想,f有一个类型a -> m b,因此应用f到x回报单子结果.