2018-07-12-01-「値コピー原則」の破棄‥‥‥で悩む-2 - project-enigma

2018-07-12-01-「値コピー原則」の破棄‥‥‥で悩む-2

>> Site top >> weblog >> 月別アーカイブ >> 2018年07月のlog >> 2018-07-12-01-「値コピー原則」の破棄‥‥‥で悩む-2

最終更新日付:2018/07/12 12:33:31


「値コピー原則」の破棄‥‥‥で悩む-2

2018 年 07 月 12 日

結論が出る気がしない、「値コピー原則の破棄」問題。判断つきかねるというよりは、単に面倒臭いだけか。実際に手を下した場合にどうなるかを考えたら、余計に面倒臭くなった。

 

数えてみたところ、_= の出現数は、cl-stl 内で大体 1,000ケ所くらいだった。しかし、これを機械的に setf に置き換えれば良いかというとそんな簡単な話ではない。というのも、主にアルゴリズム周辺で使用している反復子の取り回しでは反復子間の「代入」が必須だからだ。無論、他の「反復子代入専用のメソッド」呼び出しに置き換えることはできるだろうが、いずれにせよ setf にはできない。

基本的に、setf に置き換えるのは「ユーザーデータを保持する」ところだけだ。しかしユーザーデータといっても、たとえばアルゴリズムに外部から与えられるファンクタはコピーしなければならないだろう。しかし、そう考えていくと、これは setf、これはコピーと(各論になるとはいえ)竹を割ったように決められるのだろうか? 判断に迷うような、あるいは判断できないような周辺的な問題は発生しないだろうか? そんなことを考えてしまう。

逆の懸念として、たとえば stl:copy のようなアルゴリズムが実際にコピーをしなくなる、というようなことも気になる。あと、stl:removestl:unique のようなアルゴリズムが、内部での要素の移動にムーブセマンティクスを使っていたのが単なる setf になるが、本当にそれでいいのか、とか。いや、ポインタのコンテナだと思えば別におかしくはないのだけれど。

もうひとつの懸念は、cl-stl はすでに(GitHubで)公開してしまっているということだ。まぁ使っている人はそうそういないだろうが、これだけインパクトの大きな変更を今更してしまって良いものか‥‥‥。やるとすれば、ブランチを作成してそちらで徹底的に変更、結論が出るまでは別の道を行く‥‥‥てことになるんだろうな。多分。

現状、cl-stl のコードは行数にしてざっくり 36,000行くらい。これを全部精査して修正し、テストするのか‥‥‥あまり考えたくない。着手するかどうか、悩ましいところ。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : STLとその移植

Page tag : Common Lisp

 

 


Copyright(C) 2005-2018 project-enigma.
Generated by CL-PREFAB.