問題タブ [reader-monad]

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 に答える
260 参照

haskell - Reader モナドを使用する Haskell 関数のリファクタリング

私の質問に関係のないすべてのコードを無視して、次のようなコードがあります。

これをリファクタリングする方法はありますか?具体的には、ネストされたbar'関数が最も気になります。これを1行に凝縮できますか?

0 投票する
0 に答える
46 参照

haskell - Scotty と Reader モナド

内部で URL を展開するための統一されたルート パスを持つ手段として、Scotty アプリケーションに Reader モナドを導入しようとしています。Scotty がモナド変換をどのように処理するかについて頭を悩ませているようにはrunTransformerT ...見えませんscottyT。、私がここにいるように)。MonadIO n => n ()IO ()main

これまでの私のコードは次のとおりです。

そして、私が得ているエラー:

この魔法の使い方は?

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

purescript - Purescript の Reader モナド

Purescript で Reader モナドをいじっていたところ、奇妙な動作に遭遇しました。このモナドを理解していないからなのか、それとも他の何かが欠けているからなのかはわかりません。

これは私のコードです:

これは問題なく、コンパイルされます。それにもかかわらず、これの前に、次のような関数行でより簡単なことを試しました:

(renderLine s level) と "Hello Reader モナド" が同じ型であるにも関わらず、コンパイルされません。このエラーがスローされます:「Control.Monad.Reader.Class.MonadReader u14555(Control.Monad.Reader.Trans.ReaderT Prim.Number Control.Monad.Identity.Identity)のインスタンスが見つかりません」

私は何かが欠けていると確信していますが、何がわかりません。

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

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

haskell - Free の MonadReader インスタンスを活用するにはどうすればよいですか?

Free モナドを使用して作成した DSL で Reader を使用したいと考えています。

ここに無料の MonadReader のインスタンスがあることに気付きました。

https://hackage.haskell.org/package/free-4.12.1/docs/src/Control-Monad-Free.html#line-264

EDSL で記述したプログラム内で呼び出そうとするとask、「No such instance MonadReader Free MyDSL」というタイプ エラーが発生します。

最終的には MonadError や Logging モナドなどの DSL で他のモナドを使いたいと思うでしょうが、Reader モナドは私が試した最初のものです。

0 投票する
2 に答える
183 参照

haskell - (->) r を Reader のインスタンスとして理解する

だから私は(->) rReader モナドのインスタンスであると言われていますが、これがどのように機能するかの具体的な例を見つけることができないようです. 一部のコードを Reader で明示的にラップすることなく、これを使用したい

実行runReader testOne "there"はうまくいきますが、実行runReader testTwo "mate"は次のメッセージで見事に失敗します:

それで、私はここで何が欠けていますか?

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

scala - Scala で Kleisli と Reader モナドを作成する

次のような関数があるとします。

それらを構成して、 、 、および を順番fooXAD: X => A => Try[D]に呼び出しfooXAB、それらすべてに引数を渡す新しい関数 を作成したいと思います。fooXBCfooXCDX

scalazのモナドインスタンスを使用して持っているとしますscala.util.Try。今、私はこのようにすることができます:

それは理にかなっていますか?それを単純化することは可能ですか?

0 投票する
2 に答える
596 参照

haskell - ボイラープレートなしで foldl と Reader モナドを使用して AST を再帰的に歩く

単純なパターン マッチングmonadを使用して ASTをトラバースしてます。Reader

私のプロジェクトの他の場所で、AST をトラバースするためwalk関数foldlを定義しました。これは、ツリー内の各ノードを訪問した結果を単一のモノイド結果に減らすために使用されます (たとえば、特別なオブジェクトから「シンボル テーブル」を生成するため)。ツリー内のノード)。

私の質問は、これら2つのアプローチを組み合わせて、私の関数のような関数を使用することは可能ですかwalk?

そしてReader— 以下のコードのトラバーサルのように (簡潔にするためにいくつかのビットは省略されています) — 同時に?

ここでの使用の動機はwalk、各パターンの子を取得する方法と AST の順序どおりのトラバーサルを実行する方法の知識が関数で既にエンコードされていることです。トラバーサルごとにそれを再実装したくないので、使用walkする必要がある場所を含め、より多くの場所で使用するとよいでしょうReader(後でState、おそらくスタック内で)。

これらをうまく組み合わせることができるでしょうか。