きしもとです Fixnum とかシンボルの場合は、同じ値のオブジェクトなら同一のオブジェクトに 必ずなるという性質ゆえに、同じリテラル式は毎回同じオブジェクトを返す、 という感じでしょうか。 > たまたまそうである、というだけで、破壊可能なオブジェクトが返ってきても > よさそうな気がします。ただ、そんなもの(毎回同じオブジェクトを返すが、 > そのオブジェクトは破壊可能)はなさそうですけどね。 Ruby とか Python では思いつかないのですが、 $ gosh gosh> (define (foo) '(1 2)) foo gosh> (foo) (1 2) gosh> (set-car! (foo) 3) #<undef> gosh> (foo) (3 2) 変数 foo じゃなくて、関数呼び出し (foo) で、こうなります。 (Lisp では括弧はただの括弧じゃなくて関数呼び出しになります) なお Gauche の名誉のために、というか、Scheme の仕様では、クオートで 作られた値はリードオンリーかもしれないことになっていて、その書き換えは、 (通知されることが要求されない)エラーということになっているので、 困ったりしてもそういうプログラムを書く奴が悪いということになってる わけですが。 # というかこれが発端で Ruby のリテラルについて思いを巡らせた