問題タブ [kleisli]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - オプションを返す関数の作成
type の関数がいくつかあるとしますInt => Option[Int]。
>=>次のように構成できます。
リストからすべての関数を作成する必要があるとします。
私はそれを行うことができmapますreduce:
それ(composed上記)を単純化できますか?
scala - Scalaz に >=> A => M[A] の半群がないのはなぜですか?
これは私の前の質問のフォローアップです
Kleisli<=<(compose) と>=>(andThen)の 2 つの演算子を定義します。私にとっては非常に自然に見えますが、どのように役立つ>=>かわかりません。<=<
>=>また、半群がないように見えますA => M[A]が、<=<半群は存在します。
その背後にある理論的根拠は何ですか?
haskell - なぜクライスリはモノイドのインスタンスではないのですか?
タイプ (a -> mb) の 2 つの関数を追加して、両方の結果を追加する同じタイプの関数を 1 つだけ取得する場合は、Kleisli を使用できます。
ただし、現在、 で定義されているそのようなインスタンスはありませんControl.Arrow。Haskell ではよくあることですが、正当な理由があるのではないかと疑っていますが、どれかを見つけることができません。
ノート
この質問は、この質問にかなり似ています。ただし、モノイドでは、次のようなインスタンスを定義する方法がわかりません。
すでにインスタンスがあるため:
scala - Scala で Kleisli と Reader モナドを作成する
次のような関数があるとします。
それらを構成して、 、 、および を順番fooXAD: X => A => Try[D]に呼び出しfooXAB、それらすべてに引数を渡す新しい関数 を作成したいと思います。fooXBCfooXCDX
scalazのモナドインスタンスを使用して持っているとしますscala.util.Try。今、私はこのようにすることができます:
それは理にかなっていますか?それを単純化することは可能ですか?
scala - Scala で Writer と Kleisli を使用して XML を検証する
これは私の前の質問のフォローアップです
次のような XML を検証する必要があるとします。
ルート要素にラベルがあり、この順序でa子<a1>xxx</a1>、があることを確認する必要があります。<a2>yyy</a2><a3>zzz</a3>
List[String]エラーを収集し、次のような単一の XML 要素を検証する関数を定義するために使用したいと思います。
これで、特定の XML 要素のラベル、テキスト、および属性を検証する関数を作成できるようになりました。
はモノイドである|+|ため、これらの関数を構成できます。ValidateSingleElement
ここで、特定の要素の子を検証する関数が必要です。このような関数を作成するには、要素 のシーケンスを検証する別の関数が必要です
はValidateElements次のように定義されます。
一連の要素をトラバースしながらエラーを収集するためにList[String]andモナドを使用しています。Writer
これで、特定の要素の子を検証する関数を作成できます。
...そして、シーケンスの最初の要素を検証します:
ValidateElements最後に、次のように再定義できますKleisli
...そして、関数の代わりにchildを返すように書き直します。Kleisli
childとchildren私が書くことができる両方を考えると、a上記の XML の検証関数:
それは理にかなっていますか?このデザインをどのように修正/拡張しますか?