Next: Mapping Functions, Previous: Defining Functions, Up: Functions [Contents][Index]
´Ø¿ô¤òÄêµÁ¤¹¤ë¤³¤È¤Ï¡¢Á´ÂΤÎȾʬ¤Ç¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ ´Ø¿ô¤ò¸Æ¤Ö¤Þ¤Ç¤Ï¡¢¤Ä¤Þ¤ê¡¢¼Â¹Ô¤òÌ¿¤¸¤Ê¤±¤ì¤Ð¡¢´Ø¿ô¤Ï¤Ê¤Ë¤â¤·¤Þ¤»¤ó¡£ ´Ø¿ô¸Æ¤Ó½Ð¤·¤Ïµ¯Æ°¡Êinvocation¡Ë¤È¤â¤¤¤¤¤Þ¤¹¡£
´Ø¿ô¤òµ¯Æ°¤¹¤ë¤â¤Ã¤È¤â°ìÈÌŪ¤ÊÊýË¡¤Ï¡¢¥ê¥¹¥È¤òɾ²Á¤¹¤ë¤³¤È¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢¥ê¥¹¥È(concat "a" "b")
¤òɾ²Á¤¹¤ë¤È¡¢
´Ø¿ôconcat
¤ò°ú¿ô"a"
¤È"b"
¤Ç¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
ɾ²Á¤Ë¤Ä¤¤¤Æ¤ÏSee Evaluation¡£
ÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ç¼°¤È¤·¤Æ¥ê¥¹¥È¤ò½ñ¤¯¤È¤¤Ë¤Ï¡¢
¸Æ¤Ó½Ð¤¹´Ø¿ô̾¤òÆÉ¼Ô¤Î¥×¥í¥°¥é¥à¤Ë½ñ¤¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢¥×¥í¥°¥é¥à¤ò½ñ¤¯¤È¤¤Ë¡¢
¤É¤Î´Ø¿ô¤ò¤É¤ì¤À¤±¤Î°ú¿ô¤Ç¸Æ¤Ó½Ð¤¹¤«¤ò»ØÄê¤Ç¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
¤³¤ì¤¬¡¢ÉáÄ̤ˤ·¤¿¤¤¤³¤È¤Ç¤·¤ç¤¦¡£
¸Æ¤Ó½Ð¤¹´Ø¿ô¤ò¼Â¹Ô»þ¤Ë·×»»¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤â¤¢¤ë¤Ç¤·¤ç¤¦¡£
¤½¤ì¤Ë¤Ï¡¢´Ø¿ôfuncall
¤ò»È¤¤¤Þ¤¹¡£
ÅϤ¹°ú¿ô¤Î¸Ä¿ô¤ò¼Â¹Ô»þ¤Ë·èÄꤹ¤ëɬÍפ¬¤¢¤ë¤È¤¤Ë¤Ï¡¢
apply
¤ò»È¤¤¤Þ¤¹¡£
funcall
¤Ï¡¢function¤òarguments¤Ç¸Æ¤Ó½Ð¤·¡¢
function¤¬¤Ê¤Ë¤òÊÖ¤½¤¦¤È¤â¤½¤ì¤òÊÖ¤¹¡£
funcall
¤Ï´Ø¿ô¤Ê¤Î¤Ç¡¢function¤Î¸Æ¤Ó½Ð¤·¤òɾ²Á¤¹¤ë¤Þ¤¨¤Ë
function¤ò´Þ¤á¤¿°ú¿ô¤¹¤Ù¤Æ¤òɾ²Á¤¹¤ë¡£
¤Ä¤Þ¤ê¡¢¸Æ¤Ó½Ð¤¹´Ø¿ô¤òÆÀ¤ë¤¿¤á¤Î¤É¤ó¤Ê¼°¤Ç¤â»È¤¨¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
¤Þ¤¿¡¢funcall
¤Ï¡¢ÆÉ¼Ô¤¬arguments¤Ë½ñ¤¤¤¿¼°¤ò¸«¤ë¤³¤È¤Ï¤Ê¤¯¡¢
¤½¤ì¤é¤ÎÃͤÀ¤±¤ò¸«¤ë¤³¤È¤Ë¤Ê¤ë¡£
¤³¤ì¤é¤ÎÃͤϡ¢function¤ò¸Æ¤Ó½Ð¤¹Áàºî¤Ë¤ª¤¤¤Æ¡¢
2²óÌܤÎɾ²Á¤ò¹Ô¤¦¤³¤È¤Ï¤Ê¤¤¡£
funcall
¤Ï¡¢Ä̾ï¤Î´Ø¿ô¸Æ¤Ó½Ð¤·½èÍý¤Ë¤ª¤¤¤Æ¡¢
°ú¿ô¤òɾ²Á¤·½ª¤¨¤¿¤È¤³¤í¤«¤é»Ï¤á¤ë¡£
°ú¿ôfunction¤Ï¡¢Lisp´Ø¿ô¤«´ðËÜ´Ø¿ô¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤ä¥Þ¥¯¥í¤Ïµö¤µ¤ì¤Ê¤¤¡£
¤½¤ì¤é¤Ë¤Ï¡¢¡ØÌ¤É¾²Á¡Ù¤Î°ú¿ô¼°¤òÍ¿¤¨¤¿¤È¤¤À¤±°ÕÌ£¤¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£
funcall
¤Ç¤Ï¤½¤Î¤è¤¦¤Ë¤Ç¤¤Ê¤¤¡£
¤Ê¤¼¤Ê¤é¡¢¾å¤ÎÀâÌÀ¤Ç¤ï¤«¤ë¤è¤¦¤Ë¡¢
̤ɾ²Á¤Î°ú¿ô¤ò¤Þ¤Ã¤¿¤¯ÃΤé¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£
(setq f 'list) ⇒ list
(funcall f 'x 'y 'z) ⇒ (x y z)
(funcall f 'x 'y '(z)) ⇒ (x y (z))
(funcall 'and t nil) error→ Invalid function: #<subr and>
¤³¤ì¤é¤ÎÎã¤òapply
¤ÎÎã¤ÈÈæ³Ó¤·¤Æ¤Û¤·¤¤¡£
apply
¤Ï¡¢funcall
¤Î¤è¤¦¤Ë¡¢
function¤òarguments¤Ç¸Æ¤Ó½Ð¤¹¤¬¡¢1ÅÀ¤À¤±°Û¤Ê¤ë¡£
arguments¤ÎºÇ¸å¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤Ç¤¢¤ê¡¢
function¤Ë¤Ï¤³¤ì¤ò¡¢Ã±°ì¤Î¥ê¥¹¥È¤Ç¤Ï¤Ê¤¯¡¢¸Ä¡¹¤Î°ú¿ô¤È¤·¤ÆÅϤ¹¡£
¤³¤ì¤ò¡¢apply
¤Ï¡¢
¤³¤Î¥ê¥¹¥È¤Î¸Ä¡¹¤ÎÍ×ÁǤ¬°ú¿ô¤È¤Ê¤ë¤è¤¦¤ËʬÇÛ¤¹¤ë¤È¤¤¤¦¡£
apply
¤Ï¡¢function¤Î¸Æ¤Ó½Ð¤··ë²Ì¤òÊÖ¤¹¡£
funcall
¤ÈƱÍͤˡ¢function¤ÏLisp´Ø¿ô¤«´ðËÜ´Ø¿ô¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤ä¥Þ¥¯¥í¤Ï¡¢apply
¤Ç¤Ï°ÕÌ£¤¬¤Ê¤¤¡£
(setq f 'list) ⇒ list
(apply f 'x 'y 'z) error→ Wrong type argument: listp, z
(apply '+ 1 2 '(3 4)) ⇒ 10
(apply '+ '(1 2 3 4)) ⇒ 10
(apply 'append '((a b c) nil (x y z) nil)) ⇒ (a b c x y z)
apply
¤ò»È¤Ã¤¿¶½Ì£¿¼¤¤Îã¤È¤·¤Æ¡¢
Mapping Functions¤Îmapcar
¤ÎÀâÌÀ¤ò¸«¤Æ¤Û¤·¤¤¡£
Lisp´Ø¿ô¤Ë¤È¤Ã¤Æ¤Ï¡¢°ú¿ô¤È¤·¤Æ´Ø¿ô¤ò¼õ¤±¼è¤Ã¤¿¤ê¡¢
¥Ç¡¼¥¿¹½Â¤¡ÊÆÃ¤Ë¡¢¥Õ¥Ã¥¯ÊÑ¿ô¤ä°À¥ê¥¹¥È¡ËÆâ¤Î´Ø¿ô¤òõ¤·¤Æ
funcall
¤äapply
¤ò»È¤Ã¤Æ¤½¤ì¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ï°ìÈÌŪ¤Ç¤¹¡£
´Ø¿ô°ú¿ô¤ò¼õ¤±ÉÕ¤±¤ë´Ø¿ô¤ò
¤·¤Ð¤·¤Ð¥Õ¥¡¥ó¥¯¥·¥ç¥Ê¥ë¡Êfunctionals¡Ë¤È¸Æ¤Ó¤Þ¤¹¡£
¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¢¥Õ¥¡¥ó¥¯¥·¥ç¥Ê¥ë¤ò¸Æ¤Ó½Ð¤¹¤È¤¤Ë¤Ï¡¢ °ú¿ô¤È¤·¤Æ¤Ê¤Ë¤â¤·¤Ê¤¤´Ø¿ô¡Êno-op¡Ë¤ò»ØÄê¤Ç¤¤ë¤ÈÍÍѤǤ¹¡£ ¤Ä¤®¤Î¤â¤Î¤Ï¡¢2¼ïÎà¤Î¤Ê¤Ë¤â¤·¤Ê¤¤´Ø¿ô¤Ç¤¹¡£
¤³¤Î´Ø¿ô¤Ïarg¤òÊÖ¤·¡¢ÉûºîÍѤò»ý¤¿¤Ê¤¤¡£
¤³¤Î´Ø¿ô¤Ï°ú¿ô¤ò̵»ë¤·¡¢nil
¤òÊÖ¤¹¡£