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¤Ä¤Î¼°¡£
placeCommon 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¤ÎÎã¤ò»²¾È¡£