Next: , Previous: Modifying Lists, Up: Modifying Lists   [Contents][Index]


5.6.1 setcar¤Ë¤è¤ë¥ê¥¹¥ÈÍ×ÁǤÎÊѹ¹

¥³¥ó¥¹¥»¥ë¤ÎCAR¤òÊѹ¹¤¹¤ë¤Ë¤Ï¡¢setcar¤ò»È¤¤¤Þ¤¹¡£ ¥ê¥¹¥È¤ËÂФ·¤Æ»ÈÍѤ¹¤ë¤È¡¢ setcar¤Ï¥ê¥¹¥È¤Î1¤Ä¤ÎÍ×ÁǤòÊ̤ÎÍ×ÁǤËÃÖ¤­´¹¤¨¤Þ¤¹¡£

Function: setcar cons object

¤³¤Î´Ø¿ô¤Ï¡¢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----
|       |      |
 --------------