Next: Repeated Expansion, Previous: Surprising Local Vars, Up: Problems with Macros [Contents][Index]
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
¤Ç»²¾È¤·¤¿¤¤¡Ë¥×¥í¥°¥é¥à¤½¤Î¤â¤Î¤Î·×»»¤Ï¹Ô¤ï¤ì¤º¡¢
¤½¤Î¥í¡¼¥«¥ëÊÑ¿ô¤Î«Çû¤â¸ºß¤·¤Þ¤»¤ó¡£
¤³¤ì¤é¤ÎÌäÂê¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢ ¥Þ¥¯¥íŸ³«¤Î·×»»²áÄø¤Ç¤Ï¡¢°ú¿ô¤Î¼°¤òɾ²Á¤·¤Ê¤¤¤³¤È¤Ç¤¹¡£ ¤½¤Î¤«¤ï¤ê¤Ë¡¢¥Þ¥¯¥íŸ³«¤Ç¤Ï¼°¤ÎÃÖ´¹¤ò»È¤Ã¤Æ¡¢ Ÿ³«»þ¤Ë¤½¤ÎÃͤ¬·×»»¤µ¤ì¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¡¢ËܾϤξ¤ÎÎãÂê¤Ïưºî¤·¤Þ¤¹¡£