monad-transformers

    1

    1答えて

    私はリストモナドList[Int]を持っています。私は、リストの値に基づいてエフェクト(Disjunctionとstate)を生成したい。ここに私のモナドスタックと、モナドスタックを実行するコードがあります。私の質問は、私が正しい効果を生成できるようにcheckNumを定義する適切な方法でなければならないものです。 私の予想される出力は、私の意見checkNumで List(("", \/-(1)

    0

    2答えて

    私は数種類の例外を投げる計算をしています。 1つ1つを評価せずにdoブロック内でそれらを連鎖させ、結果をEither ex resultとしてパターン一致させるにはどうすればよいですか? type IntComp ex = ExceptT ex IO Int local :: IntComp IOException local = ExceptT $ map length <$> tryIO

    3

    2答えて

    私はMonadTransのいくつかの事例を見てきましたが、MaybeTの実装は次のようになります。 instance MonadTrans MaybeT where lift = MaybeT . liftM Just 私はMonadIOのインスタンスは、内側からリフトの可変数を行うために使用されて理解したようほとんどの場合、IOモナドは直接最外にあります。 MaybeTケースの場合

    4

    2答えて

    最初にエラーが発生した後に検証が停止するように、以下の検証関数を記述しようとしています。返品タイプはthreeで、他の機能と異なります。このコードをコンパイルするために使用するモナド・トランスはどれですか? import scalaz._ import Scalaz._ import scala.concurrent.Future import scala.concurrent.Execut

    1

    1答えて

    に終了し、私は種類を作成し それらを配列決定し、問題を持っていないので、タイプOptionT [州立[_]、T]のモナドを組み合わせる方法OptionTBitSetState[T] I署名付き機能ステップを有する import scalaz._, Scalaz._ import scala.collection.immutable.BitSet type BitSetState[T] = S

    1

    1答えて

    HaskellのエラーモナドとIO Monadを組み合わせたいと思います。ここに私のコードからの抜粋です: type AskMonad = ErrorT String IO askSomething :: AskMonad Direction askSomething = do liftIO $ putStrLn "Choose an element from the list [

    20

    1答えて

    (スライド88)で、StateのパターンがEitherの下にあると、Writerのような別のタイプの状態を追加することをお勧めしますか?フェール・ファーストの動作をEitherflatMapに利用するには、新しい状態が既存のStateとEitherの間になければならないようです。 以下は、Scalaz 7.2.8で2.11.8で動作するように調整されたプレゼンテーションのコードの実行可能な例です。

    3

    1答えて

    と答えましょう。私はFuture[Either[_, _]を返す関数を持っていて、これらの関数のいくつかを失敗の場合に適用したいとしましょう。簡略化された例は次のとおりです。 def operation1: Future[Either[String, Int]] = Future.successful(Right(5)) def operation2: Future[Either[String,

    1

    1答えて

    私は、提示されたアイデアに従ってモナドトランスを使用して小さなDSLを書いています ここにhere。 イラストレーションのために、ここでは小さなサブセットを示します。 class Monad m => ProjectServiceM m where -- | Create a new project. createProject :: Text --^Name of the p

    5

    1答えて

    StateT g (Either E) TをExceptT E (StateT g Identity) Tに変換するには? 恐らく、traverseとhoistのいくつかの組み合わせが役に立つでしょう。