Next: , Previous: Function Forms, Up: Forms   [Contents][Index]


8.2.6 Lisp¥Þ¥¯¥í¤Îɾ²Á

ɾ²Á¤¹¤Ù¤­¥ê¥¹¥È¤ÎÀèÆ¬Í×ÁǤ¬¥Þ¥¯¥í¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ì¹ç¡¢ ¤½¤Î¥ê¥¹¥È¤Ï¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¡Êmacro call¡Ë¤Ç¤¹¡£ ¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤òɾ²Á¤¹¤ë¤È¤­¤Ï¡¢¥ê¥¹¥È¤Î»Ä¤ê¤ÎÍ×ÁǤòɾ²Á¤·¤Þ¤»¤ó¡£ ¤½¤Î¤«¤ï¤ê¤Ë¡¢Í×ÁǤ½¤Î¤â¤Î¤ò¥Þ¥¯¥í¤Î°ú¿ô¤È¤·¤Æ»È¤¤¤Þ¤¹¡£ ¥Þ¥¯¥íÄêµÁ¤Ï¡¢ ¥Þ¥¯¥í¤ÎŸ³«·Á¡Êexpansion¡Ë¤È¸Æ¤Ð¤ì¤ëÃÖ´¹¥Õ¥©¡¼¥à¤ò·×»»¤·¡¢ ¤â¤È¤Î¥Õ¥©¡¼¥à¤Î¤«¤ï¤ê¤ËŸ³«·Á¤òɾ²Á¤·¤Þ¤¹¡£ Ÿ³«·Á¤Ï¡¢¤É¤ó¤Ê¼ïÎà¤Î¥Õ¥©¡¼¥à¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ ¼«¸Êɾ²Á·¿¤ÎÄê¿ô¡¢¥·¥ó¥Ü¥ë¡¢¤¢¤ë¤¤¤Ï¡¢¥ê¥¹¥È¤Ç¤¹¡£ Ÿ³«·Á¤½¤Î¤â¤Î¤¬¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ç¤¢¤ë¤È¡¢ ¥Þ¥¯¥í¸Æ¤Ó½Ð¤·°Ê³°¤Î¥Õ¥©¡¼¥à¤òÆÀ¤é¤ì¤ë¤Þ¤Ç¡¢ Ÿ³«·Á¤òÆÀ¤ë½èÍý¤ò·«¤êÊÖ¤·¤Þ¤¹¡£

Ä̾ï¤Î¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Îɾ²Á¤Ï¡¢Å¸³«·Á¤òɾ²Á¤¹¤ë¤³¤È¤Ç´°Î»¤·¤Þ¤¹¡£ ¤·¤«¤·¡¢¥Þ¥¯¥í¤ÎŸ³«·Á¤òɬ¤º¤·¤â¤¿¤À¤Á¤Ëɾ²Á¤¹¤ëɬÍפϤʤ¯¡¢ ¤Þ¤Ã¤¿¤¯É¾²Á¤·¤Ê¤¯¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ÊÌ¤Î¥×¥í¥°¥é¥à¤â¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤òŸ³«¤·¡¢ ¤½¤ì¤é¤ÏŸ³«·Á¤òɾ²Á¤¹¤ë¤â¤Î¤â¤¢¤ì¤Ð¡¢É¾²Á¤·¤Ê¤¤¤â¤Î¤â¤¢¤ë¤«¤é¤Ç¤¹¡£

ÉáÄÌ¡¢°ú¿ô¤Î¼°¤Ï¡¢¥Þ¥¯¥íŸ³«¤Î·×»»²áÄø¤Ç¤Ïɾ²Á¤»¤º¡¢ Ÿ³«·Á¤Î°ìÉô¤È¤·¤Æ¸½¤ì¤Þ¤¹¡£ ¤½¤·¤Æ¡¢Å¸³«·Á¤òɾ²Á¤¹¤ë¤È¤­¤Ë°ú¿ô¤¬·×»»¤µ¤ì¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤è¤¦¤Ê¥Þ¥¯¥íÄêµÁ¤¬¤¢¤Ã¤¿¤È¤·¤Þ¤¹¡£

(defmacro cadr (x)
  (list 'car (list 'cdr x)))

(cadr (assq 'handler list))¤Î¤è¤¦¤Ê¼°¤Ï¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ç¤¢¤ê¡¢ ¤Ä¤®¤Î¤è¤¦¤ÊŸ³«·Á¤Ë¤Ê¤ê¤Þ¤¹¡£

(car (cdr (assq 'handler list)))

°ú¿ô(assq 'handler list)¤¬Å¸³«·Á¤Ë¸½¤ì¤Æ¤¤¤ë¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

Emacs Lisp¤Î¥Þ¥¯¥í¤Ë´Ø¤¹¤ë´°Á´¤Êµ­½Ò¤Ï¡¢See Macros¡£