で、main
構成ファイルを読み取って、問題なく提供できますrunReader (somefunc) myEnv
。ただし、リーダーの供給にsomefunc
アクセスする必要はなく、チェーンの次のカップルも必要ありません。myEnv
myEnv から何かを必要とする関数は、小さなリーフ関数です。
介在するすべての関数を としてタグ付けせずに、関数内の環境にアクセスするにはどうすればよい(Reader Env)
ですか? そうしないと、そもそも myEnv を渡すだけなので、それは正しくありません。また、未使用のパラメーターを複数レベルの関数に渡すのは、見苦しいものです (そうではありませんか?)。
私がネット上で見つけることができる例はたくさんありますが、それらはすべて、runReader と環境へのアクセスの間に 1 つのレベルしかないようです。
Chris Taylor のものを受け入れるのは、それが最も完全であり、他の人にとって有用であることがわかるからです。私の質問に実際に直接答えようとした唯一の人物である Heatsink にも感謝します。
問題のテスト アプリについては、Reader を完全に捨てて、環境を渡します。それは私に何も買わない。
関数 h に静的データを提供すると、その型シグネチャだけでなく、それを呼び出す g と g を呼び出す f の型シグネチャも変更されるという考えに、私はまだ困惑していると言わざるを得ません。関係する実際の型と計算は変更されていませんが、これはすべてです。実装の詳細がコード全体に漏れているように見えますが、実際には何のメリットもありません。