Next: Setcdr, Previous: Modifying Lists, Up: Modifying Lists [Contents][Index]
setcar¤Ë¤è¤ë¥ê¥¹¥ÈÍ×ÁǤÎÊѹ¹¥³¥ó¥¹¥»¥ë¤ÎCAR¤òÊѹ¹¤¹¤ë¤Ë¤Ï¡¢setcar¤ò»È¤¤¤Þ¤¹¡£
¥ê¥¹¥È¤ËÂФ·¤Æ»ÈÍѤ¹¤ë¤È¡¢
setcar¤Ï¥ê¥¹¥È¤Î1¤Ä¤ÎÍ×ÁǤòÊ̤ÎÍ×ÁǤËÃÖ¤´¹¤¨¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢cons¤Î¿·¤¿¤ÊCAR¤È¤·¤Æobject¤ò³ÊǼ¤·¡¢ °ÊÁ°¤ÎCAR¤òÃÖ¤´¹¤¨¤ë¡£ ¤¤¤¤¤«¤¨¤ì¤Ð¡¢cons¤ÎCAR¥¹¥í¥Ã¥È¤¬object¤ò»Ø¤¹¤è¤¦¤ËÊѹ¹¤¹¤ë¡£ ¤³¤Î´Ø¿ô¤ÏÃÍobject¤òÊÖ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(setq x '(1 2))
⇒ (1 2)
(setcar x 4)
⇒ 4
x
⇒ (4 2)
¥³¥ó¥¹¥»¥ë¤¬Ê£¿ô¤Î¥ê¥¹¥È¤Î¶¦Í¹½Â¤¤Î°ìÉô¤Ç¤¢¤ë¤È¤¤Ë¤Ï¡¢ ¥³¥ó¥¹¥»¥ë¤Ë¿·¤¿¤ÊCAR¤ò³ÊǼ¤¹¤ë¤È¡¢ ¤½¤Î¤è¤¦¤Ê³Æ¥ê¥¹¥È¤Î1¤Ä¤ÎÍ×ÁǤòÊѹ¹¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
;; ¶¦ÍÉôʬ¤¬¤¢¤ë2¤Ä¤Î¥ê¥¹¥È¤òºî¤ë
(setq x1 '(a b c))
⇒ (a b c)
(setq x2 (cons 'z (cdr x1)))
⇒ (z b c)
;; ¶¦ÍÉôʬ¤ÎCAR¤òÃÖ¤´¹¤¨¤ë (setcar (cdr x1) 'foo) ⇒ foo x1 ; ξÊý¤Î¥ê¥¹¥È¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤ë ⇒ (a foo c) x2 ⇒ (z foo c)
;; Èó¶¦ÍÉôʬ¤ÎCAR¤òÃÖ¤´¹¤¨¤ë (setcar x1 'baz) ⇒ baz x1 ; 1¤Ä¤Î¥ê¥¹¥È¤À¤±¤¬Êѹ¹¤µ¤ì¤Æ¤¤¤ë ⇒ (baz foo c) x2 ⇒ (z foo c)
ÊÑ¿ôx1¤Èx2¤ËÆþ¤Ã¤Æ¤¤¤ë¶¦ÍÉôʬ¤ò»ý¤Ä2¤Ä¤Î¥ê¥¹¥È¤ò¿Þ¼¨¤¹¤ë¤È
¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
b¤òÃÖ¤´¹¤¨¤ë¤È¤Ê¤¼Î¾¼Ô¤¬Êѹ¹¤µ¤ì¤ë¤Î¤«¤ï¤«¤ë¤Ç¤·¤ç¤¦¡£
--- --- --- --- --- ---
x1---> | | |----> | | |--> | | |--> nil
--- --- --- --- --- ---
| --> | |
| | | |
--> a | --> b --> c
|
--- --- |
x2--> | | |--
--- ---
|
|
--> z
Ʊ¤¸´Ø·¸¤òÊ̤ÎȢɽ¼¨¤Ç¼¨¤·¤Þ¤¹¡£
x1:
-------------- -------------- --------------
| car | cdr | | car | cdr | | car | cdr |
| a | o------->| b | o------->| c | nil |
| | | -->| | | | | |
-------------- | -------------- --------------
|
x2: |
-------------- |
| car | cdr | |
| z | o----
| | |
--------------