Previous: Sets And Lists, Up: Lists   [Contents][Index]


5.8 Ï¢Áۥꥹ¥È

Ï¢Áۥꥹ¥È¡Ê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¡£

Function: assoc key alist

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

Function: rassoc value alist

¤³¤Î´Ø¿ô¤Ï¡¢alist¤ÎÃæ¤Çvalue¤òÃͤȤ¹¤ëºÇ½é¤ÎÏ¢ÁÛ¤òÊÖ¤¹¡£ alist¤ÎÃæ¤ËCDR¤¬value¤Ëequal¤Ç¤¢¤ëÏ¢ÁÛ¤¬ ¸ºß¤·¤Ê¤±¤ì¤Ð¡¢nil¤òÊÖ¤¹¡£

rassoc¤Ïassoc¤Ë»÷¤Æ¤¤¤ë¤¬¡¢ alist¤Î³ÆÏ¢ÁÛ¤ÎCAR¤Î¤«¤ï¤ê¤ËCDR¤òÈæ³Ó¤¹¤ëÅÀ¤¬°Û¤Ê¤ë¡£ »ØÄꤷ¤¿ÃͤËÂФ¹¤ë¥­¡¼¤òõ¤¹¡Øassoc¤ÎµÕ±é»»¡Ù¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

Function: assq key alist

¤³¤Î´Ø¿ô¤Ï¡¢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)
Function: rassq value alist

¤³¤Î´Ø¿ô¤Ï¡¢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))
Function: assoc-default key alist test default

¤³¤Î´Ø¿ô¤Ï¡¢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¤òÊÖ¤¹¡£

Function: copy-alist alist

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

Footnotes

(6)

¤³¤Î¡Ø¥­¡¼¡Ù¤Î»È¤¤Êý¤Ï¡¢¡Ø¥­¡¼Îó¡Ù¤È¤Ï̵´Ø·¸¡£ ¥­¡¼¤È¤Ï¡¢É½¤Î¹àÌܤòõ¤¹¤¿¤á¤Ë»È¤¦Ãͤò°ÕÌ£¤¹¤ë¡£ ¤³¤³¤Ç¤Ï¡¢É½¤ÏÏ¢Áۥꥹ¥È¤Ç¤¢¤ê¡¢¹àÌܤÏÏ¢Áۥꥹ¥È¤ÎÏ¢ÁÛÃͤǤ¢¤ë¡£


Previous: Sets And Lists, Up: Lists   [Contents][Index]