Next: Splicing into Lists, Previous: Simple Types, Up: Customization Types [Contents][Index]
ñ½ã·¿¤¬Å¬ÀڤǤʤ¤¾ì¹ç¤Ë¤Ï¡¢ ¾¤Î·¿¤«¤é¿·¤¿¤Ê·¿¤òºî¤ê¾å¤²¤ëÊ£¹ç·¿¤ò»È¤¨¤Þ¤¹¡£ ¤³¤ì¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
(restricted-sexp :match-alternatives criteria)
Ãͤϡ¢criteria¤Î1¤Ä¤òËþ¤¿¤¹Ç¤°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤è¤¤¡£ criteria¤Ï¥ê¥¹¥È¤Ç¤¢¤ê¡¢¤½¤Î³ÆÍ×ÁǤϰʲ¼¤Î1¤Ä¤Ç¤¢¤ë¤³¤È¡£
nil
¤«nil
°Ê³°¤òÊÖ¤¹¡£
¥ê¥¹¥ÈÆâ¤Î½Ò¸ì¤¬¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Ænil
°Ê³°¤òÊÖ¤»¤Ð
¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò¼õÍý¤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
'object
¡£
¥ê¥¹¥ÈÆâ¤Î¤³¤Î¼ï¤ÎÍ×ÁǤϡ¢
object¤½¤Î¤â¤Î¤¬¼õÍý¤Ç¤¤ëÃͤǤ¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
¤¿¤È¤¨¤Ð¡¢
(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]’¥Ü¥¿¥ó¤òȼ¤Ã¤Æ¡¢ Í×ÁǤΥꥹ¥È¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë¡£