Next: , Previous: Control Structures, Up: Control Structures   [Contents][Index]


9.1 Ã༡¼Â¹Ô

¸½¤ì¤ë½çÈ֤˥ե©¡¼¥à¤òɾ²Á¤¹¤ë¤³¤È¤Ï¡¢ 1¤Ä¤Î¥Õ¥©¡¼¥à¤«¤éÊ̤Υե©¡¼¥à¤ØÀ©¸æ¤ò°Ü¤¹¤â¤Ã¤È¤â°ìÈÌŪ¤ÊÊýË¡¤Ç¤¹¡£ ´Ø¿ôËÜÂΤʤɤΤ¢¤ë¼ï¤Îʸ̮¤Ç¤Ï¡¢¼«Æ°Åª¤Ë¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤½¤ì°Ê³°¤Ç¤Ï¡¢¤³¤ì¤ò¹Ô¤¦À©¸æ¹½Â¤¤Î¹½Ê¸¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ progn¤¬¤½¤ÎÀ©¸æ¹½Â¤¤Ç¡¢Lisp¤Î¤â¤Ã¤È¤âñ½ã¤ÊÀ©¸æ¹½Â¤¤Ç¤¹¡£

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àprogn¤Ï¤Ä¤®¤Î¤è¤¦¤Ê·Á¤Ç¤¹¡£

(progn a b c …)

¤³¤ì¤Ï¡¢¥Õ¥©¡¼¥à¡¢a¡¢b¡¢c¡¢¡Ä¤ò¤³¤Î½ç¤Ëɾ²Á¤·¤Þ¤¹¡£ ¤³¤ì¤é¤Î¥Õ¥©¡¼¥à¤òprogn¥Õ¥©¡¼¥à¤ÎËÜÂΤȸƤӤޤ¹¡£ ËÜÂΤκǸå¤Î¥Õ¥©¡¼¥à¤ÎÃͤ¬¡¢prognÁ´ÂΤÎÃͤˤʤê¤Þ¤¹¡£

½é´ü¤Î¤³¤í¤ÎLisp¤Ç¤Ï¡¢progn¤Ï¡¢ 2¤Ä°Ê¾å¤Î¥Õ¥©¡¼¥à¤òÃ༡¼Â¹Ô¤·¤½¤ì¤é¤ÎºÇ¸å¤ÎÃͤò»È¤¦Í£°ì¤ÎÊýË¡¤Ç¤·¤¿¡£ ¤·¤«¤·¡¢¥×¥í¥°¥é¥Þ¤Ï¡¢¡ÊÅö»þ¤Ï¡Ë1¤Ä¤Î¥Õ¥©¡¼¥à¤·¤«µö¤µ¤ì¤Æ¤¤¤Ê¤¤ ´Ø¿ô¤ÎËÜÂΤǤϡ¢ progn¤ò»È¤¦É¬Íפ¬¤·¤Ð¤·¤Ð¤¢¤ë¤³¤È¤Ëµ¤¤Å¤­¤Þ¤·¤¿¡£ ¤½¤Î¤¿¤á¡¢´Ø¿ôËÜÂΤò¡Ø°ÅÌÛ¤Îprogn¡Ù¤Ë¤·¤¿¤Î¤Ç¤¹¡£ ¤Ä¤Þ¤ê¡¢¼ÂºÝ¤Îprogn¤ÎËÜÂΤΤ褦¤Ë¡¢ Ê£¿ô¤Î¥Õ¥©¡¼¥à¤òµö¤¹¤è¤¦¤Ë¤·¤¿¤Î¤Ç¤¹¡£ ¿¤¯¤Î¾¤ÎÀ©¸æ¹½Â¤¤â¡¢Æ±Íͤˡ¢°ÅÌÛ¤Îprogn¤Ç¤¹¡£ ¤½¤Î·ë²Ì¡¢progn¤Ï¡¢¤«¤Ä¤Æ¤Û¤É¤Ï¿ÍѤµ¤ì¤Þ¤»¤ó¡£ ¸½ºß¤Ç¤Ï¡¢unwind-protect¡¢and¡¢or¤ÎÆâ¦¤ä¡¢ if¤ÎthenÉôʬ¤ÇɬÍפȤµ¤ì¤ë¤Î¤¬¤Û¤È¤ó¤É¤Ç¤¹¡£

Special Form: progn forms…

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢forms¤Î¥Õ¥©¡¼¥à¤¹¤Ù¤Æ¤ò ¥Æ¥­¥¹¥È¾å¤Î½ç¤Ëɾ²Á¤·¡¢ºÇ¸å¤Î¥Õ¥©¡¼¥à¤Î·ë²Ì¤òÊÖ¤¹¡£

(progn (print "The first form")
       (print "The second form")
       (print "The third form"))
     -| "The first form"
     -| "The second form"
     -| "The third form"
⇒ "The third form"

¾¤Î2¤Ä¤ÎÀ©¸æ¹½Â¤¤âƱÍͤ˥ե©¡¼¥à¤òÃ༡ɾ²Á¤·¤Þ¤¹¤¬¡¢ ÊÖ¤¹Ãͤ¬°Û¤Ê¤ê¤Þ¤¹¡£

Special Form: prog1 form1 forms…

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢form1¡¢forms¤Î¥Õ¥©¡¼¥à¤¹¤Ù¤Æ¤ò ¥Æ¥­¥¹¥È¾å¤Î½ç¤Ëɾ²Á¤·¡¢form1¤Î·ë²Ì¤òÊÖ¤¹¡£

(prog1 (print "The first form")
       (print "The second form")
       (print "The third form"))
     -| "The first form"
     -| "The second form"
     -| "The third form"
⇒ "The first form"

ÊÑ¿ô¤Î¥ê¥¹¥È¤«¤éÀèÆ¬Í×ÁǤò¼è¤ê½ü¤­¡¢¼è¤ê½ü¤¤¤¿Í×ÁǤòÊÖ¤¹¤Ë¤Ï¤Ä¤®¤Î¤è¤¦¤Ë½ñ¤¯¡£

(prog1 (car x) (setq x (cdr x)))
Special Form: prog2 form1 form2 forms…

¤³¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï¡¢form1¡¢form2¡¢forms¤Î ¥Õ¥©¡¼¥à¤¹¤Ù¤Æ¤ò¥Æ¥­¥¹¥È¾å¤Î½ç¤Ëɾ²Á¤·¡¢form2¤Î·ë²Ì¤òÊÖ¤¹¡£

(prog2 (print "The first form")
       (print "The second form")
       (print "The third form"))
     -| "The first form"
     -| "The second form"
     -| "The third form"
⇒ "The second form"