Next: , Previous: Instrumenting Macro Calls, Up: Instrumenting Macro Calls   [Contents][Index]


17.2.15.1 »ÅÍͥꥹ¥È

¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Î°ú¿ô¤Î¤¢¤ë¤â¤Î¤Ïɾ²Á¤·Ê̤Τâ¤Î¤Ïɾ²Á¤·¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ 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¤Ä¤ÎÁªÂò»è¤È¤·¤Æ¥°¥ë¡¼¥×¤Ë¤Þ¤È¤á¤ë¤Ë¤Ï¡¢ ¤½¤ì¤é¤ò[…]¤Ç°Ï¤à¡£

&not

&or¤ò»È¤Ã¤¿¤«¤è¤¦¤Ë¸å³¤ÎÍ×ÁǤòÁªÂò»è¤È¤·¤Æ°ìÃפµ¤»¤ë¤¬¡¢ ¤É¤ì¤«¤¬°ìÃפ¹¤ë¤È»ÅÍͤϼºÇÔ¡£ ¤É¤ì¤Ë¤â°ìÃפ·¤Ê¤±¤ì¤Ð¡¢»ÅÍÍ&not¤ÏÀ®¸ù¡£

&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¤ÎÎã¤ò»²¾È¡£