在Haskell的單子,我可以很容易地定義操作(>=>)
爲:定義單子運營商
(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
f >=> g = \x -> f x >>= g
我也知道,(>>=)
可以使用(>=>)
表示:讓我們把(>>=)
爲(..)
:
(..) :: Monad m => m a -> (a -> m b) -> m b
m .. k = m >=> \_ -> k
然而有些事情是不正確的......有人能指出什麼嗎?
這可能只是一個複製粘貼的錯誤,但是您爲'(>> =)'使用了'(> =>)'簽名。 – duplode
@duplode難道這不正確嗎?我爲'(>> =)'創建一個別名爲'(..)',所以我想應用'(> =>)'操作符來定義'(..)'...有意義嗎? – cybertextron
它是有道理的;在你寫的問題中,'(>> =)'是'Monad m => ma - >(a - > mb) - > mb',類型是'(..):: Monad m = >(a→mb)→(b→mc)→(a→mc)。 – duplode