Next: , Previous: Defining Macros, Up: Macros   [Contents][Index]


12.5 ¥Ð¥Ã¥¯¥¯¥©¡¼¥È

¥Þ¥¯¥í¤Ç¤Ï¡¢Äê¿ôÉôʬ¤ÈÈóÄê¿ôÉôʬ¤òÁȤ߹ç¤ï¤»¤¿Â礭¤Ê¥ê¥¹¥È¹½Â¤¤ò ¹½ÃÛ¤¹¤ëɬÍפ¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤ò´Êñ¤Ë¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢ ¡ÊÄ̾¥Ð¥Ã¥¯¥¯¥©¡¼¥È¡Êbackquote¡Ë¤È¸Æ¤Ð¤ì¤ë¡Ë‘`’¹½Ê¸¤ò »È¤¤¤Þ¤¹¡£

¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤Ë¤è¤ê¡¢¥ê¥¹¥È¤ÎÍ×ÁǤòÁªÂò¤Ëɾ²Á¤·¤Ä¤Ä¡¢ ¥ê¥¹¥È¤ò¥¯¥©¡¼¥È¤Ç¤­¤Þ¤¹¡£ ¤â¤Ã¤È¤âñ½ã¤Ê¾ì¹ç¡¢¤³¤ì¤Ï¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àquote¡Êsee Quoting¡Ë¤È Åù²Á¤Ç¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î2¤Ä¤Î¥Õ¥©¡¼¥à¤ÏÅù²Á¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£

`(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)
'(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)

¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤Î°ú¿ô¤ÎÆâ¦¤Ë¤¢¤ëÆÃÊ̤ʰõ‘,’¤Ï¡¢ Ãͤ¬Äê¿ô¤Ç¤Ï¤Ê¤¤¤³¤È¤òɽ¤·¤Þ¤¹¡£ ¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤Ï¡¢¥ê¥¹¥È¹½Â¤¤ÎÃæ¤Î‘,’¤Î°ú¿ô¤òɾ²Á¤·¡¢ ÃͤÇÃÖ¤­´¹¤¨¤Þ¤¹¡£

(list 'a 'list 'of (+ 2 3) 'elements)
     ⇒ (a list of 5 elements)
`(a list of ,(+ 2 3) elements)
     ⇒ (a list of 5 elements)

,’¤Ë¤è¤ëÃÖ¤­´¹¤¨¤Ï¡¢¥ê¥¹¥È¹½Â¤¤Î¿¼¤¤¥ì¥Ù¥ë¤Ç¤âµö¤µ¤ì¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¤Ç¤¹¡£

(defmacro t-becomes-nil (variable)
  `(if (eq ,variable t)
       (setq ,variable nil)))
(t-becomes-nil foo)
     ≡ (if (eq foo t) (setq foo nil))

ÆÃÊ̤ʰõ‘,@’¤ò»È¤Ã¤Æ¡¢ ɾ²Á·ë²Ì¤ò·ë²Ì¤È¤Ê¤ë¥ê¥¹¥È¤Ë·Ò¤®¹ç¤ï¤»¤ë¡Êsplice¡Ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ·Ò¤®¹ç¤ï¤»¤¿¥ê¥¹¥È¤ÎÍ×ÁǤϡ¢·ë²Ì¤È¤Ê¤ë¥ê¥¹¥È¤Î¾¤ÎÍ×ÁÇ¤ÈÆ±¤¸¥ì¥Ù¥ë¤Ë¤Ê¤ê¤Þ¤¹¡£ ‘`’¤ò»È¤ï¤Ê¤¤Åù²Á¤Ê¥³¡¼¥É¤Ï¤·¤Ð¤·¤ÐÆÉ¤ßÆñ¤¯¤Ê¤ê¤Þ¤¹¡£ Îã¤ò¤¢¤²¤Þ¤·¤ç¤¦¡£

(setq some-list '(2 3))
     ⇒ (2 3)
(cons 1 (append some-list '(4) some-list))
     ⇒ (1 2 3 4 2 3)
`(1 ,@some-list 4 ,@some-list)
     ⇒ (1 2 3 4 2 3)
(setq list '(hack foo bar))
     ⇒ (hack foo bar)
(cons 'use
  (cons 'the
    (cons 'words (append (cdr list) '(as elements)))))
     ⇒ (use the words foo bar as elements)
`(use the words ,@(cdr list) as elements)
     ⇒ (use the words foo bar as elements)

19.29ÈǤè¤ê¤Þ¤¨¤ÎEmacs¤ÎµìÈǤǤϡ¢ ‘`’¤Î¹½Ê¸¤Ï°Û¤Ê¤Ã¤Æ¤¤¤Æ¡¢ ¥Ð¥Ã¥¯¥¯¥©¡¼¥È¹½Ê¸Á´ÂΤò°Ï¤à³ç¸Ì¤Î;ʬ¤Ê¥ì¥Ù¥ë¤¬É¬ÍפǤ·¤¿¡£ ƱÍͤˡ¢‘,’¤ä‘,@’¤ÎÃÖ´¹¤Ç¤â¡¢ ‘,’¤ä‘,@’¡¢¤ª¤è¤Ó¸å³¤Î¼°¤ò°Ï¤à³ç¸Ì¤Î;ʬ¤Ê¥ì¥Ù¥ë¤¬1¤ÄɬÍפǤ·¤¿¡£ ¸Å¤¤¹½Ê¸¤Ç¤Ï¡¢‘`’¡¢ ‘,’¡¢‘,@’¤È¸å³¤Î¼°¤È¤Î¤¢¤¤¤À¤Ë¤Ï ¶õÇò¤¬É¬ÍפǤ·¤¿¡£

¤³¤Î¹½Ê¸¤â¼õ¤±ÉÕ¤±¤Þ¤¹¤¬¡¢¤³¤ì¤ÏEmacs¤ÎµìÈǤȤθߴ¹À­¤Î¤¿¤á¤Ç¤¢¤ê¡¢ ¿·¤·¤¤¥×¥í¥°¥é¥à¤Ç¤Ï»È¤ï¤Ê¤¤¤³¤È¤ò´«¤á¤Þ¤¹¡£