Next: Function Documentation, Previous: Simple Lambda, Up: Lambda Expressions [Contents][Index]
ñ½ã¤Ê´Ø¿ô¤ÎÎã(lambda (a b c) (+ a b c))
¤Ç¤Ï¡¢
3¤Ä¤Î°ú¿ôÊÑ¿ô¤ò»ØÄꤷ¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤ì¤Ï3°ú¿ô¤Ç¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
2°ú¿ô¤ä4°ú¿ô¤Ç¸Æ¤Ó½Ð¤½¤¦¤È¤¹¤ë¤È¡¢
¥¨¥é¡¼wrong-number-of-arguments
¤Ë¤Ê¤ê¤Þ¤¹¡£
ÆÃÄê¤Î°ú¿ô¤ò¾Êά¤Ç¤¤ë´Ø¿ô¤ò½ñ¤±¤ë¤ÈÊØÍø¤Ê¤³¤È¤¬¤·¤Ð¤·¤Ð¤¢¤ê¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢´Ø¿ôsubstring
¤Ï3¤Ä¤Î°ú¿ô¡¢¤Ä¤Þ¤ê¡¢
ʸ»úÎó¡¢³«»Ï¤È½ªÎ»¤Îź»ú¤ò¼è¤ê¤Þ¤¹¤¬¡¢
Âè3°ú¿ô¤ò¾Êά¤¹¤ë¤È¥Ç¥Õ¥©¥ë¥È¤Ïʸ»úÎó¤Îlength¤Ë¤Ê¤ê¤Þ¤¹¡£
list
¤ä+
¤Î¤è¤¦¤Ë¡¢
ÆÃÄê¤Î´Ø¿ô¤Ç¤ÏǤ°Õ¸Ä¿ô¤Î°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë¤ÈÊØÍø¤Ê¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
´Ø¿ô¸Æ¤Ó½Ð¤·»þ¤Ë¾Êά¤·¤Æ¤â¤è¤¤°ú¿ô¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢
¾Êά²Äǽ¤Ê°ú¿ô¤Î¤Þ¤¨¤Ë¥¡¼¥ï¡¼¥É&optional
¤ò´Þ¤á¤ë¤À¤±¤Ç¤¹¡£
0¸Ä°Ê¾å¤Î°ú¿ô¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢
ºÇ¸å¤Î°ú¿ô¤Î¤Þ¤¨¤Ë¥¡¼¥ï¡¼¥É&rest
¤ò´Þ¤á¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢°ú¿ô¥ê¥¹¥È¤Î´°Á´¤Ê¹½Ê¸¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
(required-vars… ; ɬ¿Ü¤Î°ú¿ô [&optional optional-vars…] ; ¾Êά²Äǽ¤Ê°ú¿ô [&rest rest-var]) ; »Ä¤ê¤Î°ú¿ô
³Ñ³ç¸Ì¤Ï¡¢&optional
¤ä&rest
¤ÎÀá¤ä
¤½¤ì¤Ë³¤¯ÊÑ¿ô¤Ï¾Êά¤Ç¤¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£
´Ø¿ô¸Æ¤Ó½Ð¤·»þ¤Ë¤Ï¡¢³Ærequired-vars¤Ë1¤Ä¤Î¼Â°ú¿ô¤¬É¬ÍפǤ¹¡£
0¸Ä°Ê¾å¤Îoptional-vars¤Ë¤â¼Â°ú¿ô¤¬É¬ÍפǤ¹¤¬¡¢
¥é¥à¥À¥ê¥¹¥È¤Ë&rest
¤¬¤Ê¤¤¸Â¤ê¡¢
optional-vars¤Î¸Ä¿ô¤òͤ¨¤ë¼Â°ú¿ô¤Ï»ØÄê¤Ç¤¤Þ¤»¤ó¡£
&rest
¤¬¤¢¤ì¤Ð¡¢Ç¤°Õ¸Ä¤Î;ʬ¤Ê¼Â°ú¿ô¤ò»ØÄê¤Ç¤¤Þ¤¹¡£
&optional
¤ä&rest
¤ËÂбþ¤¹¤ë¼Â°ú¿ô¤ò¾Êά¤¹¤ë¤È¡¢
¤½¤ì¤é¤Î¥Ç¥Õ¥©¥ë¥È¤Ïnil
¤Ç¤¹¡£
´Ø¿ô¤Ç¤Ï¡¢nil
¤òÌÀ¼¨¤·¤¿°ú¿ô¤È¾Êά¤·¤¿°ú¿ô¤È¤ò¶èÊ̤¹¤ëÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¤·¤«¤·¤Ê¤¬¤é¡¢´Ø¿ôËÜÂΤÇnil
¤òŬÀڤʰÕÌ£¤¢¤ëÃͤξÊά¤È
¤ß¤Ê¤¹¤³¤È¤Ï¼«Í³¤Ç¤¹¡£
substring
¤Ï¤½¤Î¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
substring
¤ÎÂè3°ú¿ô¤¬nil
¤Ç¤¢¤ë¤È¡¢
»ØÄꤷ¤¿Ê¸»úÎó¤ÎŤµ¤ò»È¤¦¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§
Common Lisp¤Ç¤Ï¡¢¾Êά²Äǽ°ú¿ô¤ò¾Êά¤·¤¿¤È¤¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤò´Ø¿ô¤Ç»ØÄê¤Ç¤¤ë¡£ Emacs Lisp¤Ç¤Ï¤Ä¤Í¤Ë
nil
¤ò»È¤¦¡£ Emacs Lisp¤Ë¤Ï¡¢ÌÀ¼¨Åª¤Ë°ú¿ô¤ò»ØÄꤷ¤¿¤«¤É¤¦¤«Ä´¤Ù¤ë ¡Øsupplied-p¡ÙÊÑ¿ô¤Ï¤Ê¤¤¡£
¤¿¤È¤¨¤Ð¡¢°ú¿ô¥ê¥¹¥È¤Ï¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
(a b &optional c d &rest e)
¤³¤ì¤Ï¡¢a
¤Èb
¤ËºÇ½é¤Î2¤Ä¤Î¼Â°ú¿ô¤ò«Çû¤·¡¢¤³¤ì¤é¤Ïɬ¿Ü¤Ç¤¹¡£
¤µ¤é¤Ë1¸Ä¤«2¸Ä¤Î°ú¿ô¤ò»ØÄꤹ¤ë¤È¡¢
¤½¤ì¤é¤Ï¡¢¤½¤ì¤¾¤ìc
¤Èd
¤Ë«Çû¤·¤Þ¤¹¡£
ºÇ½é¤Î4¸Ä¤è¤ê¤¢¤È¤Î°ú¿ô¤Ï¥ê¥¹¥È¤Ë¤Þ¤È¤á¡¢
e
¤Ë¤½¤Î¥ê¥¹¥È¤ò«Çû¤·¤Þ¤¹¡£
°ú¿ô¤¬2¸Ä¤À¤±¤Ç¤¢¤ë¤È¡¢c
¤Ïnil
¤Ç¤¹¡£
°ú¿ô¤¬2¸Ä¤«3¸Ä¤À¤±¤Ç¤¢¤ë¤È¡¢d
¤Ïnil
¤Ç¤¹¡£
°ú¿ô¤¬4¸Ä°Ê²¼¤Ç¤¢¤ë¤È¡¢e
¤Ïnil
¤Ç¤¹¡£
¾Êά²Äǽ¤Ê°ú¿ô¤Î¤¢¤È¤Ëɬ¿Ü°ú¿ô¤ò»ØÄꤹ¤ëÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¤·¡¢
¤½¤ì¤Ë¤Ï°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó¡£
¤Ê¤¼¤½¤¦¤Ê¤Î¤«¤òÍý²ò¤¹¤ë¤¿¤á¤Ë¡¢¾å¤ÎÎã¤Ç¡¢
c
¤Ï¾Êά²Äǽ¤Ç¤¢¤ê¡¢d
¤Ïɬ¿Ü¤Ç¤¢¤ë¤È¤·¤Þ¤·¤ç¤¦¡£
3¤Ä¤Î¼Â°ú¿ô¤ò»ØÄꤷ¤¿¤È¤¡¢¤É¤Î°ú¿ô¤ò3ÈÖÌܤȹͤ¨¤ë¤Î¤Ç¤·¤ç¤¦¡©
ƱÍͤˡ¢&rest
¤Î¤¦¤·¤í¤Ë;ʬ¤Ë¡Êɬ¿Ü¡¢¤â¤·¤¯¤Ï¾Êά²Äǽ¤Ê¡Ë°ú¿ô¤¬
¤¢¤Ã¤Æ¤â°ÕÌ£¤¬¤¢¤ê¤Þ¤»¤ó¡£
°ú¿ô¥ê¥¹¥È¤ÈÀµ¤·¤¤¸Æ¤Ó½Ð¤·¤ÎÎã¤ò¤¢¤²¤Þ¤¹¡£
((lambda (n) (1+ n)) ; 1¸Ä¤¬É¬¿Ü 1) ; °ú¿ô¤Ï1¸Ä¤À¤± ⇒ 2 ((lambda (n &optional n1) ; 1¸Ä¤Ïɬ¿Ü¡¢1¸Ä¤Ï¾Êά²Ä (if n1 (+ n n1) (1+ n))) ; °ú¿ô¤Ï1¸Ä¤«2¸Ä 1 2) ⇒ 3 ((lambda (n &rest ns) ; 1¸Ä¤Ïɬ¿Ü¡¢¤¢¤È¤Ï»Ä¤êÁ´Éô (+ n (apply '+ ns))) ; °ú¿ô¤Ï1¸Ä°Ê¾å¤¤¤¯¤Ä¤Ç¤â¤è¤¤ 1 2 3 4 5) ⇒ 15