Gauche > Archives > 2017/06/29

2017/06/29 04:18:25 UTCshiro
#
ソースコードのリテラルは変更不可だが、実行中にreadしたデータはデフォルトで変更可。Gaucheではreadの文脈に隠しフラグを設けてソースをreadする時はリテラルベクタ等を変更不可としているが、その件でバグ報告が出た。
#
フラグ操作を変えれば直せるが、readの動作を変えるという対応は正しいんだろうか。特別扱いすべきは「ソースである場合」なのだから、readは変更可で読んでおいて、ソースとしてコンパイルする際にリテラルデータの属性を変更不可へと変える、という方がすっきりするようにも思う。
#
しかしオブジェクトの属性がコンパイラに渡すと変わるというのもそれはそれで気持ち悪くある。理想的にはコンパイラ内でリテラルを変更不可として複製するのが綺麗だろうが、スクリプト用途ではオーバヘッドが気になる。