Next: Backtracking, Previous: Instrumenting Macro Calls, Up: Instrumenting Macro Calls [Contents][Index]
¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Î°ú¿ô¤Î¤¢¤ë¤â¤Î¤Ïɾ²Á¤·Ê̤Τâ¤Î¤Ïɾ²Á¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
edebugÍÑ»ÅÍͤ˻ÅÍͥꥹ¥È¡Êspecification list¡Ë¤¬É¬Íפˤʤê¤Þ¤¹¡£
Ê£¿ô¤Î°ú¿ô¤Ë°ìÃפ¹¤ë»ÅÍͥꥹ¥È¤ÎÍ×ÁǤ⤢¤ê¤Þ¤¹¤¬¡¢
¸å³¤ÎÍ×ÁǤνèÍý¤ò½¤¾þ¤¹¤ëÍ×ÁǤ⤢¤ê¤Þ¤¹¡£
¸å¼Ô¤Ï»ÅÍÍ¥¡¼¥ï¡¼¥É¡Êspecification keyword¡Ë¤È¸Æ¤Ð¤ì¡¢
¡Ê&optional
¤Î¤è¤¦¤Ë¡Ë‘&’¤Ç»Ï¤Þ¤ë¥·¥ó¥Ü¥ë¤Ç¤¹¡£
»ÅÍͥꥹ¥È¤Ë¤Ï¡¢¤½¤ì¼«ÂΤ¬¥ê¥¹¥È¤Ç¤¢¤ë°ú¿ô¤Ë°ìÃפ¹¤ëÉôʬ¥ê¥¹¥È¤ä ¥°¥ë¡¼¥×²½¤Ë»È¤¦¥Ù¥¯¥È¥ë¤ò´Þ¤ó¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ Éôʬ¥ê¥¹¥È¤ä¥°¥ë¡¼¥×¤Ï»ÅÍͥꥹ¥È¤ò³¬ÁؤËʬ¤±¤Þ¤¹¡£ »ÅÍÍ¥¡¼¥ï¡¼¥É¤Ï¤½¤ì¤é¤ò´Þ¤àÉôʬ¥ê¥¹¥È¤ä¥°¥ë¡¼¥×¤Î»Ä¤ê¤ËŬÍѤµ¤ì¤Þ¤¹¡£
»ÅÍͥꥹ¥È¤ËÁªÂò»è¤ä·«¤êÊÖ¤·¤¬´Þ¤Þ¤ì¤ë¾ì¹ç¡¢ ¼ÂºÝ¤Î¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Ë°ìÃפµ¤»¤ë¤Ë¤Ï¥Ð¥Ã¥¯¥È¥é¥Ã¥¯¤¬É¬Íפʾì¹ç¤â¤¢¤ê¤Þ¤¹¡£ ¾Ü¤·¤¯¤ÏSee Backtracking¡£
edebugÍÑ»ÅÍͤǤϡ¢Àµµ¬É½¸½¤Ë¤è¤ë°ìÃפÈʸ̮¼«Í³Ê¸Ë¡¤Î¹½Ê¸¤ò»È¤¨¤Þ¤¹¡£ Âбþ¤·¤¿³ç¸Ì¤Ë°Ï¤Þ¤ì¤¿Éôʬ¥ê¥¹¥È¡¢¥Õ¥©¡¼¥à¤ÎºÆµ¢Åª½èÍý¡¢ ´ÖÀÜ»ÅÍͤˤè¤ëºÆµ¢¤Ç¤¹¡£
»ÅÍͥꥹ¥È¤ÎÍ×ÁǤ˻ØÄê¤Ç¤¤ë¤â¤Î¤È¤½¤ì¤é¤Î°ÕÌ£¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£
sexp
½èÃÖ¤·¤Ê¤¤É¾²Á¤·¤Ê¤¤1¤Ä¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¡£
form
½èÃÖ¤·¤¿É¾²Á¤¹¤ë1¤Ä¤Î¼°¡£
place
Common Lisp¤Îsetf
¹½Ê¸¤Î¤è¤¦¤ËÃͤò³ÊǼ¤¹¤ë¾ì½ê¡£
body
&rest form
¤Î¾Êά·Á¡£
°Ê²¼¤Î&rest
¤ò»²¾È¡£
function-form
´Ø¿ô¥Õ¥©¡¼¥à¡£
¥¯¥©¡¼¥È¤·¤¿´Ø¿ô¥·¥ó¥Ü¥ë¡¢¥¯¥©¡¼¥È¤·¤¿¥é¥à¥À¼°¡¢
¤¢¤ë¤¤¤Ï¡¢¡Ê´Ø¿ô¥·¥ó¥Ü¥ë¤ä¥é¥à¥À¼°¤Ëɾ²Á¤µ¤ì¤ë¡Ë¥Õ¥©¡¼¥à¡£
¤³¤ì¤Ï¡¢¥é¥à¥À¼°¤Ç¤¢¤ë°ú¿ô¤¬¡¢
function
¤Ç¤Ï¤Ê¤¯quote
¤Ç¥¯¥©¡¼¥È¤µ¤ì¤ë¤È¤¤ËÍÍѤǤ¢¤ë¡£
¤È¤¤¤¦¤Î¤Ï¡¢¥é¥à¥À¼°¤ÎËÜÂΤò¤¤¤º¤ì¤«¤ÎÊýË¡¤Ç½èÃÖ¤¹¤ë¤«¤é¤Ç¤¢¤ë¡£
lambda-expr
¥¯¥©¡¼¥È¤·¤Æ¤¤¤Ê¤¤¥é¥à¥À¼°¡£
&optional
¤³¤Î»ÅÍͥꥹ¥ÈÆâ¤Î¸å³¤ÎÍ×ÁǤ¹¤Ù¤Æ¤Ï¾Êά²Äǽ¡£ °ìÃפ·¤Ê¤¤¤È¡¢edebug¤Ï¤¿¤À¤Á¤Ë¤³¤Î¥ì¥Ù¥ë¤Î°ìÃפò»ß¤á¤ë¡£
¿ô¸Ä¤Î¾Êά²Äǽ¤ÊÍ×ÁǤ˾ÊάÉԲĤÊÍ×ÁǤò³¤±¤ë¤Ë¤Ï¡¢
[&optional specs…]
¤ò»È¤¦¡£
¿ô¸Ä¤ÎÍ×ÁǤ¬¤¹¤Ù¤Æ°ìÃפ¹¤ë¤«¤Þ¤Ã¤¿¤¯°ìÃפ·¤Ê¤¤¤³¤È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢
&optional [specs…]
¤ò»È¤¦¡£
°Ê²¼¤Îdefun
¤ÎÎã¤ò»²¾È¡£
&rest
¤³¤Î»ÅÍͥꥹ¥ÈÆâ¤Î¸å³¤ÎÍ×ÁǤ¹¤Ù¤Æ¤ò0²ó°Ê¾å·«¤êÊÖ¤¹¡£ ºÇ¸å¤Î·«¤êÊÖ¤·¤Ç¤Ï¡¢»ÅÍͥꥹ¥È¤ÎÍ×ÁǤ¹¤Ù¤Æ¤Ë°ìÃפ¹¤ë¤Þ¤¨¤Ë ¼°¤ò»È¤¤¿Ô¤¯¤·¤Æ¤âÌäÂê¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£
¿ô¸Ä¤ÎÍ×ÁǤΤߤò·«¤êÊÖ¤¹¤Ë¤Ï[&rest specs…]
¤ò»È¤¦¡£
³Æ·«¤êÊÖ¤·¤Ç¤¹¤Ù¤Æ¤¬°ìÃפ¹¤ë¤è¤¦¤Ê¿ô¸Ä¤ÎÍ×ÁǤò»ØÄꤹ¤ë¤Ë¤Ï¡¢
&rest [specs…]
¤ò»È¤¦¡£
&or
»ÅÍͥꥹ¥ÈÆâ¤Î¸å³¤Î³Æ¥ê¥¹¥È¤ÏÁªÂò»è¤òɽ¤¹¡£
ÁªÂò»è¤Î1¤Ä¤Ë°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»ÅÍÍ&or
¤Ï¼ºÇÔ¡£
&or
¤Ë³¤¯³ÆÍ×ÁǤÏ1¤Ä¤ÎÁªÂò»è¤òɽ¤¹¡£
Ê£¿ô¤ÎÍ×ÁǤò1¤Ä¤ÎÁªÂò»è¤È¤·¤Æ¥°¥ë¡¼¥×¤Ë¤Þ¤È¤á¤ë¤Ë¤Ï¡¢
¤½¤ì¤é¤ò[…]
¤Ç°Ï¤à¡£
¬
&or
¤ò»È¤Ã¤¿¤«¤è¤¦¤Ë¸å³¤ÎÍ×ÁǤòÁªÂò»è¤È¤·¤Æ°ìÃפµ¤»¤ë¤¬¡¢
¤É¤ì¤«¤¬°ìÃפ¹¤ë¤È»ÅÍͤϼºÇÔ¡£
¤É¤ì¤Ë¤â°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»ÅÍͬ
¤ÏÀ®¸ù¡£
&define
»ÅÍͤÏÄêµÁ¥Õ¥©¡¼¥à¤ËÂФ¹¤ë¤â¤Î¤Ç¤¢¤ë¤³¤È¤òɽ¤¹¡£
ÄêµÁ¥Õ¥©¡¼¥à¤½¤Î¤â¤Î¤Ï½èÃÖ¤·¤Ê¤¤
¡Ê¤Ä¤Þ¤ê¡¢edbug¤ÏÄêµÁ¥Õ¥©¡¼¥à¤ÎÁ°¸å¤ÇÄä»ß¤·¤Ê¤¤¡Ë¤¬¡¢
¤³¤ÎÆâ¦¤Ë¤¢¤ë¥Õ¥©¡¼¥à¤Ïŵ·¿Åª¤Ë¤Ï½èÃÖ¤µ¤ì¤ë¡£
¥¡¼¥ï¡¼¥É&define
¤Ï¥ê¥¹¥È»ÅÍͤκǽé¤ÎÍ×ÁǤǤ¢¤ëɬÍפ¬¤¢¤ë¡£
nil
¸½ºß¤Î°ú¿ô¥ê¥¹¥È¤Î¥ì¥Ù¥ë¤Ë¤ª¤¤¤Æ°ìÃפ¹¤ë°ú¿ô¤¬¤Ê¤±¤ì¤ÐÀ®¸ù¤¹¤ë¡£ ¤µ¤â¤Ê¤±¤ì¤Ð¼ºÇÔ¡£ Éôʬ¥ê¥¹¥È»ÅÍͤȰʲ¼¤Î¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤ÎÎã¤ò»²¾È¡£
gate
¤¤¤«¤Ê¤ë°ú¿ô¤È¤â°ìÃפ·¤Ê¤¤¤¬¡¢¤³¤Î¥²¡¼¥È¤òÄ̤ë¤È¡¢
¤³¤Î¥ì¥Ù¥ë¤Î»ÅÍͤλĤê¤ÎÉôʬ¤È°ìÃפòÄ´¤Ù¤ëºÝ¤Ë¤Ï
¥Ð¥Ã¥¯¥È¥é¥Ã¥¯¤ò¶Ø»ß¤¹¤ë¡£
¤³¤ì¤Ï¼ç¤Ë¤è¤ê¾Ü¤·¤¤¹½Ê¸¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë»È¤¦¡£
¾Ü¤·¤¯¤ÏBacktracking¤ò»²¾È¡£
Îã¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤Îlet
¤ò»²¾È¡£
¤½¤Î¾¤Î¥·¥ó¥Ü¥ë
»ÅÍͥꥹ¥È¤Î¤½¤Î¾¤Î¥·¥ó¥Ü¥ë¤Ï½Ò¸ì¤Ç¤¢¤ë¤«´ÖÀÜ»ÅÍͤǤ¢¤ë¡£
¥·¥ó¥Ü¥ë¤ËedebugÍÑ»ÅÍͤ¬¤¢¤ì¤Ð¡¢
¤³¤Î´ÖÀÜ»ÅÍͤϡ¢¥·¥ó¥Ü¥ë¤Î¤«¤ï¤ê¤Ë»È¤ï¤ì¤ë»ÅÍͥꥹ¥È¤Ç¤¢¤ë¤«¡¢
°ú¿ô¤ò½èÍý¤¹¤ë¤¿¤á¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë´Ø¿ô¤Ç¤¢¤ë¤³¤È¡£
»ÅÍͤϡ¢¥Þ¥¯¥í¸þ¤±¤Ëdef-edebug-spec
¤ÇÄêµÁ¤·¤¿»ÅÍͤǤ¢¤Ã¤Æ¤â¤è¤¤¡£
°Ê²¼¤Îdefun
¤ÎÎã¤ò»²¾È¡£
¤µ¤â¤Ê¤±¤ì¤Ð¡¢¥·¥ó¥Ü¥ë¤Ï½Ò¸ì¤Ç¤¢¤ë¤³¤È¡£
½Ò¸ì¤Ï°ú¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¡¢½Ò¸ì¤¬nil
¤òÊÖ¤¹¤È»ÅÍͤϼºÇÔ¤¹¤ë¡£
¤¤¤º¤ì¤Î¾ì¹ç¤Ç¤â¡¢Åö³º°ú¿ô¤Ï½èÃÖ¤µ¤ì¤Ê¤¤¡£
ŬÅö¤Ê½Ò¸ì¤Ë¤Ï¡¢symbolp
¡¢integerp
¡¢
stringp
¡¢vectorp
¡¢atom
¤¬¤¢¤ë¡£
[elements…]
Í×ÁǤΥ٥¯¥È¥ë¤ÏÍ×ÁÇ·²¤òñ°ì¤Î¥°¥ë¡¼¥×»ÅÍͤˤޤȤá¤ë¡£ ¤³¤Î°ÕÌ£¤Ï¥Ù¥¯¥È¥ë¤Î°ÕÌ£¤È¤Ï´Ø·¸¤Ê¤¤¡£
"string"
°ú¿ô¤Ïstring¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£
¤³¤Î»ÅÍͤϡ¢symbol¤Î̾Á°¤¬string¤Ç¤¢¤ë
¥¯¥©¡¼¥È¤È¤·¤¿¥·¥ó¥Ü¥ë'symbol
¤ÈÅù²Á¤Ç¤¢¤ë¤¬¡¢
ʸ»úÎó¤Î¤Û¤¦¤¬Ë¾¤Þ¤·¤¤¡£
(vector elements…)
°ú¿ô¤Ï¡¢»ÅÍÍÆâ¤Îelements¤Ë°ìÃפ¹¤ë¤â¤Î¤òÍ×ÁǤȤ¹¤ë¥Ù¥¯¥È¥ë¤Ç¤¢¤ë¤³¤È¡£ °Ê²¼¤Î¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤ÎÎã¤ò»²¾È¡£
(elements…)
¤½¤Î¾¤Î¥ê¥¹¥È¤ÏÉôʬ¥ê¥¹¥È»ÅÍͤǤ¢¤ê¡¢ °ú¿ô¤Ï»ÅÍÍelements¤Ë°ìÃפ¹¤ë¤â¤Î¤òÍ×ÁǤȤ¹¤ë¥ê¥¹¥È¤Ç¤¢¤ë¤³¤È¡£
Éôʬ¥ê¥¹¥È»ÅÍͤϥɥåÈÂХꥹ¥È¤Ç¤â¤è¤¯¡¢¤½¤Î¾ì¹ç¡¢
Âбþ¤¹¤ë¥ê¥¹¥È°ú¿ô¤Ï¥É¥Ã¥ÈÂХꥹ¥È¤Ç¤¢¤ë¡£
¤¢¤ë¤¤¤Ï¡¢¥É¥Ã¥ÈÂХꥹ¥È»ÅÍͤκǸå¤ÎCDR¤Ï
¡Ê(spec . [(more specs…)])
¤Ê¤É¤Î
¥°¥ë¡¼¥×¤ä´ÖÀÜ»ÅÍͤò²ð¤·¤¿¡Ë
Ê̤ÎÉôʬ¥ê¥¹¥È»ÅÍͤǤ¢¤Ã¤Æ¤â¤è¤¤¤¬¡¢
¤½¤ì¤é¤ÎÍ×ÁǤϥɥåÈÂФǤϤʤ¤¥ê¥¹¥È°ú¿ô¤Ë°ìÃפ¹¤ë¡£
¤³¤ì¤Ï¡¢°Ê²¼¤Î¥Ð¥Ã¥¯¥¯¥©¡¼¥È¤ÎÎã¤Î¤è¤¦¤ÊºÆµ¢»ÅÍͤËÍÍѤǤ¢¤ë¡£
¤³¤Î¤è¤¦¤ÊºÆµ¢¤ò½ª¤é¤»¤ë¤¦¤¨¤Î»ÅÍÍnil
¤â»²¾È¡£
(specs . nil)
¤ä
(specs . (sublist-elements…))
¤Î¤è¤¦¤ÊÉôʬ¥ê¥¹¥È»ÅÍͤÏ
(specs sublist-elements…)
¤ÈÅù²Á¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¡£
&define
¤Î¤¦¤·¤í¤ËÄɲäǤ¤ë»ÅÍͤΰìÍ÷¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£
°Ê²¼¤Îdefun
¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
name
°ú¿ô¤Ï¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢ÄêµÁ¥Õ¥©¡¼¥à¤Î̾Á°¤Ç¤¢¤ë¡£
ÄêµÁ¥Õ¥©¡¼¥à¤Ë¤Ïñ°ì¤Î̾Á°¥Õ¥£¡¼¥ë¥É¤¬¤¢¤ëɬÍפϤʤ¯¡¢ Ê£¿ô¤Î̾Á°¥Õ¥£¡¼¥ë¥É¤ò»ý¤Ã¤Æ¤¤¤Æ¤â¤è¤¤¡£
:name
¤³¤Î¹½Â¤¤Ï°ú¿ô¤Ë¤Ï¼ÂºÝ¤Ë¤Ï°ìÃפ·¤Ê¤¤¡£
:name
¤Ë³¤¯Í×ÁǤϥ·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£
ÄêµÁ¤ËÂФ¹¤ëÄɲäÎ̾Á°Í×ÁǤȤ·¤Æ»È¤¦¡£
ÄêµÁ¤Î̾Á°¤Ë°ì°Õ¤ÇÀÅŪ¤ÊÍ×ÁǤòÄɲ乤뤿¤á¤Ë»È¤¦¡£
Ê£¿ô¤¢¤Ã¤Æ¤â¤è¤¤¡£
arg
°ú¿ô¤Ï¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢ÄêµÁ¥Õ¥©¡¼¥à¤Î°ú¿ô¤Î̾Á°¤Ç¤¢¤ë¡£ ¤·¤«¤·¡¢¥é¥à¥À¥ê¥¹¥È¥¡¼¥ï¡¼¥É¡Ê‘&’¤Ç»Ï¤Þ¤ë¥·¥ó¥Ü¥ë¡Ë¤Ïµö¤µ¤ì¤Ê¤¤¡£
lambda-list
¥é¥à¥À¥ê¥¹¥È¡¢¤¹¤Ê¤ï¤Á¡¢¥é¥à¥À¼°¤Î°ú¿ô¥ê¥¹¥È¤Ë°ìÃפ¹¤ë¡£
def-body
°ú¿ô¤Ï¡¢ÄêµÁÆâ¤Î¥³¡¼¥ÉËÜÂΤǤ¢¤ë¡£
¤³¤ì¤Ï¡¢¾å¤Ë½Ò¤Ù¤¿body
¤Ë»÷¤Æ¤¤¤ë¤¬¡¢
ÄêµÁËÜÂΤÏÄêµÁ¤Ë´ØÏ¢¤·¤¿¾ðÊó¤òÄ´¤Ù¤ë°Û¤Ê¤ëedebug¸Æ¤Ó½Ð¤·¤Ç½èÃÖ¤¹¤ëɬÍפ¬¤¢¤ë¡£
ÄêµÁÆâ¤Î¥Õ¥©¡¼¥à¤ÎºÇ¾å°Ì¥ì¥Ù¥ë¤Î¥ê¥¹¥È¤Ë¤Ïdef-body
¤ò»È¤¦¡£
def-form
°ú¿ô¤Ï¡¢ÄêµÁÆâ¤Îñ°ì¤ÎºÇ¾å°Ì¥ì¥Ù¥ë¤Î¥Õ¥©¡¼¥à¤Ç¤¢¤ë¡£
¤³¤ì¤Ïdef-body
¤Ë»÷¤Æ¤¤¤ë¤¬¡¢
¥Õ¥©¡¼¥à¤Î¥ê¥¹¥È¤Ç¤Ï¤Ê¤¯Ã±°ì¤Î¥Õ¥©¡¼¥à¤Ë°ìÃפ¹¤ë¤â¤Î¤Ë»È¤¦¡£
ÆÃÊ̤ʾì¹ç¤È¤·¤Æ¡¢def-form
¤Ï
¥Õ¥©¡¼¥à¤ò¼Â¹Ô¤·¤¿¤È¤¤Ë¥È¥ì¡¼¥¹¾ðÊó¤ò½ÐÎϤ·¤Ê¤¤¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
°Ê²¼¤Îinteractive
¤ÎÎã¤ò»²¾È¡£