前回,MArrayクラスの配列を扱えるモナドの一つとして,STモナドを挙げました。他にも第6回や第7回で何度かSTモナドについて言及しています。ただ,これまでSTモナドについてまとまった説明はしてきませんでした。そこで今回から2回にわたってSTモナドの詳細を解説していくことにしました。 今回は,STモナドの基本的な特徴,およびSTモナドと関係のある拡張機能について説明します。 前回の補足 前回「すべての次元において下界が上界を上回るよう値を与えた場合,そのような範囲は存在しないため配列は空になります」と書きましたが,誤りでした。正しくは「下界が上界を上回るような次元が一つでも存在する場合」に配列が空になります(参考リンク1,参考リンク2)。 Prelude Data.Array> array ((9,22),(10,11)) [((10,11), 33)] array *** Except