前回
リスト遊び 8-1 cons の特性 - by shigemk2
consが安全である理由は、必ずセルを生成することである。
CARとCDRは新たに作られるので、この2つのポインタに何を
指されても、他のデータを破壊することはない。
危険を承知で、すでに存在するセルのCARとCDRを変更する
方法があれば、セルの利用効率を向上できる。
setcar でセルのCARを、
setcdr でセルのCDRを直接変更することができる。
consが安全であるのに対し、setcar setcdrは破壊的な関数であると
言える。これは副作用があるとも言われている。
(setq zoo '(1)) (1) (setcar zoo 2) 2 zoo (2) (setcdr zoo '(3)) (3) zoo (2 3) (setcdr zoo 3) 3 zoo (2 . 3)
上記の例では、後からzooを参照したら、
zooは別の値に変更されていることが分かる。
リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)
- 作者: 山本和彦
- 出版社/メーカー: アスキー
- 発売日: 2000/05
- メディア: 単行本
- 購入: 2人 クリック: 76回
- この商品を含むブログ (44件) を見る