Next: , Previous: Surprising Local Vars, Up: Problems with Macros   [Contents][Index]


12.6.3 Ÿ³«·Á¤Ë¤ª¤±¤ë¥Þ¥¯¥í°ú¿ô¤Îɾ²Á

eval¡Êsee Eval¡Ë¤ò¸Æ¤Ó½Ð¤¹¤Ê¤É¤·¤Æ¡¢ ¥Þ¥¯¥íÄêµÁ¤½¤Î¤â¤Î¤ÎÃæ¤Ç¥Þ¥¯¥í°ú¿ô¤Î¼°¤òɾ²Á¤¹¤ë¤È¡¢ Ê̤ÎÌäÂê¤òÀ¸¤¸¤Þ¤¹¡£ °ú¿ô¤Ç¥æ¡¼¥¶¡¼¤ÎÊÑ¿ô¤ò»²¾È¤¹¤ë¾ì¹ç¡¢ ¥æ¡¼¥¶¡¼¤¬¥Þ¥¯¥í°ú¿ô¤Î1¤Ä¤ÈƱ¤¸Ì¾Á°¤ò»È¤Ã¤Æ¤¤¤ë¤È¡¢ ÌäÂê¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥Þ¥¯¥íËÜÂÎ¤ÎÆâ¦¤Ç¤Ï¡¢¥Þ¥¯¥í°ú¿ô¤Î«Çû¤¬ºÇ¥í¡¼¥«¥ë¤Ê«Çû¤Ç¤¹¤«¤é¡¢ ¤½¤Î¥Õ¥©¡¼¥à¤ÎÆâ¦¤«¤é¤Î»²¾È¤Ï¡¢¤³¤Î«Çû¤ò»È¤¤¤Þ¤¹¡£ Îã¤ò¼¨¤·¤Þ¤·¤ç¤¦¡£

(defmacro foo (a)
  (list 'setq (eval a) t))
     ⇒ foo
(setq x 'b)
(foo x) → (setq b t)
     ⇒ t                  ; b¤òÀßÄꤹ¤ë
;; ¤·¤«¤·
(setq a 'c)
(foo a) → (setq a t)
     ⇒ t                  ; c¤Ç¤Ï¤Ê¤¯a¤òÀßÄꤹ¤ë

¥æ¡¼¥¶¡¼¤Î°ú¿ô¤Î̾Á°¤¬a¤«x¤«¤Ç°ã¤¤¤¬¤Ç¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢¥Þ¥¯¥í°ú¿ô¤ÎÊÑ¿ôa¤Èa¤¬¾×ÆÍ¤¹¤ë¤«¤é¤Ç¤¹¡£

¥Þ¥¯¥íÄêµÁÆâ¤Çeval¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ÎÊ̤ÎÌäÂêÅÀ¤Ï¡¢ ¥³¥ó¥Ñ¥¤¥ë¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¡¢°Õ¿Þ¤·¤¿Æ°ºî¤ò¤·¤Ê¤¤¤À¤í¤¦¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤Ï¡¢¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ëÃæ¤Ë¥Þ¥¯¥íÄêµÁ¤ò¼Â¹Ô¤·¤Þ¤¹¤«¤é¡¢ ¡Êeval¤Ç»²¾È¤·¤¿¤¤¡Ë¥×¥í¥°¥é¥à¤½¤Î¤â¤Î¤Î·×»»¤Ï¹Ô¤ï¤ì¤º¡¢ ¤½¤Î¥í¡¼¥«¥ëÊÑ¿ô¤Î«Çû¤â¸ºß¤·¤Þ¤»¤ó¡£

¤³¤ì¤é¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢ ¥Þ¥¯¥íŸ³«¤Î·×»»²áÄø¤Ç¤Ï¡¢°ú¿ô¤Î¼°¤òɾ²Á¤·¤Ê¤¤¤³¤È¤Ç¤¹¡£ ¤½¤Î¤«¤ï¤ê¤Ë¡¢¥Þ¥¯¥íŸ³«¤Ç¤Ï¼°¤ÎÃÖ´¹¤ò»È¤Ã¤Æ¡¢ Ÿ³«»þ¤Ë¤½¤ÎÃͤ¬·×»»¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¡¢ËܾϤξ¤ÎÎãÂê¤Ïưºî¤·¤Þ¤¹¡£