問題タブ [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 投票する
3 に答える
267 参照

haskell - リーダーモナドの明確化

私はリーダーモナドを理解しようとしていますが、このモナドで bind (>>=) が何をするのか理解できないようです。

私が分析している実装は次のとおりです。

  1. 私の最初の質問は、なぜ Reader が bind の左側に部分的に適用されるのですか? (Reader r)の代わりに(Reader r a)
  2. 定義のこの部分で(f (r e))何が起こっているか: 、その目的は何ですか?

助けてくれてどうもありがとう。

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

haskell - 環境をパラメータとして直接渡すよりも Reader モナドを優先する

ライブラリ Servant と Opaleye を使用して、Haskell で基本的な CRUD アプリを作成していました。

API エンドポイントをセットアップする Servant と、データを DB に格納する Opaleye です。

GET /usersDB からすべてのユーザーのリストを返すエンドポイントと、新しいユーザーを作成して DB に保存する別のエンドポイントがPOST /userあるとします。

プログラムは、DB への接続を開始してから、この接続をパラメーターとしてこれらの API エンドポイント関数 (Servant を使用してセットアップ) に渡します。

Reader Monad を使用して接続を環境に保存する方が良いと誰かが勧めてくれました。

私はそれを行うことができましたが、引数を直接渡すのではなく、Reader Monad が環境を共有するための好ましい方法である理由がわかりません。

PS - Haskell の初心者なので、Monads を使用し、チュートリアルに従ってプログラムを実行できますが、Monads の背後にある美しい隠された数学についてはよくわかりません。だからこそ、私はモナドの使用を避けたいのです (モナドの背後にある考え方を完全に理解するまで)。

これが私のコードです。