タグ

2009年3月6日のブックマーク (1件)

  • 第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド

    Haskellでは,グローバル変数の使用による副作用の発生を防ぐため,グローバル変数として使える可能性のある機能は,IOモナドやSTモナドといった特定のモナドでしか利用できないようになっています。しかし,ときにはグローバル変数に頼りたくなることもあるでしょう。 そんなときでも,物のグローバル変数を使わなければならない場合は実はあまりありません。たいていは,より制限された何らかのモデルで代用できます。代わりに利用できる機能さえ知っていれば,グローバル変数を使わずに済むのです。 今回は,グローバル変数の代わりに使用できる二つのモナドを紹介します。 「読み取り専用」のReaderモナド プログラムの実行時に決まるような大域的な情報を,プログラムの何個所かで共有するにはどうすればよいでしょうか? 同じ値を利用する場合,その値を引数やデータ型の一部として関数から関数へと受け渡していくのが常道です。

    第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド