monad-transformers

    11

    1答えて

    私はコンフィグレーションのためにReaderモナドを使用する次のコードを持っており、IO[Option[String]]も扱わなければなりません。私はencode関数の階段のコードで終わってしまいました。 は、どのように私は私のencode機能に醜いネストされたfor内包表記を避けるためにReaderとOptionTのためのモナド変換子を策定することができますか? def encode(fileN

    6

    1答えて

    一般的なテーマ:モナドを積み重ねるというアイデアは非常に魅力的ですが、コードの実行方法や層を実行するための適切な命令は何かを思い描いています。以下は、スタックの1つの例です:Writer、State、State、およびError(順序は特にありません)? ----------------------- -- Utility Functions -- ----------------------

    6

    1答えて

    なぜIOを除く内部モナドトランス環境で機能を実行するためにリフトを使用する必要はありませんか?つまり、私はStateT over WriterTとWriterT over ReaderTを持っていれば、なぜこれを行うことができますか? tell $ {- any code here for the Writer -} foo <- asks {- This for the reader -}

    7

    1答えて

    私は次しまったデータの種類:ISTATEのように定義されているFlowTのためのいくつかのリストなどモナドとMonadTransインスタンスを含むいくつかのレコードタイプがある data Flow a = Continue a | Return Value newtype FlowT m a = FlowT {runFlowT :: m (Flow a)} type IStateM a = F

    15

    1答えて

    ScalazのNonEmptyListにはモナドのインスタンスがあるので、モナドトランス(ListTに似ています)が可能であるはずです。あれは正しいですか? もしそうなら、そこに1つはありますか? (私はScalaz 7自体では見つけられませんでした) もしそうでなければ、それのモナド変圧器は不可能かどうかわかりませんが、私はなぜそうではないかについての追加の説明に感謝します。トラバースインスタン

    5

    1答えて

    をコンパイルしていない私はXFlexibleInstancesを追加する場合は、私にGHC 7.4.2 instance (MonadState s m) => MonadState s (MaybeT m) where get = lift get put k = lift (put k) との誤差を与え、 Illegal instance declaration for

    21

    2答えて

    モナディックスタックをどのように設計してビルドしますか?初めて、実際の世界の問題を解決するためにモナディックスタック(トランスを使用)を構築する必要がありますが、のトランスをスタックすることは完全にはわかりません。 いくつかの特定のトランスはの最上部にあるべきである:あなたが既に知っているように、限り、計算が親切* -> *を持っているように、基本的に何でもは、このような質問のカップルは、変圧器に

    7

    2答えて

    私はScalaz 7のEitherTを使ってStateと\ /をブレンドするfor-comprehensionsを構築しています。ここまでは順調ですね;私は基本的に何かを得る: State[MyStateType, MyLeftType \/ MyRightType] をし、それは私がのために、内包<の左側にある素敵な変数を持って構築することができます - 。 しかし、私は状態アクションからタ

    7

    1答えて

    無料のプロキシトランスが可能ですか?何かのように data FreePT f p a' a b' b m r = .... instance (Proxy p,Functor f) => Proxy (FreePT f p) where .... instance (Functor f) => ProxyTrans (FreePT f) where .... これは

    10

    1答えて

    私はモナド変圧器を初めて使用しています。 私は値val :: MaybeT IO Stringと機能fn :: String -> IO [String]を持っています。 バインド後、私はval >>= liftM fn :: MaybeT IO (IO [String])を持っています。重複するIOモナドを削除し、タイプMaybeT IO [String]の結果を得るにはどうすればよいですか?