リストモナドトランスを使う必要があります。 IOは可換ではないので、ListT IOからControl.Monad.Listの潜在的な問題があることを読んだので、ListT done rightを見ています。しかし、予期しない動作が起こっています。 Control.Monad.List使用 test = runListT $ do
x <- liftList [1..3]
li
現在、私はListTモナドトランスを多用しているプロジェクトを書いています。プレーン・リストを使用する場合、非決定性の実装は非常に簡単です。しかし、一度コードをListTに変換しなければならないと、はるかに複雑になりました。。 簡単な例として:ListT aに[a]からの変換は、実際には2つの機能を構成する必要があります。 conv :: (Monad m) => [a] -> ListT m a
変換されたモナドがインスタンスの場合、モナドトランスをMonadErrorのインスタンスにしたいと思っています。 MonadError e m => MonadError e (StateT s m)
私はこれをやってみました::基本的に私は、内蔵の変圧器は、例えばStateTためMonadErrorインスタンスが存在しないと私の変圧器が動作するようにしたい instance MonadErr
私はHappstackサーバーを作成しており、接続するMongoDBデータベースがあります。それは、これがすべてでpoolを運ぶために必要とは明らかです runDB :: (MonadIO m) => MongoPool -> Action IO a -> m (Either Failure a)
runDB pool f = liftIO $ do
pipe <- runIOE $