Next: , Previous: Format of Descriptions, Up: Format of Descriptions   [Contents][Index]


1.3.7.1 ´Ø¿ô¤Îµ­½ÒÎã

´Ø¿ô¤Îµ­½Ò¤Ç¤Ï¡¢¤Þ¤º»Ï¤á¤ËÀâÌÀÂоݤδؿô̾¤¬¤¢¤ê¤Þ¤¹¡£ Ʊ¤¸¹Ô¤Ë¤Ï¡¢°ú¿ô̾¤ÎʤӤⳤ­¤Þ¤¹¡£ ¤³¤ì¤é¤Î̾Á°¤Ï¡¢ÀâÌÀʸ¤ÎÃæ¤Ç°ú¿ô¤ÎÃͤò»²¾È¤¹¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£

°ú¿ô¤Ê¤é¤Ó¤Ë¥­¡¼¥ï¡¼¥É&optional¤¬¸½¤ì¤Æ¤¤¤ì¤Ð¡¢ ¤½¤ì°Ê¹ß¤Î°ú¿ô¤ò¾Êά¤Ç¤­¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡Ê¾Êά¤·¤¿°ú¿ô¤ÎÃͤÏnil¡Ë¡£ ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ë&optional¤ò½ñ¤¤¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

¥­¡¼¥ï¡¼¥É&rest ¡Ê¤³¤Î¤¢¤È¤Ë¤Ï1¤Ä¤Î°ú¿ô̾¤À¤±¤¬Â³¤¯¡Ë¤Ï¡¢ »Ä¤ê¤Î°ú¿ô¤¬²¿¸Ä¤Ç¤â¤è¤¤¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ ľ¸å¤Ë¤¢¤ë1¤Ä¤Î°ú¿ô̾¤Ï¡¢ÊÑ¿ô¤È¤·¤Æ¤ÎÃͤò»ý¤Á¡¢ ¤½¤ÎÃͤϻĤê¤Î¤¹¤Ù¤Æ¤Î°ú¿ô¤Î¥ê¥¹¥È¤Ç¤¹¡£ ´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ë&rest¤ò½ñ¤¤¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

¤Ç¤Ï¡¢²¾ÁÛŪ¤Ê´Ø¿ôfoo¤Îµ­½Ò¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

Function: foo integer1 &optional integer2 &rest integers

´Ø¿ôfoo¤Ï¡¢integer2¤«¤éinteger1¤ò°ú¤­»»¤·¡¢ »Ä¤ê¤Î¤¹¤Ù¤Æ¤Î°ú¿ô¤ò¸º»»·ë²Ì¤Ë²Ã¤¨¤ë¡£ integer2¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¿ô19¤«¤é°ú¤­»»¤¹¤ë¡£

(foo 1 5 3 9)
     ⇒ 16
(foo 5)
     ⇒ 14

¤è¤ê°ìÈÌŪ¤Ë¤Ï¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£

(foo w x y…)
≡
(+ (- x w) y…)

¡Êinteger¡¢integer1¡¢buffer¤Ê¤É¤Î¡Ë·¿Ì¾¤ò̾Á°¤È¤¹¤ë°ú¿ô¤Ï¡¢ ¤½¤Î·¿¤ÎÃͤǤ¢¤ë¤È²¾Äꤷ¤Þ¤¹¡£ ¡Êbuffers¤Î¤è¤¦¤Ë¡Ë·¿¤òÊ£¿ô·Á¤Ë¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ ¤·¤Ð¤·¤Ð¡¢¤½¤Î·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤ò°ÕÌ£¤·¤Þ¤¹¡£ object¤È¤¤¤¦Ì¾Á°¤Î°ú¿ô¤Ï¡¢Ç¤°Õ¤Î·¿¤Ç¤«¤Þ¤¤¤Þ¤»¤ó¡£ ¡ÊEmacs¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Î°ìÍ÷¤Ë¤Ä¤¤¤Æ¤Ï¡¢see Lisp Data Types¡Ë¡£ ¡Ênew-file¤Ê¤É¤Î¡Ë¤½¤Î¾¤Î̾Á°¤Î°ú¿ô¤Ï¡¢´Ø¿ô¤ÎÀâÌÀʸ¤ÎÃæ¤Ç¸ÀµÚ¤·¤Þ¤¹¡£ Ê£¿ô¤Î´Ø¿ô¤Î°ú¿ô¤Ë¶¦Ä̤¹¤ëÆÃħ¤Ë¤Ä¤¤¤Æ¡¢ Àá¤Î»Ï¤á¤ÇÀâÌÀ¤¹¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£

&optional¤È&rest¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤ÀâÌÀ¤Ï¡¢ See Lambda Expressions¡£

¥³¥Þ¥ó¥É¡¢¥Þ¥¯¥í¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Îµ­½Ò¤âƱ¤¸·Á¼°¤Ç¤¹¤¬¡¢ ¡Ö´Ø¿ô¡×¤Î¤«¤ï¤ê¤Ë ¡Ö¥³¥Þ¥ó¥É¡×¡¢¡Ö¥Þ¥¯¥í¡×¡¢¡Ö¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¡×¤Î¤¤¤º¤ì¤«¤Ç¤¹¡£ ¥³¥Þ¥ó¥É¤Ï¡¢ÂÐÏÃŪ¤Ë¸Æ¤Ó½Ð¤»¤ëñ¤Ê¤ë´Ø¿ô¤Ç¤¹¡£ ¥Þ¥¯¥í¤Ï´Ø¿ô¤È¤Ï°ã¤Ã¤¿ÊýË¡¤Ç°ú¿ô¤ò½èÍý¤·¤Þ¤¹¡Ê°ú¿ô¤òɾ²Á¤·¤Ê¤¤¡Ë¤¬¡¢ Ʊ¤¸ÊýË¡¤Ç°ú¿ô¤òµ­¤·¤Þ¤¹¡£

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Îµ­½Ò¤Ç¤Ï¡¢¾Êά²Äǽ¤Ê°ú¿ô¤ä·«¤êÊÖ¤µ¤ì¤ë°ú¿ô¤ò ¼¨¤¹¤¿¤á¤Ë¡¢¤è¤êÊ£»¨¤Êµ­Ë¡¤ò»È¤¤¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢°ú¿ôʤӤò¸Ä¡¹¤Î°ú¿ô¤ËʬΥ¤¹¤ëÊýË¡¤¬Ê£»¨¤À¤«¤é¤Ç¤¹¡£ ‘[optional-arg]’¤Ï¡¢ optional-arg¤¬¾Êά²Äǽ¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢‘repeated-args’¤Ï¡¢0¸Ä°Ê¾å¤Î°ú¿ô¤ò¼¨¤·¤Þ¤¹¡£ ¤¤¤¯¤Ä¤«¤Î°ú¿ô¤ò¥ê¥¹¥È¹½Â¤¤ÎÆâ¦¤Ë¤Þ¤È¤á¤ë¤È¤­¤Ë¤Ï¡¢ ³ç¸Ì¤ò»È¤¤¤Þ¤¹¡£

Special Form: count-loop (var [from to [inc]]) body

¤³¤Î²¾ÁÛŪ¤Ê¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢ ¥Õ¥©¡¼¥à·²body¤ò¼Â¹Ô¤·¤Æ¤«¤éÊÑ¿ôvar¤òÁý¤ä¤¹¤³¤È¤ò È¿Éü¤¹¤ë¥ë¡¼¥×¤ò¼Â¸½¤¹¤ë¡£ ºÇ½é¤Ï¡¢ÊÑ¿ô¤ÎÃͤÏfrom¤Ç¤¢¤ë¡£ °Ê¹ß¤ÎÈ¿Éü¤Ç¤Ï¡¢ÊÑ¿ô¤ò1¡Ê¤¢¤ë¤¤¤Ï¡¢»ØÄ꤬¤¢¤ì¤Ðinc¤À¤±¡ËÁý¤ä¤¹¡£ var¤¬to¤ËÅù¤·¤¯¤Ê¤ë¤È¡¢ body¤ò¼Â¹Ô¤»¤º¤Ë¥ë¡¼¥×¤«¤éÈ´¤±¤ë¡£ Îã¤ò¼¨¤¹¡£

(count-loop (i 0 10)
  (prin1 i) (princ " ")
  (prin1 (aref vector i))
  (terpri))

from¤Èto¤ò¾Êά¤¹¤ë¤È¡¢ ¥ë¡¼¥×³«»ÏÁ°¤Ëvar¤Ënil¤ò«Çû¤·¡¢ ³ÆÈ¿Éü¤Î³«»Ï»þ¤Ëvar¤¬nil°Ê³°¤Ç¤¢¤ë¤È¥ë¡¼¥×¤«¤éÈ´¤±½Ð¤ë¡£

(count-loop (done)
  (if (pending)
      (fixit)
    (setq done t)))

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ç¤Ï¡¢°ú¿ôfrom¤Èto¤Ï¾Êά¤Ç¤­¤ë¤¬¡¢ ξ¼Ô¤òƱ»þ¤Ë»ØÄꤹ¤ë¤«¡¢Æ±»þ¤Ë¾Êά¤¹¤ë¤³¤È¡£ ¤³¤ì¤é¤ò»ØÄꤷ¤¿¾ì¹ç¡¢inc¤ò»ØÄꤷ¤Æ¤â¤è¤¤¡£ ¤³¤ì¤é¤Î°ú¿ô¤Ï¡¢°ú¿ôvar¤È¤È¤â¤Ë¥ê¥¹¥È¤Ë¤Þ¤È¤á¤ë¡£ ¤³¤ì¤Ïbody¤È¶èÊ̤¹¤ë¤¿¤á¤Ç¤¢¤ê¡¢ body¤Ï»Ä¤ê¤Î¥Õ¥©¡¼¥à¤ÎÍ×ÁǤ¹¤Ù¤Æ¤ò´Þ¤à¡£