相关疑难解决方法(0)

用`<= <`编写Monadic函数

我正在尝试理解这个<=<功能:

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

2
推荐指数
1
解决办法
152
查看次数

标签 统计

haskell ×1