Next: , Previous: Simple Types, Up: Customization Types   [Contents][Index]


13.4.2 Ê£¹ç·¿

ñ½ã·¿¤¬Å¬ÀڤǤʤ¤¾ì¹ç¤Ë¤Ï¡¢ ¾¤Î·¿¤«¤é¿·¤¿¤Ê·¿¤òºî¤ê¾å¤²¤ëÊ£¹ç·¿¤ò»È¤¨¤Þ¤¹¡£ ¤³¤ì¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£

(restricted-sexp :match-alternatives criteria)

Ãͤϡ¢criteria¤Î1¤Ä¤òËþ¤¿¤¹Ç¤°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤è¤¤¡£ criteria¤Ï¥ê¥¹¥È¤Ç¤¢¤ê¡¢¤½¤Î³ÆÍ×ÁǤϰʲ¼¤Î1¤Ä¤Ç¤¢¤ë¤³¤È¡£

¤¿¤È¤¨¤Ð¡¢

(restricted-sexp :match-alternatives
                 (integerp 't 'nil))

¤Ï¡¢À°¿ô¡¢t¡¢nil¤¬Àµ¤·¤¤ÃͤǤ¢¤ë¡£

¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤ÎÀµ¤·¤¤ÃͤϤ½¤ÎÆþÎϹ½Ê¸¤Çɽ¼¨¤·¡¢ ¥æ¡¼¥¶¡¼¤Ï¤½¤ì¤é¤ò¥Æ¥­¥¹¥È¤È¤·¤ÆÊÔ½¸¤¹¤ë¡£

(cons car-type cdr-type)

Ãͤϥ³¥ó¥¹¥»¥ë¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢ ¤½¤ÎCAR¤Ïcar-type¤Ë¹ç¤¤¡¢¤«¤Ä¡¢ ¤½¤ÎCDR¤Ïcdr-type¤Ë¹ç¤¦É¬Íפ¬¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢(cons string symbol)¤Ï¡¢ ("foo" . foo)¤Ê¤É¤ÎÃͤ˰ìÃפ¹¤ë¥«¥¹¥¿¥Þ¥¤¥º·¿¤Ç¤¢¤ë¡£

¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¡¢ CAR¤ÈCDR¤Ï¡¢ ¤½¤ì¤é¤Ë»ØÄꤷ¤¿·¿¤Ë±þ¤¸¤ÆÊÌ¡¹¤Ëɽ¼¨¤µ¤ì¡¢¸ÄÊ̤ËÊÔ½¸¤Ç¤­¤ë¡£

(list element-types…)

ÃͤÏelement-types¤Ë»ØÄꤷ¤¿¤È¤ª¤ê¤Î¸Ä¿ô¤Î¥ê¥¹¥È¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢ ³ÆÍ×ÁǤÏelement-type¤Ë¹ç¤¦¤³¤È¡£

¤¿¤È¤¨¤Ð¡¢(list integer string function)¤Ï¡¢ 3Í×ÁǤΥꥹ¥È¤ò°ÕÌ£¤·¡¢ Âè1Í×ÁǤÏÀ°¿ô¡¢Âè2Í×ÁǤÏʸ»úÎó¡¢Âè3Í×ÁǤϴؿô¤Ç¤¢¤ë¤³¤È¤ò»ØÄꤹ¤ë¡£

¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¡¢ ³ÆÍ×ÁǤϡ¢¤½¤ì¤é¤Ë»ØÄꤷ¤¿·¿¤Ë±þ¤¸¤ÆÊÌ¡¹¤Ëɽ¼¨¤µ¤ì¡¢¸ÄÊ̤ËÊÔ½¸¤Ç¤­¤ë¡£

(vector element-types…)

list¤ÈƱÍͤÀ¤¬¡¢Ãͤϥꥹ¥È¤Ç¤Ï¤Ê¤¯¥Ù¥¯¥È¥ë¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£ ¤½¤ÎÍ×ÁǤÏlist¤Î¾ì¹ç¤ÈƱ¤¸¡£

(choice alternative-types...)

Ãͤϡ¢alternative-types¤Î¾¯¤Ê¤¯¤È¤â1¤Ä¤Ë¹ç¤¦É¬Íפ¬¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢(choice integer string)¤Ï¡¢À°¿ô¤«Ê¸»úÎó¤òµö¤¹¡£

¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤Ï¥á¥Ë¥å¡¼¤ò»È¤Ã¤ÆÁªÂò»è¤òÁª¤Ó¡¢ ¤½¤ÎÁªÂò»è¤Ë¤ª¤¤¤ÆÉáÄ̤ÎÊýË¡¤ÇÃͤòÊÔ½¸¤¹¤ë¡£

Ä̾¤³¤Î¥á¥Ë¥å¡¼¤ÎÁªÂò»è̾¤Ï¡¢ÁªÂò»è¤«¤é¼«Æ°Åª¤Ë·èÄꤵ¤ì¤ë¤¬¡¢ ÁªÂò»è¤Ë:tag¥­¡¼¥ï¡¼¥É¤ò´Þ¤á¤ë¤³¤È¤Ç¡¢ ¥á¥Ë¥å¡¼¤Ë°Û¤Ê¤ë̾Á°¤ò»ØÄê¤Ç¤­¤ë¡£ ¤¿¤È¤¨¤Ð¡¢À°¿ô¤¬¶õÇò¤Î¸Ä¿ô¤òɽ¤·¡¢Ê¸»úÎ󤬤½¤Î¤Þ¤Þ»È¤¦¥Æ¥­¥¹¥È¤òɽ¤¹¾ì¹ç¤Ë¤Ï¡¢ ¤Ä¤®¤Î¤è¤¦¤Ë¥«¥¹¥¿¥Þ¥¤¥º·¿¤ò½ñ¤¯¡£

(choice (integer :tag "Number of spaces")
        (string :tag "Literal text"))

¤½¤¦¤¹¤ë¤È¡¢¥á¥Ë¥å¡¼¤Ë¤Ï¡¢ ‘Number of spaces’¤È‘Literal Text’¤¬É½¼¨¤µ¤ì¤ë¡£

const°Ê³°¤Înil¤¬ÀµÅö¤ÊÃͤǤϤʤ¤ÁªÂò»è¤Ç¤Ï¡¢ ¤½¤Î¤è¤¦¤ÊÁªÂò»è¤Ë¤Ï:value¥­¡¼¥ï¡¼¥É¤ò»È¤Ã¤Æ ÀµÅö¤Ê¥Ç¥Õ¥©¥ë¥ÈÃͤò»ØÄꤹ¤ë¤³¤È¡£ See Type Keywords¡£

(const value)

ÃͤÏvalue¤Ç¤¢¤ë¤³¤È¡£ ¤½¤ì°Ê³°¤Ïµö¤µ¤Ê¤¤¡£

const¤Î¼ç¤ÊÍÑÅÓ¤Ïchoice¤ÎÆâ¦¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢(choice integer (const nil))¤Ï¡¢À°¿ô¤«nil¤òµö¤¹¡£

choice¤ÎÆâ¦¤Ç¤Ï¡¢const¤Ë¤·¤Ð¤·¤Ð:tag¤ò»È¤¦¡£ ¤¿¤È¤¨¤Ð¡¢

(choice (const :tag "Yes" t)
        (const :tag "No" nil)
        (const :tag "Ask" foo))

¤Ï¡¢t¤Ï¡Øyes¡Ù¡Ê¤Ï¤¤¡Ë¡¢nil¤Ï¡Øno¡Ù¡Ê¤¤¤¤¤¨¡Ë¡¢ foo¤Ï¡Øask¡Ù¡ÊÌ䤤¹ç¤ï¤»¤ë¡Ë¤ò°ÕÌ£¤¹¤ëÊÑ¿ô¤òµ­½Ò¤¹¤ë¡£

(other value)

¤³¤ÎÁªÂò»è¤ÏǤ°Õ¤ÎLispÃͤ˰ìÃפ¹¤ë¤¬¡¢ ¥æ¡¼¥¶¡¼¤¬¤³¤ÎÁªÂò»è¤òÁª¤Ö¤È¡¢ÃÍvalue¤òÁª¤Ö¤³¤È¤Ë¤Ê¤ë¡£

other¤Ï¡¢¼ç¤Ë¡¢choice¤ÎºÇ¸å¤ÎÍ×ÁǤȤ·¤Æ»È¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢

(choice (const :tag "Yes" t)
        (const :tag "No" nil)
        (other :tag "Ask" foo))

¤Ï¡¢t¤Ï¡Øyes¡Ù¡Ê¤Ï¤¤¡Ë¡¢nil¤Ï¡Øno¡Ù¡Ê¤¤¤¤¤¨¡Ë¡¢ ¤½¤ì°Ê³°¤Ï¡Øask¡Ù¡ÊÌ䤤¹ç¤ï¤»¤ë¡Ë¤ò°ÕÌ£¤¹¤ë¤³¤È¤ò¼¨¤¹¡£ ¥æ¡¼¥¶¡¼¤¬ÁªÂò»è¤Î¥á¥Ë¥å¡¼¤«¤é‘Ask’¤òÁª¤Ö¤È¡¢ÃÍfoo¤ò»ØÄꤹ¤ë¡£ ¤·¤«¤·¡¢¡Êt¤Ç¤ânil¤Ç¤âfoo¤Ç¤â¤Ê¤¤¡Ë¤½¤ì°Ê³°¤ÎÃͤϡ¢ foo¤ÈƱÍͤˑAsk’¤Èɽ¼¨¤µ¤ì¤ë¡£

(function-item function)

const¤ÈƱÍͤÀ¤¬¡¢´Ø¿ô¤Ç¤¢¤ë¤è¤¦¤ÊÃͤ˻Ȥ¦¡£ ¤³¤ì¤Ï¡¢´Ø¿ô̾¤Ë²Ã¤¨¤ÆÀâÌÀʸ»úÎó¤òɽ¼¨¤¹¤ë¡£ ÀâÌÀʸ»úÎó¤Ï¡¢:doc¤Ë»ØÄꤷ¤¿¤â¤Î¤«¡¢ function¤½¤Î¤â¤Î¤ÎÀâÌÀʸ»úÎó¤Ç¤¢¤ë¡£

(variable-item variable)

const¤ÈƱÍͤÀ¤¬¡¢ÊÑ¿ô̾¤Ç¤¢¤ë¤è¤¦¤ÊÃͤ˻Ȥ¦¡£ ¤³¤ì¤Ï¡¢ÊÑ¿ô̾¤Ë²Ã¤¨¤ÆÀâÌÀʸ»úÎó¤òɽ¼¨¤¹¤ë¡£ ÀâÌÀʸ»úÎó¤Ï¡¢:doc¤Ë»ØÄꤷ¤¿¤â¤Î¤«¡¢ variable¤½¤Î¤â¤Î¤ÎÀâÌÀʸ»úÎó¤Ç¤¢¤ë¡£

(set elements…)

Ãͤϥꥹ¥È¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢ ¤½¤Î³ÆÍ×ÁǤÏelements¤Ë»ØÄꤷ¤¿¤â¤Î¤Î1¤Ä¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£ ¤³¤ì¤Ï¡¢¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¥Á¥§¥Ã¥¯¥ê¥¹¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë¡£

(repeat element-type)

Ãͤϥꥹ¥È¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢ ¤½¤Î³ÆÍ×ÁǤÏelement-type¤Ë»ØÄꤷ¤¿·¿¤Ë¹ç¤¦É¬Íפ¬¤¢¤ë¡£ ¤³¤ì¤Ï¡¢¥«¥¹¥¿¥Þ¥¤¥º¥Ð¥Ã¥Õ¥¡¤Ë¤Ï¡¢ Í×ÁǤòÄɲä·¤¿¤êºï½ü¤·¤¿¤ê¤¹¤ë‘[INS]’¤ä‘[DEL]’¥Ü¥¿¥ó¤òȼ¤Ã¤Æ¡¢ Í×ÁǤΥꥹ¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë¡£