グローバル環境 (ネイバー IP アドレスなどの特定の制約を定義する) が作成され、初期化関数を呼び出すことによって初期化されるモジュールがあります。後続の関数の多くは、呼び出されたときにこれらの制約を使用する必要があります。
原則として、リーダーモナドが何をするかは理解していますが、これを自分の問題にどのように適用できるかはよくわかりません。
ユーザーによって定義され、データ/引数として初期化関数に渡される環境を初期化するために使用する方法。つまり、reader モナドは、グローバルな不変環境を構成する実際の値をどこかから取得する必要があります。
myinitial :: arg1 -> arg1 -> IOString
その後、値がwhere のような初期化関数呼び出しから読み取られ、リーダーモナド (?) を介して後続の関数にアクセスできるグローバルな不変データになるarg1
ことを望みます。arg2
これらの環境値を関数の引数として使用する方法、たとえば、環境からのグローバルな不変データは
recvFrom s arg1
どこにありますか。arg1
またはif arg2 > arg1 then ... else ...
もちろん、構成ファイルを作成することもできますが、構成ファイルを使用すると柔軟性が大幅に低下すると思います。
[編集] ask については理解していますが、関数シグネチャが正しく定義されている場合にグローバル/環境の不変を省略できるように、追加の「ポイントフリーのような」方法があるべきではありませんか? これを適用するには、どのように if-then-else をリファクタリングする必要がありますか。