kleisli

    2

    1答えて

    私は2つの関数val f: A => M[B]とval g: B => M[C]を持っているとしましょう。ここでMはモナドです。だから私はkleisliを使ってそれらを組み合わせたいと思う。 私が現在行っていることは次のとおりです:kleisliU(f) andThenK g しかし、私は最初にkleisliに手作業でラップせずにこの組み合わせを実行する方法を見つけられませんでした。 f <???

    1

    1答えて

    既存のコンビネータやより良い書き方がありますか? def combine[I, A](k: Kleisli[Try, I, A], default: A) : I => A = k.run.andThen(_.getOrElse(default))

    7

    4答えて

    Haskell Control.Arrowのドキュメントでは、Kleisliの矢印とモナドの関係について語っていますが、これをどのように使用するかはわかりません。私はIOモナドを含むそれ以外の矢印と合っていると思う関数を持っているので、Kleisliの矢印が役立つかもしれないと思う。 ディレクトリの元のファイル名と変更されたファイル名のペアを返す次の関数を実行します。 import System.

    6

    1答えて

    は、私がタイプVS[Option[B]]の結果を取得したいが、vがSuccess(None)であれば、結果もSuccess(None)する必要があります私は type VS[A] = Validation[String, A] val v: VS[Option[A]] val f: A => VS[B] があるとします。ここでは例です:その後 scala> val v: VS[Optio

    5

    1答えて

    本の設計原理は、ファンクショナル&リアクティブモデルです。 だから、すべてサービスメソッドはKleisliを返します。 質問はどうすれば更新可能なキャッシュをこれらのサービスに追加できますか? ここに私の現在の実装があります。既存のコンビネータ、より機能的なアプローチなどがありますか? import scala.concurrent.duration.Duration import scala.