我正在尝试理解这个<=<功能:
ghci> :t (<=<)
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
Run Code Online (Sandbox Code Playgroud)
据我了解,我给它2个函数和一个a,然后我会得到一个m c.
那么,为什么这个例子不编译?
import Control.Monad
f :: a -> Maybe a
f = \x -> Just x
g :: a -> [a]
g = \x -> [x]
foo :: Monad m => a -> m c
foo x = f <=< g x
Run Code Online (Sandbox Code Playgroud)
因为foo 3,我希望Just 3结果.
但我得到这个错误: …
haskell ×1