monad-transformers

    4

    2答えて

    私はこのコードをscalaz7 IOとモナド変圧器を使ってエレガントな純粋な関数形式で書く方法を考え出していますが、頭をかぶっていません。この関数はfindProfileが含まれている -あなたが気づいたよう val profileT = for { uuid <- OptionT(Future.successful(findUuid(request))) profile <-

    4

    1答えて

    Yesodは、warpのポートを通じて外部から要求されたときはいつでも、Webページ(Widgetから構築)をHTMLにレンダリングするのが非常に簡単です。なぜなら、それはもちろん、正確には、通常はにはHTMLが必要です。 しかし、通常のHandlerの設定とは独立して生成された「内部目的」のHTMLのコピーが必要な場合はどうなりますか? Widgetは本質的に単なるリーダー/ライターの組み合わせ

    4

    1答えて

    ショートバージョン:私はタイプMaybeT (State <type>)()のモナドにrunMaybeT、その後runStateを使用するときに何の状態変化がMaybe結果がJust()に等しいであっても発生しないように、それが見えます。どうして? フルバージョン:私はハノイの塔を解決するプログラムを書いています。私がしたかった、そして、 Towers [] [] [1,2,3,4,5] :こ

    1

    1答えて

    私はFuture [Either [String、A]]型を返す複数の関数を使用するコードを整理しようとしています。 これらの関数は、未来の中でピークを迎えなければならないという問題と、値を取得するためにEitherの内部で問題が発生するため、きれいには構成されません。 EitherTモナドトランスを使用した後、私は、どちらかを追加する必要があり、最終結果を得るときに '実行'を呼び出す余分なステ

    1

    1答えて

    これはもう少し長くなるはずです。 calledFunction :: (MonadReader env m, HasToken env, MonadIO m) => m (Either MyError MyResult) calledFunction2 :: (MonadReader env m, HasToken env, MonadIO m) =>

    5

    1答えて

    私はContのモナドトリックで、hereと記載されており、this SO questionに入っています。 この機能を使用すると、違ったことを行うことができるようにパラメータを取って、あなたが以前の計算での「バックジャンプ」することができます: import Control.Monad.Cont import Control.Monad.State.Strict import Control.

    -2

    1答えて

    私はアクションの実行を強制的に強制して、IOアクションを得なければならない場所で、Control.Monad.Exceptを使用しています。なぜこれが必要なのか疑問に思っているのは、実行する必要のあるライブラリ関数がIOアクションのみを受け入れるためです。この場合は、Database.PostgreSQL.Simple.withTransaction :: Connection -> IO a -

    4

    1答えて

    "モナドは、プログラマが順次ビルディングブロックを使用して計算を構築することを可能にする"ので、いくつかの計算を組み合わせることができます。この場合、次のコードを実行できない理由は何ですか? import Control.Monad.Trans.State gt :: State String String gt = do name <- get putStrLn "HI

    1

    2答えて

    私はゲームプロトタイプを作って、できるだけ純粋なものにしようとしています。 すべてのユースケースは、1つのシナリオに適合している - は1つが、いくつかの出力を生成することができます更新中に、いくつかのビジネス・ロジックに保管 で 更新プレーヤーを実行ストレージ でプレイヤーを探してみてください - ログメッセージ、他のプレイヤーへのメッセージなど 環境(データベース、リソースなど)、グローバルゲ

    6

    2答えて

    モナド・トランスを学んでいますが、リフトを使う必要があるときは混乱しています。 次のコードがあるとします(これは面白いことではありません。デモンストレーションでは最も簡単なコードです)。 foo :: Int -> State Int Int foo x = do (`runContT` pure) $ do callCC $ \exit -> do when (