Previous: Setcdr, Up: Modifying Lists [Contents][Index]
°Ê²¼¤Ï¡¢¥ê¥¹¥È¤ò¹½À®¤¹¤ë¥³¥ó¥¹¥»¥ë¤ÎCDR¤òÊѹ¹¤¹¤ë¤³¤È¤Ç¡¢ ¡ØÇ˲õŪ¤Ë¡Ù¥ê¥¹¥È¤Î½ç½ø¤òÊѹ¹¤¹¤ë´Ø¿ô¤Ç¤¹¡£ ¤³¤ì¤é¤Î´Ø¿ô¤ò¡ØÇ˲õŪ¡Ù¤È¸Æ¤Ö¤Î¤Ï¡¢ ÅϤµ¤ì¤¿°ú¿ô¤Ç¤¢¤ë¤â¤È¤Î¥ê¥¹¥È¤Î¥³¥ó¥¹¥»¥ë¤ò·Ò¤®´¹¤¨¤Æ¿·¤¿¤Ê¥ê¥¹¥È¤Ë ÊѤ¨¤ë¤«¤é¤Ç¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢lists¤Î¤¹¤Ù¤Æ¤ÎÍ×ÁǤòÆþ¤ì¤¿¥ê¥¹¥È¤òÊÖ¤¹¡£
append
¡Êsee Building Lists¡Ë¤È°Û¤Ê¤ê¡¢
lists¤ò¥³¥Ô¡¼¤·¤Ê¤¤¡£
¤½¤Î¤«¤ï¤ê¤Ë¡¢³Ælists¤ÎºÇ¸å¤ÎCDR¤ò¸å³¤Î¥ê¥¹¥È¤ò»Ø¤¹¤è¤¦¤ËÊѹ¹¤¹¤ë¡£
lists¤ÎºÇ¸å¤ÏÊѹ¹¤·¤Ê¤¤¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(setq x '(1 2 3)) ⇒ (1 2 3)
(nconc x '(4 5)) ⇒ (1 2 3 4 5)
x ⇒ (1 2 3 4 5)
nconc
¤ÏºÇ¸å¤Î°ú¿ô¤òÊѹ¹¤·¤Ê¤¤¤Î¤Ç¡¢
¾å½Ò¤ÎÎã¤Î¤è¤¦¤Ë¡¢'(4 5)
¤Ê¤É¤ÎÄê¿ô¥ê¥¹¥È¤ò»È¤Ã¤Æ¤è¤¤¡£
Ʊ¤¸Íýͳ¤ÇºÇ¸å¤Î°ú¿ô¤Ï¥ê¥¹¥È¤Ç¤¢¤ëɬÍפâ¤Ê¤¤¡£
(setq x '(1 2 3)) ⇒ (1 2 3)
(nconc x 'z) ⇒ (1 2 3 . z)
x ⇒ (1 2 3 . z)
¤·¤«¤·¤Ê¤¬¤é¡¢¤¹¤Ù¤Æ¤Î°ú¿ô¤Ï¡ÊºÇ¸å¤Î¤â¤Î¤ò½ü¤¤¤Æ¡Ë¥ê¥¹¥È¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
¤è¤¯¤¢¤ëÍ·ê¤Ï¡¢nconc
¤ÎºÇ¸å°Ê³°¤Î°ú¿ô¤Ë¡¢
¥¯¥©¡¼¥È¤·¤¿Äê¿ô¥ê¥¹¥È¤ò»È¤¦¤³¤È¤Ç¤¢¤ë¡£
¤³¤¦¤¹¤ë¤È¡¢ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ï¼Â¹Ô¤¹¤ë¤¿¤Ó¤ËÄê¿ô¤òÊѤ¨¤Æ¤·¤Þ¤¦¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(defun add-foo (x) ; ¤³¤Î´Ø¿ô¤Ï°ú¿ô¤ÎÀèÆ¬¤Ë
(nconc '(foo) x)) ; foo
¤òÄɲ乤롢¤È¤·¤¿¤¤
(symbol-function 'add-foo) ⇒ (lambda (x) (nconc (quote (foo)) x))
(setq xx (add-foo '(1 2))) ; ư¤¤¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤ë
⇒ (foo 1 2)
(setq xy (add-foo '(3 4))) ; ¤É¤¦¤Ê¤Ã¤Æ¤ë¤Î¡©
⇒ (foo 1 2 3 4)
(eq xx xy) ⇒ t
(symbol-function 'add-foo) ⇒ (lambda (x) (nconc (quote (foo 1 2 3 4) x)))
¤³¤Î´Ø¿ô¤Ï¡¢list¤ÎÍ×ÁǤνçÈÖ¤òµÕ½ç¤Ë¤¹¤ë¡£
reverse
¤È°Û¤Ê¤ê¡¢nreverse
¤Ï
¥ê¥¹¥È¤ò¹½À®¤¹¤ë¥³¥ó¥¹¥»¥ë¤ÎCDR¤òµÕ¸þ¤¤Ë¤·¤Æ°ú¿ô¤òÊѤ¨¤Æ¤·¤Þ¤¦¡£
list¤ÎºÇ¸å¤Ë¤¢¤Ã¤¿¥³¥ó¥¹¥»¥ë¤ÏÌá¤êÃͤκǽé¤Î¥³¥ó¥¹¥»¥ë¤Ë¤Ê¤ë¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(setq x '(1 2 3 4)) ⇒ (1 2 3 4)
x ⇒ (1 2 3 4) (nreverse x) ⇒ (4 3 2 1)
;; ÀèÆ¬¤Ë¤¢¤Ã¤¿¥³¥ó¥¹¥»¥ë¤Ï¡¢º£¡¢ºÇ¸å¤Ë¤Ê¤Ã¤Æ¤¤¤ë
x
⇒ (1)
º®Íð¤òÈò¤±¤ë¤¿¤á¤Ë¡¢nreverse
¤Î·ë²Ì¤Ï¡¢
¤â¤È¤Î¥ê¥¹¥È¤ò¼ý¤á¤Æ¤¤¤¿¤â¤Î¤ÈƱ¤¸ÊÑ¿ô¤Ë³ÊǼ¤¹¤ë¡£
(setq x (nreverse x))
nreverse
¤ò(a b c)
¤ËŬÍѤ·¤¿·ë²Ì¤ò¿Þ¼¨¤¹¤ë¤È
¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
¤â¤È¤Î¥ê¥¹¥È¤ÎÀèÆ¬ µÕ½ç¤Ë¤·¤¿¥ê¥¹¥È ------------- ------------- ------------ | car | cdr | | car | cdr | | car | cdr | | a | nil |<-- | b | o |<-- | c | o | | | | | | | | | | | | | | ------------- | --------- | - | -------- | - | | | | ------------- ------------
¤³¤Î´Ø¿ô¤Ï¡¢Ç˲õŪ¤Ë¤Ç¤Ï¤¢¤ë¤¬¡¢ list¤ò½ç½ø¤òÊݤäƥ½¡¼¥È¤·¤¿¥ê¥¹¥È¤òÊÖ¤¹¡£ Í×ÁǤÎÈæ³Ó¤Ë¤Ïpredicate¤ò»È¤¦¡£ ½ç½ø¤òÊݤä¿¥½¡¼¥È¤È¤Ï¡¢Æ±¤¸¥½¡¼¥È¥¡¼¤ò»ý¤ÄÍ×ÁǤÎÁêÂÐ½ç½ø¤ò¡¢ ¥½¡¼¥È¼Â¹ÔÁ°¸å¤ÇÊѹ¹¤·¤Ê¤¤¥½¡¼¥È¤Ç¤¢¤ë¡£ °Û¤Ê¤ë´ð½à¤Ç¤Ä¤®¤Ä¤®¤Ë¥½¡¼¥È¤¹¤ë¤È¤¤Ë¤Ï¡¢ ½ç½ø¤òÊݤĤ³¤È¤Ï½ÅÍפǤ¢¤ë¡£
°ú¿ôpredicate¤Ï¡¢2¤Ä¤Î°ú¿ô¤ò¼è¤ë´Ø¿ô¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢list¤Î2¤Ä¤ÎÍ×ÁǤǸƤӽФµ¤ì¤ë¡£
¾º½ç¤Î¥½¡¼¥È¤Ç¤Ï¡¢predicate¤Ï¡¢
Âè1°ú¿ô¤¬Âè2°ú¿ô¤è¤ê¡Ø¾®¤µ¤¤¡Ù¤È¤¤Ët
¤òÊÖ¤·¡¢
¤µ¤â¤Ê¤±¤ì¤Ðnil
¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¡£
Èæ³Ó´Ø¿ôpredicate¤Ï¡¢¾¯¤Ê¤¯¤È¤âñ°ì¤Îsort
¤Î¸Æ¤Ó½Ð¤·Ãæ¤Ï¡¢
°ú¿ô¤ÎǤ°Õ¤ÎÂФËÂФ·¤Æ¿®Íê¤Ç¤¤ë·ë²Ì¤òÊÖ¤¹É¬Íפ¬¤¢¤ë¡£
¤Þ¤º¡¢È¿ÂоΤǤ¢¤ë¤³¤È¡£
¤Ä¤Þ¤ê¡¢a¤¬b¤è¤ê¾®¤µ¤¤¤È¤¤Ë¤Ï¡¢
b¤¬a¤è¤ê¾®¤µ¤¯¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
¤Þ¤¿¡¢Á«°Ü§¤¬À®¤êΩ¤Ä¤³¤È¡£
¤Ä¤Þ¤ê¡¢a¤¬b¤è¤ê¾®¤µ¤¯¡¢¤«¤Ä¡¢b¤¬c¤è¤ê¾®¤µ¤¤¤È¤¤Ë¤Ï¡¢
a¤Ïc¤è¤ê¾®¤µ¤¯¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤³¤ì¤é¤ÎÍ×ÀÁ¤òËþ¤¿¤µ¤Ê¤¤Èæ³Ó´Ø¿ô¤òÍѤ¤¤ë¤È¡¢
sort
¤Î·ë²Ì¤Ïͽ¬¤Ç¤¤Ê¤¤¡£
sort
¤¬Ç˲õŪ¤Ç¤¢¤ë¤È¤¤¤¦¤Î¤Ï¡¢
list¤ò¹½À®¤¹¤ë¥³¥ó¥¹¥»¥ë¤ÎCDR¤òÊѹ¹¤·¤Æ¡¢
¥³¥ó¥¹¥»¥ë¤Î½ç½ø¤òÊѹ¹¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£
ÈóÇ˲õŪ¤Ê¥½¡¼¥È´Ø¿ô¤Ç¤Ï¡¢¥½¡¼¥È¤·¤¿Í×ÁǤò³ÊǼ¤¹¤ë¤¿¤á¤Ë¿·¤¿¤Ê¥³¥ó¥¹¥»¥ë¤ò
ºîÀ®¤¹¤ë¤Ç¤¢¤í¤¦¡£
¤â¤È¤Î¥ê¥¹¥È¤òÇ˲õ¤»¤º¤Ë¥½¡¼¥È¤·¤¿¤±¤ì¤Ð¡¢
¤Þ¤ºcopy-sequence
¤Ç¥³¥Ô¡¼¤òºî¤ê¡¢¤½¤ì¤ò¥½¡¼¥È¤¹¤ë¡£
¥½¡¼¥È¤¹¤ëºÝ¡¢list¤Î¥³¥ó¥¹¥»¥ë¤ÎCAR¤ÏÊѹ¹¤·¤Ê¤¤¡£
listÆâ¤ÎÍ×ÁÇa
¤òÆþ¤ì¤Æ¤¤¤¿¥³¥ó¥¹¥»¥ë¤Ï¡¢
¥½¡¼¥È¸å¤Ë¤â¤½¤ÎCAR¤Ë¤Ïa
¤¬Æþ¤Ã¤Æ¤¤¤ë¡£
¤·¤«¤·¡¢CDR¤òÊѹ¹¤·¤Æ¤¢¤ë¤Î¤Ç¡¢¥ê¥¹¥ÈÆâ¤Ç¤Ï°Û¤Ê¤ë¾ì½ê¤Ë¸½¤ì¤ë¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£
(setq nums '(1 3 2 6 5 4 0)) ⇒ (1 3 2 6 5 4 0)
(sort nums '<) ⇒ (0 1 2 3 4 5 6)
nums ⇒ (1 2 3 4 5 6)
·Ù¹ð¡§
nums
¤Î¥ê¥¹¥È¤Ë¤Ï
0¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¡£
¡Ênums
¤¬»Ø¤¹¡Ë¥³¥ó¥¹¥»¥ë¤Ï¥½¡¼¥ÈÁ°¤ÈƱ¤¸¥³¥ó¥¹¥»¥ë¤À¤¬¡¢
¤½¤ì¤Ï¤â¤Ï¤ä¥ê¥¹¥È¤ÎÀèÆ¬¤Ë¤Ï¤Ê¤¤¡£
°ú¿ô¤òÊÝ»ý¤·¤Æ¤¤¤¿ÊÑ¿ô¤¬¡¢
¥½¡¼¥È¤·¤¿¥ê¥¹¥ÈÁ´ÂΤòÊÝ»ý¤·¤Æ¤¤¤ë¤È²¾Äꤷ¤Ê¤¤¤³¤È¡ª
¤«¤ï¤ê¤Ë¡¢sort
¤Î·ë²Ì¤òÊݸ¤·¤Æ¡¢¤½¤ì¤ò»È¤¦¡£
¿¤¯¤Î¾ì¹ç¡¢¤Ä¤®¤Î¤è¤¦¤Ë¡¢¤â¤È¤Î¥ê¥¹¥È¤òÊÝ»ý¤·¤Æ¤¤¤¿ÊÑ¿ô¤Ë·ë²Ì¤òÊݸ¤·Ä¾¤¹¡£
(setq nums (sort nums '<))
¥½¡¼¥È¤ò¹Ô¤¦Â¾¤Î´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢see Sorting¡£
sort
¤ÎÍÍѤÊÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢
Accessing Documentation¤Îdocumentation
¤ò»²¾È¡£
Previous: Setcdr, Up: Modifying Lists [Contents][Index]