应该绑定结果Monad?

cam*_*mil 4 monads haskell

以下是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)

Hac*_*man 9

是! 你的结果是monad是正确的,但要记住>>=运算符的类型:m a -> (a -> m b) -> m b.然后,我们猜想,f有一个类型a -> m b,因此应用fx回报单子结果.

  • 欢迎来到StackOverflow! (2认同)