Next: , Previous: List Elements, Up: Lists   [Contents][Index]


5.5 ¥³¥ó¥¹¥»¥ë¤È¥ê¥¹¥È¤Î¹½ÃÛ

¥ê¥¹¥È¤ÏLisp¤ÎÃæ³Ë¤Ê¤Î¤Ç¡¢Â¿¤¯¤Î´Ø¿ô¤Ï¥ê¥¹¥È¤ò¹½ÃÛ¤·¤Þ¤¹¡£ cons¤Ï´ðËÜŪ¤Ê¥ê¥¹¥È¹½ÃÛ´Ø¿ô¤Ç¤¹¡£ ¤·¤«¤·¡¢Emacs¤Î¥½¡¼¥¹¥³¡¼¥É¤Ç¤Ï¡¢cons¤è¤êlist¤ò ¿ÍѤ·¤Æ¤¤¤ë¤³¤È¤Ï¶½Ì£¿¼¤¤¤³¤È¤Ç¤¹¡£

Function: cons object1 object2

¤³¤Î´Ø¿ô¤Ï¡¢¿·¤¿¤Ê¥ê¥¹¥È¹½Â¤¤ò¹½ÃÛ¤¹¤ë¤¿¤á¤Ë»È¤¦´ðËÜ´Ø¿ô¡£ object1¤òCAR¡¢object2¤òCDR¤È¤¹¤ë ¿·¤¿¤Ê¥³¥ó¥¹¥»¥ë¤òºîÀ®¤·¡¢¤³¤Î¥³¥ó¥¹¥»¥ë¤òÊÖ¤¹¡£ °ú¿ôobject1¤Èobject2¤Ï¤É¤ó¤ÊLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â¤è¤¤¤¬¡¢ ¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢object2¤Ï¥ê¥¹¥È¤Ç¤¢¤ë¡£

(cons 1 '(2))
     ⇒ (1 2)
(cons 1 '())
     ⇒ (1)
(cons 1 2)
     ⇒ (1 . 2)

cons¤Ï¡¢¥ê¥¹¥È¤ÎÀèÆ¬¤ËÍ×ÁǤò1¤ÄÄɲ乤뤿¤á¤Ë ¤·¤Ð¤·¤Ð»È¤ï¤ì¤ë¡£ ¤³¤ì¤òÍ×ÁǤò¥ê¥¹¥È¤Ë¥³¥ó¥¹¤¹¤ë¤È¤¤¤¦¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£

(setq list (cons newelt list))

¤³¤ÎÎã¤Ë¤ª¤±¤ëlist¤È¤¤¤¦Ì¾Á°¤ÎÊÑ¿ô¤È °Ê²¼¤Ë½Ò¤Ù¤ëlist¤È¤¤¤¦Ì¾Á°¤Î´Ø¿ô¤È¤Ï¾×ÆÍ¤·¤Ê¤¤¡£ Ǥ°Õ¤Î¥·¥ó¥Ü¥ë¤Ï¤É¤Á¤é¤ÎÌÜŪ¤Ë¤â»È¤¨¤ë¡£

Function: list &rest objects

¤³¤Î´Ø¿ô¤Ï¡¢objects¤òÍ×ÁǤȤ¹¤ë¥ê¥¹¥È¤òºîÀ®¤¹¤ë¡£ ·ë²Ì¤Î¥ê¥¹¥È¤Ï¤Ä¤Í¤Ënil½ªÃ¼¤Ë¤Ê¤ë¡£ objects¤ò»ØÄꤷ¤Ê¤¤¤È¶õ¥ê¥¹¥È¤òÊÖ¤¹¡£

(list 1 2 3 4 5)
     ⇒ (1 2 3 4 5)
(list 1 2 '(3 4 5) 'foo)
     ⇒ (1 2 (3 4 5) foo)
(list)
     ⇒ nil
Function: make-list length object

¤³¤Î´Ø¿ô¤Ï¡¢¤¹¤Ù¤Æ¤ÎÍ×ÁǤ¬Æ±°ì¤ÎÃÍobject¤Ç¤¢¤ê Ťµ¤¬length¤Î¥ê¥¹¥È¤òºîÀ®¤¹¤ë¡£ make-string¤ÈÈæ³Ó¤·¤Æ¤Û¤·¤¤¡Êsee Creating Strings¡Ë¡£

(make-list 3 'pigs)
     ⇒ (pigs pigs pigs)
(make-list 0 'pigs)
     ⇒ nil
Function: append &rest sequences

¤³¤Î´Ø¿ô¤Ïsequences¤Î¤¹¤Ù¤Æ¤ÎÍ×ÁǤ«¤éÀ®¤ë¥ê¥¹¥È¤òÊÖ¤¹¡£ sequences¤Ï¡¢¥ê¥¹¥È¡¢¥Ù¥¯¥È¥ë¡¢¥Ö¡¼¥ë¥Ù¥¯¥È¥ë¡¢Ê¸»úÎó¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¤¬¡¢ ÉáÄÌ¡¢ºÇ¸å¤ÎÍ×ÁǤϥꥹ¥È¤Ç¤¢¤ë¡£ ºÇ¸å¤Î°ú¿ô¤ò½ü¤¤¤Æ¤¹¤Ù¤Æ¤Î°ú¿ô¤ò¥³¥Ô¡¼¤¹¤ë¤Î¤Ç¡¢¤É¤Î°ú¿ô¤âÊѹ¹¤·¤Ê¤¤ ¡Ê¥³¥Ô¡¼¤»¤º¤Ë¥ê¥¹¥È¤ò·Ò¤°ÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Rearrangement¤Înconc¤ò»²¾È¡£¡Ë

°ìÈ̤ˤϡ¢append¤ÎºÇ¸å¤Î°ú¿ô¤Ï¤É¤ó¤ÊLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤â¤è¤¤¡£ ºÇ¸å¤Î°ú¿ô¤ò¥³¥Ô¡¼¤·¤¿¤êÊÑ´¹¤·¤¿¤ê¤·¤Ê¤¤¡£ ¤½¤ì¤Ï¡¢¿·¤¿¤Ê¥ê¥¹¥È¤ÎºÇ¸å¤Î¥³¥ó¥¹¥»¥ë¤ÎCDR¤Ë¤Ê¤ë¡£ ºÇ¸å¤Î°ú¿ô¤¬¤½¤ì¼«ÂΥꥹ¥È¤Ç¤¢¤ì¤Ð¡¢¤½¤ì¤é¤ÎÍ×ÁǤϡ¢¼Â¼ÁŪ¤Ë¤Ï¡¢ ·ë²Ì¤Î¥ê¥¹¥È¤ÎÍ×ÁǤˤʤ롣 ºÇ¸å¤ÎÍ×ÁǤ¬¥ê¥¹¥È¤Ç¤Ê¤±¤ì¤Ð¡¢·ë²Ì¤Ï¡Ø¥É¥Ã¥ÈÂС٤ˤʤ롣 ¤Ê¤¼¤Ê¤é¡¢·ë²Ì¤ÎºÇ¸å¤ÎCDR¤Ï¡¢ ¿¿¤Î¥ê¥¹¥È¤ËɬÍפȤµ¤ì¤ënil¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£

´Ø¿ôappend¤Ï¡¢°ú¿ô¤È¤·¤ÆÀ°¿ô¤â¼õ¤±ÉÕ¤±¤ë¡£ À°¿ô¤ò10¿Ê¤Îɽ¼¨É½¸½¤Îʸ»úÎó¤ËÊÑ´¹¤·¤Æ¤«¤é¡¢ ¤½¤Îʸ»úÎó¤òÀ°¿ô¤Î¤«¤ï¤ê¤Ë»È¤¦¡£ ¤³¤Îµ¡Ç½¤ò»È¤ï¤Ê¤¤¤Ç¤Û¤·¤¤¡£ ºï½ü¤¹¤ëͽÄê¤Ç¤¢¤ë¡£ ÆÉ¼Ô¤¬¤³¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¤¤¿¤é¡¢º£¤¹¤°¥×¥í¥°¥é¥à¤òľ¤¹¤³¤È¡ª À°¿ô¤ò¤³¤Î¤è¤¦¤Ê10¿Ê¿ô¤ËÊÑ´¹¤¹¤ëÀµ¤·¤¤ÊýË¡¤Ï¡¢ format¡Êsee Formatting Strings¡Ë¤ä number-to-string¡Êsee String Conversion¡Ë¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£

append¤Î»ÈÍÑÎã¤ò¤Ä¤®¤Ë¼¨¤·¤Þ¤¹¡£

(setq trees '(pine oak))
     ⇒ (pine oak)
(setq more-trees (append '(maple birch) trees))
     ⇒ (maple birch pine oak)
trees
     ⇒ (pine oak)
more-trees
     ⇒ (maple birch pine oak)
(eq trees (cdr (cdr more-trees)))
     ⇒ t

Ȣɽ¼¨¤ò¸«¤ì¤Ðappend¤Îưºî¤òÍý²ò¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£ ÊÑ¿ôtrees¤Ë¥ê¥¹¥È(pine oak)¤òÀßÄꤷ¡¢¤Ä¤¤¤Ç¡¢ ÊÑ¿ômore-trees¤Ë¤Ï¥ê¥¹¥È(maple birch pine oak)¤òÀßÄꤷ¤Þ¤¹¡£ ¤·¤«¤·¡¢ÊÑ¿ôtrees¤Ï¤â¤È¤Î¥ê¥¹¥È¤ò»Ø¤·Â³¤±¤Þ¤¹¡£

more-trees                trees
|                           |
|     --- ---      --- ---   -> --- ---      --- ---
 --> |   |   |--> |   |   |--> |   |   |--> |   |   |--> nil
      --- ---      --- ---      --- ---      --- ---
       |            |            |            |
       |            |            |            |
        --> maple    -->birch     --> pine     --> oak

¶õ¥·¡¼¥±¥ó¥¹¤Ïappend¤¬ÊÖ¤¹ÃͤˤϤޤ俤¯´óÍ¿¤·¤Þ¤»¤ó¡£ ¤³¤Î·ë²Ì¡¢ºÇ¸å¤Înil°ú¿ô¤ÏľÁ°¤Î°ú¿ô¤ò¥³¥Ô¡¼¤¹¤ë¤è¤¦¤Ë¶¯À©¤·¤Þ¤¹¡£

trees
     ⇒ (pine oak)
(setq wood (append trees nil))
     ⇒ (pine oak)
wood
     ⇒ (pine oak)
(eq wood trees)
     ⇒ nil

¤³¤ÎÊýË¡¤Ï¡¢´Ø¿ôcopy-sequence¤òƳÆþ¤¹¤ë¤Þ¤Ç¤Ï¡¢ ¥ê¥¹¥È¤ò¥³¥Ô¡¼¤¹¤ëÉáÄ̤ÎÊýË¡¤Ç¤·¤¿¡£ See Sequences Arrays Vectors¡£

append¤Î°ú¿ô¤Ë¥Ù¥¯¥È¥ë¤Èʸ»úÎó¤ò»È¤Ã¤¿Îã¤ò¤Ä¤®¤Ë¼¨¤·¤Þ¤¹¡£

(append [a b] "cd" nil)
     ⇒ (a b 99 100)

apply¡Êsee Calling Functions¡Ë¤Î½õ¤±¤ò¼Ú¤ê¤ì¤Ð¡¢ ¥ê¥¹¥È¤Î¥ê¥¹¥È¤ÎÃæ¤Ë¤¢¤ë¤¹¤Ù¤Æ¤Î¥ê¥¹¥È¤òÏ¢·ë¤Ç¤­¤Þ¤¹¡£

(apply 'append '((a b c) nil (x y z) nil))
     ⇒ (a b c x y z)

sequences¤ò¤Þ¤Ã¤¿¤¯»ØÄꤷ¤Ê¤¤¤Ènil¤òÊÖ¤·¤Þ¤¹¡£

(append)
     ⇒ nil

ºÇ¸å¤Î°ú¿ô¤¬¥ê¥¹¥È¤Ç¤Ï¤Ê¤¤Îã¤ò¤¤¤¯¤Ä¤«¼¨¤·¤Þ¤¹¡£

(append '(x y) 'z)
     ⇒ (x y . z)
(append '(x y) [z])
     ⇒ (x y . [z])

ºÇ¸å¤Î°ú¿ô¤¬¥ê¥¹¥È¤Ç¤Ï¤Ê¤¯¥·¡¼¥±¥ó¥¹¤Ç¤¢¤ë2ÈÖÌܤÎÎã¤Ï¡¢ ¥·¡¼¥±¥ó¥¹¤ÎÍ×ÁǤ¬·ë²Ì¤Î¥ê¥¹¥È¤ÎÍ×ÁǤˤϤʤé¤Ê¤¤¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£ ¤½¤Î¤«¤ï¤ê¤Ë¡¢ºÇ¸å¤Î°ú¿ô¤¬¥ê¥¹¥È¤Ç¤Ê¤¤¾ì¹ç¤ÈƱÍͤˡ¢ ¥·¡¼¥±¥ó¥¹¤¬ºÇ¸å¤ÎCDR¤Ë¤Ê¤ê¤Þ¤¹¡£

Function: reverse list

¤³¤Î´Ø¿ô¤Ï¡¢list¤ÎÍ×ÁǤòµÕ½ç¤Ë¤·¤¿¿·¤¿¤Ê¥ê¥¹¥È¤òºîÀ®¤¹¤ë¡£ ¤â¤È¤Î°ú¿ôlist¤ÏÊѹ¹¤·¤Ê¤¤¡£

(setq x '(1 2 3 4))
     ⇒ (1 2 3 4)
(reverse x)
     ⇒ (4 3 2 1)
x
     ⇒ (1 2 3 4)

Next: , Previous: List Elements, Up: Lists   [Contents][Index]