mutableな変数
普段はmutableな変数の使用を避ける
一般的なプログラミングにおいても、 mutableな変数はできるだけ避けるべきだとされています。
特にHaskellは純粋関数型言語です。
immutableにレコードを差分更新することを効率よく行えるようになっているので、 mutableな変数が欲しいことは滅多にありません。
mutableな変数を実現する機構は原則禁止です。
例えば以下の機構は避けるべきです。
IORefSTRefST
スレッド間の通信にはSTMのミュータブルな変数を使う
スレッド間の通信を行いたい場合はミュータブルな変数を使った方がスムーズなことがあります。
例えば以下の型が該当します。
TVarTMVarTChanTQueueTBQueue
しかしこれらも低レイヤーな機構なので、 そのまま深く入り組ませずに、 抽象化して使うべきです。