私はモナドトランスフォーマーが初めてなので、簡単な質問で申し訳ありません。私には価値val :: MaybeT IO String
と機能がありますfn :: String -> IO [String]
。だから、バインドした後、私は持っていval >>= liftM fn :: MaybeT IO (IO [String])
ます。重複した IO モナドを削除して type の結果を取得するにはどうすればよいMaybeT IO [String]
ですか?
1 に答える
13
の代わりにlift
(または) を使用します。liftIO
liftM
> :t val >>= lift . fn
val >>= lift . fn :: MaybeT IO [String]
liftM
モナドに純粋関数を適用するためのものです。アクションを変圧器に持ち上げるためのものです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
于 2013-05-19T17:22:48.777 に答える