#最近のsrfiになるデータ構造のトレンドは、原則immutableにしといてlinear updateバージョンも提供する、というものだけど、このモデルっていまいちのような気がしてきた。linear updateバージョンを使うには「渡すデータを二度と使わない
#という保証が要るけど、そのためにはデータが共有されてないことをトラックできないとならない。そうなると、functionalなバージョンで、「データ構造に変更がない場合は引数そのまま返しておこう」というのができなくなる。引数そのまま返されると共有が生じるので。でも、せっかくimmutableな構造は共有できるのに「必ずコピーする」となってしまうのは悲しい。
#むしろ、immutableかmutableかのフラグをつけておき、linear updateバージョンは引数がmutableなら再利用(してもよい)、immutableならコピーする、functionalバージョンは引数に変更が無ければそのまま返しても良い、とした方が良くないだろうか。
#(次善の策として、linear updateに渡すのはmutableでなくてはならない、としておき、「引数がimmutableならコピー、mutableならそのまま返す」という手続きを別に持っておいても良いが、明示的にmutateするインタフェースが無いならlinear updateの中に包含してしまった方がすっきりするだろう)