我有一个类型为a -> IO (Maybe b)
的函数,我想将其应用于IO (Maybe a)
并得到IO (Maybe b)
。我编写了一个函数来实现这个目标:
ioMaybeApply :: (a -> IO (Maybe b)) -> IO (Maybe a) -> IO (Maybe b)
ioMaybeApply f ioMaybeA = do
maybeA <- ioMaybeA
maybe (return Nothing) f maybeA
有一个标准的Haskell函数可以做到这一点吗?我尝试使用Hoogle搜索,但没有找到任何结果。如果没有,我的实现是否良好,或者是否可以更简单?
maybe :: b -> (a -> b) -> Maybe a -> b
不是一个IO
monad 吗? - Willem Van Onsemmaybe
返回return Nothing
(类型为IO (Maybe b)
)或者f
的返回值(也是IO (Maybe b)
)。@WillemVanOnsem - Michał Perłakowski