monad-transformers

    7

    2答えて

    に外モナドの更新: f2 :: Writer [String] b : f1 :: WriterT [String] (Either String) a 私はいくつかのログを失敗したがいません機能を持っています f2のログを使ってf1のライターモナドを更新し、f2計算の出力をキャプチャする最良の方法は何ですか?現時点では私はこれをやっている:私は作家を中心に切り替え、どちらかのモナドは、問

    14

    1答えて

    リストモナドトランスを使う必要があります。 IOは可換ではないので、ListT IOからControl.Monad.Listの潜在的な問題があることを読んだので、ListT done rightを見ています。しかし、予期しない動作が起こっています。 Control.Monad.List使用 test = runListT $ do x <- liftList [1..3] li

    6

    2答えて

    現在、私はListTモナドトランスを多用しているプロジェクトを書いています。プレーン・リストを使用する場合、非決定性の実装は非常に簡単です。しかし、一度コードをListTに変換しなければならないと、はるかに複雑になりました。。 簡単な例として:ListT aに[a]からの変換は、実際には2つの機能を構成する必要があります。 conv :: (Monad m) => [a] -> ListT m a

    5

    1答えて

    変換されたモナドがインスタンスの場合、モナドトランスをMonadErrorのインスタンスにしたいと思っています。 MonadError e m => MonadError e (StateT s m) 私はこれをやってみました::基本的に私は、内蔵の変圧器は、例えばStateTためMonadErrorインスタンスが存在しないと私の変圧器が動作するようにしたい instance MonadErr

    3

    1答えて

    私はHappstackサーバーを作成しており、接続するMongoDBデータベースがあります。それは、これがすべてでpoolを運ぶために必要とは明らかです runDB :: (MonadIO m) => MongoPool -> Action IO a -> m (Either Failure a) runDB pool f = liftIO $ do pipe <- runIOE $

    1

    1答えて

    私は現在、私が履修しているコースのための小さなコンパイラを書いています。だから私はtypecheckingを処理するためにこのモナド変圧器を書いて始めましたが、非常に暗い型のエラーがありました。機能的な依存関係を含む何か、私はそれほどよく知らない。 エラーを再現することができますプログラムからの小さな抜粋: import Control.Monad.RWS.Lazy import qualifi

    10

    3答えて

    で混乱が、私はエラーを返すことができるものにリストの内包表記を行うためのseq-Mおよびエラー-Mを構成しようとしています。私の出力には予期しないタイプがありますが、それ以外は実際には分かりやすいようです。私は下のコードを分解しましたが、ここにはworking gistもあります。ここ は私のモナドのビジネスロジックが def get_loan(name): m_qualified_am

    2

    1答えて

    私は、プログラムの異なるレベルでコントロール構造のための2つの型宣言を持っています。下の1つはAgent、StateT、IOの機能です。もう1つはでAgentの機能を持ち、3番目の機能はです。 type Agent = StateT AgentState IO type Plan = ErrorT PlanError (StateT PlanState Agent) Planを評価する最も良

    8

    2答えて

    内フォークする方法、Jで {-# LANGUAGE GeneralizedNewtypeDeriving #-} ... newtype J = J { runJ :: ErrorT Foo (StateT Bar IO) a } deriving (Applicative, Functor, etc) そして、いくつかの機能を言う: peekNextQuux :: J Quux pee

    11

    1答えて

    モナドのスタックがある場合は、IO,State、Errorと、IOとErrorという関数を使用するといいでしょう。私は私の機能を使用することができるので、スタックから "State"のモナドを "削除"する方法はありますか?注文がIO,Error,Stateの場合、種類に合わせてliftを使用できますが、モナドのスタックにIOとErrorが含まれていて、おそらく他のモナドが何らかの順序で含まれてい