Previous: Sets And Lists, Up: Lists [Contents][Index]
Ï¢Áۥꥹ¥È¡Êassociation list¡Ë¡¢Î¬¤·¤Æalist¤Ï¡¢ ¥¡¼¤«¤éÃͤؤÎÂбþÉÕ¤±¤òµÏ¿¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤ÏÏ¢ÁÛ¡Êassociations¡Ë¤È¸Æ¤Ð¤ì¤ë¥³¥ó¥¹¥»¥ë¤Î¥ê¥¹¥È¤Ç¤¹¡£ ³Æ¥³¥ó¥¹¥»¥ë¤ÎCAR¤Ïkey¤Ç¤¢¤ê¡¢ CDR¤ÏÏ¢ÁÛÃÍ¡Êassociated value¡Ë¤Ç¤¹¡£ 6
Ï¢Áۥꥹ¥È¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£
¥¡¼pine¤òÃÍcones¤Ë¡¢¥¡¼oak¤òÃÍacorns¤Ë¡¢
¥¡¼maple¤òÃÍseeds¤ËÂбþÉÕ¤±¤Æ¤¤¤Þ¤¹¡£
'((pine . cones) (oak . acorns) (maple . seeds))
Ï¢Áۥꥹ¥ÈÆâ¤ÎÏ¢ÁÛÃͤÏǤ°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤è¤¯¡¢¥¡¼¤â¤½¤¦¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤ÎÏ¢Áۥꥹ¥È¤Ç¤Ï¡¢¥·¥ó¥Ü¥ëa¤Ë¿ô1¤ò¡¢
ʸ»úÎó"b"¤Ë¥ê¥¹¥È(2 3)¤òÂбþÉÕ¤±¤Æ¤¤¤Þ¤¹¡£
¥ê¥¹¥È(2 3)¤ÏÏ¢Áۥꥹ¥È¤ÎÍ×ÁǤÎCDR¤Ç¤¹¡£
((a . 1) ("b" 2 3))
Í×ÁǤÎCDR¤ÎCAR¤ËÏ¢ÁÛÃͤò³ÊǼ¤¹¤ë¤è¤¦¤Ë Ï¢Áۥꥹ¥È¤òÀ߷פ·¤¿¤Û¤¦¤¬¤è¤¤¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ ¤Ä¤®¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
'((rose red) (lily white) (buttercup yellow))
¤³¤³¤Ç¡¢red¤Ïrose¤ËÂбþÉÕ¤±¤¿Ãͤȹͤ¨¤Þ¤¹¡£
¤³¤Î¼ï¤ÎÏ¢Áۥꥹ¥È¤ÎÍøÅÀ¤Î1¤Ä¤Ï¡¢´ØÏ¢¤¹¤ëÊ̤ξðÊó¤ò¡¢
¾¤Î¹àÌܤ«¤éÀ®¤ë¥ê¥¹¥È¤Ç¤µ¤¨¤â¡¢CDR¤ÎCDR¤Ë³ÊǼ¤Ç¤¤ë¤³¤È¤Ç¤¹¡£
1¤Ä¤Î·çÅÀ¤Ï¡¢rassq¡Ê²¼µ»²¾È¡Ë¤ò»È¤Ã¤Æ
»ØÄꤷ¤¿Ãͤò´Þ¤àÍ×ÁǤòõ¤»¤Ê¤¤¤³¤È¤Ç¤¹¡£
¤³¤ì¤é¤Î¾ò·ï¤¬½ÅÍפǤʤ¤¾ì¹ç¤Ë¤Ï¡¢1¤Ä¤ÎÏ¢Áۥꥹ¥È¤Ë´Ø¤¹¤ë¸Â¤ê¡¢
°ì´ÓÀ¤¬¤¢¤ì¤Ð¤É¤Á¤é¤òÁª¤Ö¤«¤Ï¹¥¤ß¤ÎÌäÂê¤Ç¤¹¡£
¾å¤Ë¼¨¤·¤¿Ï¢Áۥꥹ¥È¤Ï¡¢Í×ÁǤÎCDR¤ËÏ¢ÁÛÃͤ¬¼ý¤á¤Æ¤¢¤ë¤È
¹Í¤¨¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
rose¤ÎÏ¢ÁÛÃͤϥꥹ¥È(red)¤Ë¤Ê¤ê¤Þ¤¹¡£
Ï¢Áۥꥹ¥È¤Ï¥¹¥¿¥Ã¥¯¤Ê¤É¤ËÃÖ¤¯¤è¤¦¤Ê¾ðÊó¤ÎµÏ¿¤Ë»È¤¤¤Þ¤¹¡£ ¤È¤¤¤¦¤Ë¤Ï¡¢¥ê¥¹¥È¤ÎÀèÆ¬¤Ë¿·¤¿¤ÊÏ¢ÁÛ¤òÄɲ乤ë¤Î¤¬´Êñ¤À¤«¤é¤Ç¤¹¡£ »ØÄꤷ¤¿¥¡¼¤ËÂФ¹¤ëÏ¢ÁÛ¤òÏ¢Áۥꥹ¥È¤«¤éõ¤¹¤È¤¡¢ ¤½¤ì¤é¤¬Ê£¿ô¸Ä¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢ºÇ½é¤Ë¤ß¤Ä¤«¤Ã¤¿¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
Emacs List¤Ç¤Ï¡¢Ï¢Áۥꥹ¥È¤ÎÍ×ÁǤ¬¥³¥ó¥¹¥»¥ë¤Ç¤Ê¤¯¤Æ¤â ¥¨¥é¡¼¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ Ï¢Áۥꥹ¥Èõº÷´Ø¿ô¤Ï¤½¤Î¤è¤¦¤ÊÍ×ÁǤòñ¤Ë̵»ë¤·¤Þ¤¹¡£ ¾¤Î¿¤¯¤ÎLisp¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤Ê¾ìÌ̤Ǥϥ¨¥é¡¼¤òÄÌÃΤ·¤Þ¤¹¡£
°À¥ê¥¹¥È¤â¤¤¤í¤¤¤í¤Ê°ÕÌ£¤ÇÏ¢Áۥꥹ¥È¤ËÎà»÷¤·¤Æ¤¤¤Þ¤¹¡£ °À¥ê¥¹¥È¤Ï¡¢¥¡¼¤¬°ìÅÙ¤·¤«¸½¤ì¤Ê¤¤Ï¢Áۥꥹ¥È¤Î¤è¤¦¤Ë¤Õ¤ë¤Þ¤¤¤Þ¤¹¡£ °À¥ê¥¹¥È¤ÈÏ¢Áۥꥹ¥È¤ÎÈæ³Ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢See Property Lists¡£
¤³¤Î´Ø¿ô¤Ï¡¢alistÆâ¤Îkey¤ËÂФ¹¤ëºÇ½é¤ÎÏ¢ÁÛ¤òÊÖ¤¹¡£
key¤ÈÏ¢Áۥꥹ¥È¤Î³ÆÍ×ÁǤȤÎÈæ³Ó¤Ë¤Ï¡¢
equal¡Êsee Equality Predicates¡Ë¤òÍѤ¤¤ë¡£
alist¤ÎÃæ¤ËCAR¤¬key¤Ëequal¤Ç¤¢¤ëÏ¢ÁÛ¤¬
¸ºß¤·¤Ê¤±¤ì¤Ð¡¢nil¤òÊÖ¤¹¡£
¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£
(setq trees '((pine . cones) (oak . acorns) (maple . seeds)))
⇒ ((pine . cones) (oak . acorns) (maple . seeds))
(assoc 'oak trees)
⇒ (oak . acorns)
(cdr (assoc 'oak trees))
⇒ acorns
(assoc 'birch trees)
⇒ nil
¤Ä¤®¤Ï¡¢¥¡¼¤ÈÃͤ¬¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¤Îã¡£
(setq needles-per-cluster
'((2 "Austrian Pine" "Red Pine")
(3 "Pitch Pine")
(5 "White Pine")))
(cdr (assoc 3 needles-per-cluster))
⇒ ("Pitch Pine")
(cdr (assoc 2 needles-per-cluster))
⇒ ("Austrian Pine" "Red Pine")
´Ø¿ôassoc-ignore-representation¤Èassoc-ignore-case¤Ï
assoc¤Ë»÷¤Æ¤¤¤Þ¤¹¤¬¡¢
¤½¤ì¤é¤ÏÈæ³Ó¤Ëcompare-strings¤ò»È¤¦ÅÀ¤¬°Û¤Ê¤ê¤Þ¤¹¡£
See Text Comparison¡£
¤³¤Î´Ø¿ô¤Ï¡¢alist¤ÎÃæ¤Çvalue¤òÃͤȤ¹¤ëºÇ½é¤ÎÏ¢ÁÛ¤òÊÖ¤¹¡£
alist¤ÎÃæ¤ËCDR¤¬value¤Ëequal¤Ç¤¢¤ëÏ¢ÁÛ¤¬
¸ºß¤·¤Ê¤±¤ì¤Ð¡¢nil¤òÊÖ¤¹¡£
rassoc¤Ïassoc¤Ë»÷¤Æ¤¤¤ë¤¬¡¢
alist¤Î³ÆÏ¢ÁÛ¤ÎCAR¤Î¤«¤ï¤ê¤ËCDR¤òÈæ³Ó¤¹¤ëÅÀ¤¬°Û¤Ê¤ë¡£
»ØÄꤷ¤¿ÃͤËÂФ¹¤ë¥¡¼¤òõ¤¹¡Øassoc¤ÎµÕ±é»»¡Ù¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢alistÆâ¤Îkey¤ËÂФ¹¤ëºÇ½é¤ÎÏ¢ÁÛ¤òÊÖ¤¹¤È¤¤¤¦°ÕÌ£¤Ç
assoc¤Ë»÷¤Æ¤¤¤ë¤¬¡¢equal¤Î¤«¤ï¤ê¤Ëeq¤ÇÈæ³Ó¤¹¤ë¡£
alistÆâ¤ÎÏ¢ÁÛ¤ÎCAR¤¬key¤Ëeq¤Ç¤¢¤ë¤â¤Î¤¬Â¸ºß¤·¤Ê¤¤¤È¡¢
assq¤Ïnil¤òÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ïassoc¤è¤ê¿ÍѤµ¤ì¤ë¡£
¤È¤¤¤¦¤Î¤Ï¡¢eq¤Ïequal¤è¤ê¹â®¤Ç¤¢¤ê¡¢
¤Û¤È¤ó¤É¤ÎÏ¢Áۥꥹ¥È¤Ç¤Ï¥¡¼¤È¤·¤Æ¥·¥ó¥Ü¥ë¤ò»È¤¦¤«¤é¤Ç¤¢¤ë¡£
(setq trees '((pine . cones) (oak . acorns) (maple . seeds)))
⇒ ((pine . cones) (oak . acorns) (maple . seeds))
(assq 'pine trees)
⇒ (pine . cones)
°ìÊý¤Ç¡¢¥¡¼¤¬¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¤Ï¢Áۥꥹ¥È¤Ç¤Ï¡¢
assq¤Ï¡¢Ä̾ÍÍѤǤϤʤ¤¡£
(setq leaves
'(("simple leaves" . oak)
("compound leaves" . horsechestnut)))
(assq "simple leaves" leaves)
⇒ nil
(assoc "simple leaves" leaves)
⇒ ("simple leaves" . oak)
¤³¤Î´Ø¿ô¤Ï¡¢alist¤ÎÃæ¤Çvalue¤òÃͤȤ¹¤ëºÇ½é¤ÎÏ¢ÁÛ¤òÊÖ¤¹¡£
alist¤ÎÃæ¤ËCDR¤¬value¤Ëeq¤Ç¤¢¤ëÏ¢ÁÛ¤¬
¸ºß¤·¤Ê¤±¤ì¤Ð¡¢nil¤òÊÖ¤¹¡£
rassq¤Ïassq¤Ë»÷¤Æ¤¤¤ë¤¬¡¢
alist¤Î³ÆÏ¢ÁÛ¤ÎCAR¤Î¤«¤ï¤ê¤ËCDR¤òÈæ³Ó¤¹¤ëÅÀ¤¬°Û¤Ê¤ë¡£
»ØÄꤷ¤¿ÃͤËÂФ¹¤ë¥¡¼¤òõ¤¹¡Øassq¤ÎµÕ±é»»¡Ù¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤¿¤È¤¨¤Ð¤Ä¤®¤Î¤È¤ª¤ê¡£
(setq trees '((pine . cones) (oak . acorns) (maple . seeds)))
(rassq 'acorns trees)
⇒ (oak . acorns)
(rassq 'spores trees)
⇒ nil
rassq¤Ç¤Ï¡¢
Í×ÁǤÎCDR¤ÎCAR¤Ë³ÊǼ¤µ¤ì¤¿Ãͤòõ¤»¤Ê¤¤¤³¤È¤ËÃí°Õ¡£
(setq colors '((rose red) (lily white) (buttercup yellow)))
(rassq 'white colors)
⇒ nil
¤³¤Î¾ì¹ç¡¢Ï¢ÁÛ(lily white)¤ÎCDR¤Ï¡¢
¥·¥ó¥Ü¥ëwhite¤Ç¤Ï¤Ê¤¯¥ê¥¹¥È(white)¤Ç¤¢¤ë¡£
Ï¢ÁÛ¤ò¥É¥Ã¥ÈÂеˡ¤Ç½ñ¤¯¤È¤³¤ì¤¬ÌÀ³Î¤Ë¤Ê¤ë¡£
(lily white) ≡ (lily . (white))
¤³¤Î´Ø¿ô¤Ï¡¢key¤Ë°ìÃפ¹¤ë¤â¤Î¤òalist¤«¤éõ¤¹¡£
alist¤Î³ÆÍ×ÁǤˤĤ¤¤Æ¡¢¡Ê¥¢¥È¥à¤Ê¤é¤Ð¡ËÍ×ÁǤÈkey¤ò¡¢
¤¢¤ë¤¤¤Ï¡¢¡Ê¥³¥ó¥¹¤Ê¤é¤Ð¡ËÍ×ÁǤÎCAR¤Èkey¤òÈæ³Ó¤¹¤ë¡£
Èæ³Ó¤Ë¤Ï¤³¤ì¤é¤ò2¤Ä¤Î°ú¿ô¤È¤·¤Ætest¤ò¸Æ¤Ó½Ð¤¹¡£
°ú¿ô¤òÅϤ¹½ç½ø¤Ï¤³¤Î½ç¤Ê¤Î¤Ç¡¢
Àµµ¬É½¸½¡Êsee Regexp Search¡Ë¤ò¼ý¤á¤¿Ï¢Áۥꥹ¥È¤ËÂФ·¤Æ
string-match¤ò»È¤¦¤Èͱפʷë²Ì¤òÆÀ¤é¤ì¤ë¡£
test¤ò¾Êά¤·¤¿¤ênil¤Ç¤¢¤ë¤È¡¢Èæ³Ó¤Ë¤Ïequal¤òÍѤ¤¤ë¡£
¾å¤Î¾ò·ï¤ÇÏ¢Áۥꥹ¥È¤ÎÍ×ÁǤ¬key¤Ë°ìÃפ¹¤ë¤Ê¤é¤Ð¡¢
assoc-default¤Ï¤½¤ÎÍ×ÁǤ˴ð¤Å¤¯ÃͤòÊÖ¤¹¡£
Í×ÁǤ¬¥³¥ó¥¹¤Ê¤é¤ÐÃͤÏÍ×ÁǤÎCDR¡£
¤µ¤â¤Ê¤±¤ì¤Ð¡¢Ìá¤êÃͤÏdefault¡£
key¤Ë°ìÃפ¹¤ëÏ¢Áۥꥹ¥È¤ÎÍ×ÁǤ¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢
assoc-default¤Ïnil¤òÊÖ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢alist¤ò2¥ì¥Ù¥ë¤Î¿¼¤µ¤Þ¤Ç¥³¥Ô¡¼¤·¤¿¤â¤Î¤òÊÖ¤¹¡£ ³ÆÏ¢ÁÛ¤´¤È¤Ë¿·¤¿¤Ê¥³¥Ô¡¼¤òºî¤ë¤Î¤Ç¡¢ ¿·¤¿¤ÊÏ¢Áۥꥹ¥È¤ÎÏ¢ÁÛ¤òÊѹ¹¤·¤Æ¤â¡¢¤â¤È¤ÎÏ¢Áۥꥹ¥È¤ÏÊѹ¹¤·¤Ê¤¤¡£
(setq needles-per-cluster
'((2 . ("Austrian Pine" "Red Pine"))
(3 . ("Pitch Pine"))
(5 . ("White Pine"))))
⇒
((2 "Austrian Pine" "Red Pine")
(3 "Pitch Pine")
(5 "White Pine"))
(setq copy (copy-alist needles-per-cluster))
⇒
((2 "Austrian Pine" "Red Pine")
(3 "Pitch Pine")
(5 "White Pine"))
(eq needles-per-cluster copy)
⇒ nil
(equal needles-per-cluster copy)
⇒ t
(eq (car needles-per-cluster) (car copy))
⇒ nil
(cdr (car (cdr needles-per-cluster)))
⇒ ("Pitch Pine")
(eq (cdr (car (cdr needles-per-cluster)))
(cdr (car (cdr copy))))
⇒ t
¤³¤ÎÎã¤Ï¡¢copy-alist¤Ë¤è¤ê¡¢
¥³¥Ô¡¼¤ÎÏ¢ÁÛ¤òÊѹ¹¤·¤ÆÂ¾¤Î¤â¤Î¤Ë¤Ê¤¼±Æ¶Á¤·¤Ê¤¤¤«¤ò¼¨¤¹¡£
(setcdr (assq 3 copy) '("Martian Vacuum Pine"))
(cdr (assq 3 needles-per-cluster))
⇒ ("Pitch Pine")
¤³¤Î¡Ø¥¡¼¡Ù¤Î»È¤¤Êý¤Ï¡¢¡Ø¥¡¼Îó¡Ù¤È¤Ï̵´Ø·¸¡£ ¥¡¼¤È¤Ï¡¢É½¤Î¹àÌܤòõ¤¹¤¿¤á¤Ë»È¤¦Ãͤò°ÕÌ£¤¹¤ë¡£ ¤³¤³¤Ç¤Ï¡¢É½¤ÏÏ¢Áۥꥹ¥È¤Ç¤¢¤ê¡¢¹àÌܤÏÏ¢Áۥꥹ¥È¤ÎÏ¢ÁÛÃͤǤ¢¤ë¡£
Previous: Sets And Lists, Up: Lists [Contents][Index]