KAc*_*ion 10 io monads haskell monad-transformers maybe
我是monad变形金刚的新手,很抱歉这个问题很简单.我有价值val :: MaybeT IO String和功能fn :: String -> IO [String].所以绑定后,我有val >>= liftM fn :: MaybeT IO (IO [String]).如何删除重复的IO monad并获取类型的结果MaybeT IO [String]?
ham*_*mar 13
使用lift(或liftIO)代替liftM.
> :t val >>= lift . fn
val >>= lift . fn :: MaybeT IO [String]
Run Code Online (Sandbox Code Playgroud)
liftM用于在monad中应用纯函数.lift并且liftIO对于提升行动统一到一个变压器.
liftM :: Monad m => (a -> b) -> m a -> m b
lift :: (Monad m, MonadTrans t) => m a -> t m a
liftIO :: MonadIO m => IO a -> m a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |