問題タブ [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.
haskell - Reader モナドを使用する Haskell 関数のリファクタリング
私の質問に関係のないすべてのコードを無視して、次のようなコードがあります。
これをリファクタリングする方法はありますか?具体的には、ネストされたbar'
関数が最も気になります。これを1行に凝縮できますか?
haskell - Scotty と Reader モナド
内部で URL を展開するための統一されたルート パスを持つ手段として、Scotty アプリケーションに Reader モナドを導入しようとしています。Scotty がモナド変換をどのように処理するかについて頭を悩ませているようにはrunTransformerT ...
見えませんscottyT
。、私がここにいるように)。MonadIO n => n ()
IO ()
main
これまでの私のコードは次のとおりです。
そして、私が得ているエラー:
この魔法の使い方は?
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)のインスタンスが見つかりません」
私は何かが欠けていると確信していますが、何がわかりません。
scala - Kleisli、ReaderT、Reader が Scalaz で同じなのは単なる偶然か
スカラスで
Kleisli[F, A, B]
のラッパーですA => F[B]
。ReaderT[F, A, B]
-- リーダー モナド トランスフォーマー -- は単に のエイリアスですKleisli[F, A, B]
。Reader[A, B]
monad はReaderT
with identity monadId
:の特殊化です
type Reader[A, B] = ReaderT[Id, A, B]
。
それは単なる偶然なのか、それとも Scalazで 、、が同形であるより深い理由があるのでしょうか?Kleisli
ReaderT
Reader
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 モナドは私が試した最初のものです。
haskell - (->) r を Reader のインスタンスとして理解する
だから私は(->) r
Reader モナドのインスタンスであると言われていますが、これがどのように機能するかの具体的な例を見つけることができないようです. 一部のコードを Reader で明示的にラップすることなく、これを使用したい
実行runReader testOne "there"
はうまくいきますが、実行runReader testTwo "mate"
は次のメッセージで見事に失敗します:
それで、私はここで何が欠けていますか?
scala - Scala で Kleisli と Reader モナドを作成する
次のような関数があるとします。
それらを構成して、 、 、および を順番fooXAD: X => A => Try[D]
に呼び出しfooXAB
、それらすべてに引数を渡す新しい関数 を作成したいと思います。fooXBC
fooXCD
X
scalaz
のモナドインスタンスを使用して持っているとしますscala.util.Try
。今、私はこのようにすることができます:
それは理にかなっていますか?それを単純化することは可能ですか?
haskell - ボイラープレートなしで foldl と Reader モナドを使用して AST を再帰的に歩く
単純なパターン マッチングとmonadを使用して ASTをトラバースしています。Reader
私のプロジェクトの他の場所で、AST をトラバースするためのwalk
関数foldl
を定義しました。これは、ツリー内の各ノードを訪問した結果を単一のモノイド結果に減らすために使用されます (たとえば、特別なオブジェクトから「シンボル テーブル」を生成するため)。ツリー内のノード)。
私の質問は、これら2つのアプローチを組み合わせて、私の関数のような関数を使用することは可能ですかwalk
?
そしてReader
— 以下のコードのトラバーサルのように (簡潔にするためにいくつかのビットは省略されています) — 同時に?
ここでの使用の動機はwalk
、各パターンの子を取得する方法と AST の順序どおりのトラバーサルを実行する方法の知識が関数で既にエンコードされていることです。トラバーサルごとにそれを再実装したくないので、使用walk
する必要がある場所を含め、より多くの場所で使用するとよいでしょうReader
(後でState
、おそらくスタック内で)。
これらをうまく組み合わせることができるでしょうか。