問題タブ [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.

0 投票する
1 に答える
1170 参照

scala - この構成を単純化するためにモナド変換子を使用できますか?

私が持っていると仮定します

タイプの結果を取得したいのですVS[Option[B]]が、vが a のSuccess(None)場合、結果もSuccess(None). 次に例を示します。

それで:

成功例は次のとおりです。

空のケースは次のとおりです。

これを行うための「より良い」方法はありますか (おそらく kleisli コンポジションまたはモナド トランスフォーマーを含む)?

0 投票する
1 に答える
705 参照

haskell - クライスリの矢印をIOに持ち上げますか?

次の2つのクライスリ矢印がある場合:

私は次のような何かを書くことができるようにしたいと思います:

Stringと一致しないため、もちろん機能しませんIO String。一方、両方を定義してタイプにすることは可能ですstdoutProcessAwriteToFileA、その場合、他のものに必要なKleisli IO ...タイプの矢印でそれらを構成することはできません。Kleisli Maybe ...

私はまだ矢印の経験があまりないので、おそらく明らかな何かが欠けています。上記をどのように行うのでしょうか?

0 投票する
4 に答える
3186 参照

haskell - モナドでクライスリの矢印を使用するには?

Haskell のControl.Arrowドキュメントでは、Kleisli の矢印とモナドの関係について説明していますが、これをどのように使用するかは私には明らかではありません。私は IO モナドを除いて矢印に合うと思う関数を持っているので、Kleisli の矢印が役立つと思います。

ディレクトリの元のファイル名と変更されたファイル名のペアを返す次の関数を使用します。

それを描くとしたら、次のようになります。

ここに画像の説明を入力

Kleisli の矢を使用すると効果があると思いますが、方法がわかりません。誰でもガイダンスを提供できますか?

0 投票する
1 に答える
634 参照

scala - Kleisli はファンクター、アプリカティブ、またはモナドですか?

この質問は、私の前の質問に寄せられたフィードバックに触発されています

ScalazKleisli[M[_], A, B]関数のラッパー クラスを提供しますA => M[B]

Kleisli[M[_], A, B]が半群ならM[_]半群です。それM[_]が関手であるとします。Kleisliファンクターでもあるのは正しいですか?M[_]applicative または monad の場合はどうなりますか?

0 投票する
1 に答える
1879 参照

scala - Scalaz Kleisli の使用上のメリット

In scalaz Kleisli[M[_], A, B]は のラッパーでありA => M[B]、そのような関数の合成を可能にします。たとえば、 if M[_]is モナドを構成Kleisli[M, A, B]してKleisli[M, B, C]with >=>to get を作成できますKleisli[M, A, C]

一言で言えば、に応じてKleisliファンシーを提供します。それが正しいか ?を使用する他の利点はありますか? andThensMKleisli

0 投票する
1 に答える
1818 参照

scala - Kleisli、ReaderT、Reader が Scalaz で同じなのは単なる偶然か

スカラスで

  • Kleisli[F, A, B]のラッパーですA => F[B]
  • ReaderT[F, A, B]-- リーダー モナド トランスフォーマー -- は単に のエイリアスですKleisli[F, A, B]
  • Reader[A, B]monad はReaderTwith identity monad Id:の特殊化です
    type Reader[A, B] = ReaderT[Id, A, B]

それは単なる偶然なのか、それとも Scalazで 、、が同形であるより深い理由があるのでしょうか?KleisliReaderTReader