2011年2月23日

[ruby-list:47920] Re: 2 種類のリテラル

きしもとです

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 のリテラルについて思いを巡らせた


投稿者 xml-rpc : 2011年2月23日 20:26
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/102251
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。