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


5.7 ½¸¹ç¤È¤·¤Æ¤Î¥ê¥¹¥È¤ÎÍøÍÑ

¥ê¥¹¥È¤Ç¡¢¿ô³Ø¤Î½ç½ø¤Î¤Ê¤¤½¸¹ç¤òɽ¸½¤Ç¤­¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢¥ê¥¹¥È¤Ë¸½¤ì¤ëÍ×ÁǤò½¸¹ç¤ÎÍ×ÁǤȹͤ¨¡¢ ¥ê¥¹¥ÈÆâ¤Ç¤Î½ç½ø¤Ï̵»ë¤·¤Þ¤¹¡£ 2¤Ä¤Î½¸¹ç¤ÎϽ¸¹ç¤òºî¤ë¤Ë¤Ï¡¢ ¡ÊÍ×ÁǤ¬½ÅÊ£¤¹¤ë¤³¤È¤òµ¤¤Ë¤·¤Ê¤±¤ì¤Ð¡Ëappend¤ò»È¤¤¤Þ¤¹¡£ ½¸¹ç¸þ¤±¤Î¾¤ÎÍ­ÍѤʴؿô¤Ë¤Ï¡¢memq¤ädelq¡¢¤ª¤è¤Ó¡¢ ¤³¤ì¤é¤ÎequalÈǤǤ¢¤ëmember¤ädelete¤¬¤¢¤ê¤Þ¤¹¡£

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ Common Lisp¤Ë¤Ï¡¢½¸¹ç±é»»¸þ¤±¤Ë ¡ÊÍ×ÁǤνÅÊ£¤òÈò¤±¤ë¡Ë´Ø¿ôunion¤Èintersection¤¬¤¢¤ë¤¬¡¢ GNU Emacs Lisp¤Ë¤Ï¤Ê¤¤¡£ ɬÍפʤé¤Ð¡¢ÆÉ¼Ô¤ß¤º¤«¤éLisp¤Ç¤³¤ì¤é¤ò½ñ¤±¤ë¡£

Function: memq object list

¤³¤Î´Ø¿ô¤Ï¡¢object¤¬list¤ÎÍ×ÁǤ«¤É¤¦¤«Ä´¤Ù¤ë¡£ ¤½¤¦¤Ê¤é¤Ð¡¢ memq¤Ïobject¤¬ºÇ½é¤Ë¸½¤ì¤ë¤È¤³¤í¤«¤é»Ï¤Þ¤ë¥ê¥¹¥È¤òÊÖ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£ memq¤Îʸ»ú‘q’¤Ï¡¢¥ê¥¹¥È¤ÎÍ×ÁǤËÂФ¹¤ëobject¤ÎÈæ³Ó¤Ë eq¤ò»È¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ ¤¿¤È¤¨¤Ð¡¢

(memq 'b '(a b c b a))
     ⇒ (b c b a)
(memq '(2) '((1) (2)))    ; (2)¤È(2)¤Ïeq¤Ç¤Ï¤Ê¤¤
     ⇒ nil
Function: delq object list

¤³¤Î´Ø¿ô¤Ï¡¢list¤«¤éobject¤Ëeq¤Ç¤¢¤ë¤¹¤Ù¤Æ¤ÎÍ×ÁǤò Ç˲õŪ¤Ëºï½ü¤¹¤ë¡£ delq¤Îʸ»ú‘q’¤Ï¡¢memq¤ÈƱÍͤˡ¢ ¥ê¥¹¥È¤ÎÍ×ÁǤËÂФ¹¤ëobject¤ÎÈæ³Ó¤Ëeq¤ò»È¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë¡£

delq¤¬¥ê¥¹¥È¤ÎÀèÆ¬¤«¤éÍ×ÁǤòºï½ü¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢ ñ¤Ë¥ê¥¹¥È¤òé¤Ã¤Æºï½ü¤·¤¿Í×ÁǤΤĤ®¤«¤é»Ï¤Þ¤ëÉôʬ¥ê¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£

(delq 'a '(a b c)) ≡ (cdr '(a b c))

¥ê¥¹¥È¤ÎÃæ¤Û¤É¤ÎÍ×ÁǤòºï½ü¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢ ºï½ü¤Ë¤ÏCDR¤ÎÊѹ¹¤òȼ¤¤¤Þ¤¹¡Êsee Setcdr¡Ë¡£

(setq sample-list '(a b c (4)))
     ⇒ (a b c (4))
(delq 'a sample-list)
     ⇒ (b c (4))
sample-list
     ⇒ (a b c (4))
(delq 'c sample-list)
     ⇒ (a b (4))
sample-list
     ⇒ (a b (4))

(delq 'c sample-list)¤Ï¡¢ 3ÈÖÌܤÎÍ×ÁǤòÀÚ¤ê¼è¤Ã¤Æsample-list¤òÊѹ¹¤·¤Þ¤¹¤¬¡¢ (delq 'a sample-list)¤Ç¤Ï¡¢ ¤Ê¤Ë¤âÀÚ¤ê¼è¤é¤º¤Ëñ¤Ëû¤¤¥ê¥¹¥È¤òÊÖ¤¹¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ °ú¿ôlist¤òÊÝ»ý¤·¤Æ¤¤¤¿ÊÑ¿ô¤¬¡¢¼Â¹Ô¸å¤Ë¤Ï¾¯¤Ê¤¤Í×ÁǤò»ý¤Ä¤È²¾Äꤷ¤¿¤ê¡¢ ¤â¤È¤Î¥ê¥¹¥È¤òÊÝ»ý¤·Â³¤±¤Æ¤¤¤ë¤È²¾Äꤷ¤¿¤ê¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡ª ¤½¤Î¤«¤ï¤ê¤Ë¡¢delq¤Î·ë²Ì¤òÊݸ¤·¤Æ¡¢¤½¤ì¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ ¿¤¯¤Î¾ì¹ç¡¢¤Ä¤®¤Î¤è¤¦¤Ë¡¢ ¤â¤È¤Î¥ê¥¹¥È¤òÊÝ»ý¤·¤Æ¤¤¤¿ÊÑ¿ô¤Ë·ë²Ì¤òÊݸ¤·Ä¾¤·¤Þ¤¹¡£

(setq flowers (delq 'rose flowers))

¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢delq¤¬°ìÃפò¼è¤í¤¦¤È¤·¤Æ¤¤¤ë(4)¤È sample-list¤Î(4)¤È¤Ïeq¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

(delq '(4) sample-list)
     ⇒ (a c (4))

¤Ä¤®¤Î2¤Ä¤Î´Ø¿ô¤Ï¡¢memq¤ädelq¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢ Èæ³Ó¤Ë¤Ïeq¤Î¤«¤ï¤ê¤Ëequal¤ò»È¤¤¤Þ¤¹¡£ See Equality Predicates¡£

Function: member object list

´Ø¿ômember¤Ï¡¢equal¤ò»È¤Ã¤Æobject¤ÈÍ×ÁǤòÈæ³Ó¤·¤Æ¡¢ object¤¬list¤ÎÍ×ÁǤ«¤É¤¦¤«Ä´¤Ù¤ë¡£ object¤¬Í×ÁǤǤ¢¤ì¤Ð¡¢ member¤ÏlistÆâ¤Ç¤½¤ì¤¬ºÇ½é¤Ë¸½¤ì¤ë¤È¤³¤í¤«¤é»Ï¤Þ¤ë¥ê¥¹¥È¤òÊÖ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

memq¤ÈÈæ³Ó¤·¤Æ¤Û¤·¤¤¡£

(member '(2) '((1) (2)))  ; (2)¤È(2)¤Ïequal¤Ç¤¢¤ë
     ⇒ ((2))
(memq '(2) '((1) (2)))    ; (2)¤È(2)¤Ïeq¤Ç¤Ï¤Ê¤¤
     ⇒ nil
;; Ʊ¤¸ÆâÍÆ¤Î2¤Ä¤Îʸ»úÎó¤Ïequal¤Ç¤¢¤ë
(member "foo" '("foo" "bar"))
     ⇒ ("foo" "bar")
Function: delete object list

¤³¤Î´Ø¿ô¤Ï¡¢list¤«¤éobject¤Ëequal¤Ç¤¢¤ë¤¹¤Ù¤Æ¤ÎÍ×ÁǤò Ç˲õŪ¤Ëºï½ü¤¹¤ë¡£ member¤¬memeq¤ËÂбþ¤¹¤ë¤è¤¦¤Ë¡¢delq¤ËÂбþ¤¹¤ë¡£ member¤ÈƱÍͤˡ¢ Í×ÁǤÈobject¤È¤ÎÈæ³Ó¤Ë¤Ïequal¤ò»È¤¦¡£ °ìÃפ¹¤ëÍ×ÁǤò¤ß¤Ä¤±¤ë¤È¡¢delq¤ÈƱÍͤËÍ×ÁǤòºï½ü¤¹¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£

(delete '(2) '((2) (1) (2)))
     ⇒ ((1))

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ GNU Emacs Lisp¤Î´Ø¿ômember¤È´Ø¿ôdelete¤Ï Maclisp¤«¤é¼õ¤±·Ñ¤¤¤À¤â¤Î¤Ç¤¢¤ê¡¢Common Lisp¤«¤é¤Ç¤Ï¤Ê¤¤¡£ Common LispÈǤǤÏÍ×ÁǤÎÈæ³Ó¤Ë¤Ïequal¤ò»È¤ï¤Ê¤¤¡£

ÊÑ¿ô¤Ë³ÊǼ¤·¤¿¥ê¥¹¥È¤ËÍ×ÁǤòÄɲ乤ëÊ̤ÎÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Setting Variables¤Î´Ø¿ôadd-to-list¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


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