Hatena::Grouperlang

檜山正幸のErlang未確認情報 RSSフィード

 | 

2009-03-28 (土)

イミュータブルのいいところ

| 14:23

ひとりごとで嘆いていたけど、イミュータブルデータにはメリットもある。

大規模なミュータブルデータを書き換えているときに、途中で何か変なことに気が付いたとする。そこで止めてしまうとデータの整合性が取れない。で、もとに戻す必要があるなら、結局はコピーを取るとか複雑なロールバック手順を実装することになる。

イミュータブルなら、もとのデータはいじってないので、「変だなコリャ」と思ったら、処理関数は例外を投げて仕事をおっぽり出しても別に問題ない。呼ぶ側で例外をキャッチしたとき、渡したデータは何も変わってない(引数を相手側スタックにコピーして呼ぶのと似ている)。データ構造に関する操作が常にトランザクションになっているわけだ。

パフォーマンス低下と(場合により)処理の複雑化はかなり痛いペナルティだが、メリットのほうに目をやって、冷静になることにした(イライラしないように)。

 |