Previous: Quoting, Up: Evaluation [Contents][Index]
¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢¼Â¹ÔÃæ¤Î¥×¥í¥°¥é¥à¤Ë¥Õ¥©¡¼¥à¤¬¸½¤ì¤ë¤È
¥Õ¥©¡¼¥à¤Ï¼«Æ°Åª¤Ëɾ²Á¤µ¤ì¤Þ¤¹¡£
µ©¤Ê¤³¤È¤Ç¤¹¤¬¡¢¼Â¹Ô»þ¤Ë·×»»¤·¤¿¥Õ¥©¡¼¥à¤òɾ²Á¤¹¤ë¤è¤¦¤Ë
¥³¡¼¥É¤ò½ñ¤¯É¬Íפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¤¿¤È¤¨¤Ð¡¢ÊÔ½¸Ãæ¤Î¥Æ¥¥¹¥È¤«¤é¥Õ¥©¡¼¥à¤òÆÉ¤ß¼è¤Ã¤¿¤ê¡¢
°À¥ê¥¹¥È¤«¤é¥Õ¥©¡¼¥à¤ò¼è¤ê½Ð¤·¤¿¾ì¹ç¤Ê¤É¤Ç¤¹¡£
¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¢´Ø¿ôeval
¤ò»È¤¤¤Þ¤¹¡£
ËÜÀá¤ÇÀâÌÀ¤·¤¿´Ø¿ô¤äÊÑ¿ô¤Ï¡¢¥Õ¥©¡¼¥à¤òɾ²Á¤·¤¿¤ê¡¢ ɾ²Á½èÍý¤ËÀ©¸Â¤ò²Ý¤·¤¿¤ê¡¢ºÇ¸å¤ÎÌá¤êÃͤòµÏ¿¤·¤¿¤ê¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Æ¤âɾ²Á¤¬¹Ô¤ï¤ì¤Þ¤¹¡Êsee Loading¡Ë¡£
Ãí°Õ¡§
¥Ç¡¼¥¿¹½Â¤¤ÎÃæ¤Ë´Ø¿ô¤ò³ÊǼ¤·¤Æ
¤½¤ì¤òfuncall
¤äapply
¤Ç¸Æ¤Ó½Ð¤¹¤Û¤¦¤¬¡¢
¥Ç¡¼¥¿¹½Â¤¤ÎÃæ¤Ë¼°¤ò³ÊǼ¤·¤Æ¤½¤ì¤òɾ²Á¤¹¤ë¤è¤ê¡¢
°ìÈ̤ËÌÀ³Î¤Ç½ÀÆðÀ¤¬¤¢¤ê¤Þ¤¹¡£
´Ø¿ô¤ò»È¤¦¤È¤½¤ì¤é¤Ë°ú¿ô¤È¤·¤Æ¾ðÊó¤òÅϤ¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤Ï¡¢¼°¤òɾ²Á¤¹¤ë´ðËÜŪ¤Ê´Ø¿ô¤Ç¤¢¤ë¡£ form¤ò¸½ºß¤Î´Ä¶¤Ë¤ª¤¤¤ÆÉ¾²Á¤·¡¢¤½¤Î·ë²Ì¤òÊÖ¤¹¡£ ɾ²Á½èÍý¤Ï¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ë°Í¸¤¹¤ë¡Êsee Forms¡Ë¡£
eval
¤Ï´Ø¿ô¤Ê¤Î¤Ç¡¢eval
¤Î¸Æ¤Ó½Ð¤·¤Ë¸½¤ì¤ë
°ú¿ô¤Î¼°¤Ï2ÅÙɾ²Á¤µ¤ì¤ë¡£
eval
¤ò¸Æ¤Ó½Ð¤¹¤Þ¤¨¤Î½àÈ÷¤Ç1²ó¡¢
´Ø¿ôeval
¼«¿È¤Ë¤è¤ëɾ²Á¤Ç¤â¤¦1²ó¤Ç¤¢¤ë¡£
Îã¤ò¼¨¤¹¡£
(setq foo 'bar) ⇒ bar
(setq bar 'baz) ⇒ baz ;;eval
¤Ï°ú¿ôfoo
¤ò¼õ¤±¼è¤ë (eval 'foo) ⇒ bar ;;eval
¤Ï°ú¿ôbar
¤ò¼õ¤±¼è¤ë¡£¤½¤ì¤Ïfoo
¤ÎÃÍ (eval foo) ⇒ baz
eval
¤Î¸Æ¤Ó½Ð¤·¤Î¿¼¤µ¤Ï¡¢
max-lisp-eval-depth
¡Ê²¼µ»²¾È¡Ë¤ËÀ©¸Â¤µ¤ì¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢¥«¥ì¥ó¥È¥Ð¥Ã¥Õ¥¡¤Îstart¤Èend¤Ç»ØÄꤷ¤¿
¥ê¡¼¥¸¥ç¥óÆâ¤Î¥Õ¥©¡¼¥à·²¤òɾ²Á¤¹¤ë¡£
¥ê¡¼¥¸¥ç¥ó¤«¤é¥Õ¥©¡¼¥à¤òÆÉ¤ß¼è¤ê¡¢
¤½¤ì¤é¤ËÂФ·¤Æeval
¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤ò
¥ê¡¼¥¸¥ç¥ó¤ÎËöÈø¤Ë㤹¤ë¤Þ¤Ç¡¢¤¢¤ë¤¤¤Ï¡¢½èÍý¤µ¤ì¤Ê¤¤¥¨¥é¡¼¤¬ÄÌÃΤµ¤ì¤ë¤Þ¤Ç
·«¤êÊÖ¤¹¡£
stream¤¬nil
°Ê³°¤Ê¤é¤Ð¡¢
¥ê¡¼¥¸¥ç¥óÆâ¤Î¼°¤òɾ²Á¤·¤¿·ë²Ì¤ÎÃͤÏstream¤ò»È¤Ã¤ÆÉ½¼¨¤¹¤ë¡£
see Output Streams¡£
read-function¤¬nil
°Ê³°¤Ë¤Ê¤é¤Ð¡¢
¤½¤ì¤Ï´Ø¿ô¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢
read
¤Î¤«¤ï¤ê¤Ë¼°¤ò1¤Ä1¤ÄÆÉ¤à¤¿¤á¤Ë»È¤ï¤ì¤ë¡£
¤³¤Î´Ø¿ô¤Ï¡¢ÆþÎÏÍѤΥ¹¥È¥ê¡¼¥à¤Ç¤¢¤ë1¤Ä¤Î°ú¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
ÊÑ¿ôload-read-function
¡Êsee How Programs Do Loading¡Ë¤ò
»È¤Ã¤Æ¤³¤Î´Ø¿ô¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤ë¤¬¡¢
°ú¿ôread-function¤òÍѤ¤¤¿¤Û¤¦¤¬·øÏ´¤Ç¤¢¤ë¡£
eval-region
¤Ï¤Ä¤Í¤Ënil
¤òÊÖ¤¹¡£
¤³¤ì¤Ïeval-region
¤ÈƱÍͤÀ¤¬¡¢¥Ð¥Ã¥Õ¥¡Á´ÂΤ˺îÍѤ¹¤ë¡£
¤³¤ÎÊÑ¿ô¤Ï¡¢
¡Ê¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸"Lisp nesting exceeds max-lisp-eval-depth"
¤Ç¡Ë
¥¨¥é¡¼¤òÄÌÃΤޤǤÎeval
¡¢apply
¡¢funcall
¤Î¸Æ¤Ó½Ð¤·¤Î
ºÇÂç¤Î¿¼¤µ¤òÀ©¸Â¤¹¤ë¡£
¤³¤ÎÀ©¸Â¡¢¤ª¤è¤Ó¡¢¤³¤ì¤òͤ¨¤¿¤È¤¤Î¥¨¥é¡¼¤Ï¡¢
ÉÔÀµ¤ËÄêµÁ¤µ¤ì¤¿´Ø¿ô¤Ë¤è¤Ã¤ÆLisp¤¬Ìµ¸Â¤ËºÆµ¢¤¹¤ë¤³¤È¤òËɻߤ¹¤ë
1¤Ä¤ÎÊýË¡¤Ç¤¢¤ë¡£
¿¼¤µÀ©¸Â¤Ï¡¢Lisp¥³¡¼¥É¤Ë¤è¤ëÌÀ¼¨Åª¤Ê¸Æ¤Ó½Ð¤·¤Ë²Ã¤¨¤Æ¡¢
Lisp¼°¤Ç½ñ¤«¤ì¤¿´Ø¿ô¤Î¸Æ¤Ó½Ð¤·¤ä´Ø¿ô¸Æ¤Ó½Ð¤·¤Î°ú¿ô¤ä´Ø¿ôËÜÂΤΥե©¡¼¥à¤Î
ºÆµ¢Åª¤Êɾ²Á¤Ê¤É¤ÎÆâÉôŪ¤Êeval
¡¢apply
¡¢funcall
¤Î
¸Æ¤Ó½Ð¤·¤â¿ô¤¨¤ë¡£
¤³¤ÎÊÑ¿ô¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÏ300¡£ ¤³¤ì¤Ë100̤Ëþ¤ÎÃͤòÀßÄꤹ¤ë¤È¡¢»ØÄꤷ¤¿ÃͤË㤹¤ë¤ÈLisp¤Ï100¤ËÀßÄꤷľ¤¹¡£ Lisp¥Ç¥Ð¥Ã¥¬¤ËÆþ¤Ã¤¿¤È¤¡¢ À©¸Â¤Ë¶á¤¤¾ì¹ç¤Ë¤Ï¥Ç¥Ð¥Ã¥¬¼«¿È¤¬¼Â¹Ô¤Ç¤¤ë¤³¤È¤òÊݾڤ¹¤ë¤¿¤á¤ËÃͤòÁý¤ä¤¹¡£
max-specpdl-size
¤Ï¡¢Æþ¤ì»Ò¤Î¿¼¤µ¤òÀ©¸Â¤¹¤ëÊ̤ÎÊýË¡¤Ç¤¢¤ë¡£
see Local Variables¡£
¤³¤ÎÊÑ¿ô¤ÎÃͤϡ¢ ¥Ð¥Ã¥Õ¥¡¤«¤é¼°¤òÆÉ¤ß¼è¤ê¡¢É¾²Á¤·¡¢·ë²Ì¤òɽ¼¨¤¹¤ëEmacs¤Îɸ½à¥³¥Þ¥ó¥É¤¬¹Ô¤Ã¤¿ ¤¹¤Ù¤Æ¤Î¼°¤ÎÌá¤êÃͤΥꥹ¥È¤Ç¤¢¤ë¡£ ¥ê¥¹¥È¤Î½ç½ø¤Ï¡¢ºÇ¿·¤Î¤â¤Î¤¬ºÇ½é¤Ë¤¯¤ë¡£
(setq x 1) ⇒ 1
(list 'A (1+ 2) auto-save-default) ⇒ (A 3 t)
values ⇒ ((A 3 t) 1 …)
¤³¤ÎÊÑ¿ô¤Ï¡¢ºÇ¶áɾ²Á¤·¤¿¥Õ¥©¡¼¥à¤ÎÃͤò»²¾È¤¹¤ë¤Î¤ËÊØÍø¤Ç¤¢¤ë¡£
values
¤½¤Î¤â¤Î¤ÎÃͤÎɽ¼¨¤ÏÈó¾ï¤ËŤ¯¤Ê¤ë²ÄǽÀ¤¬¤¢¤ë¤Î¤Ç¡¢
¤½¤ÎÃͤòɽ¼¨¤¹¤ë¤Î¤Ï¤è¤¯¤Ê¤¤¡£
¤½¤Î¤«¤ï¤ê¤Ë¡¢¤Ä¤®¤Î¤è¤¦¤Ë¤·¤ÆÆÃÄê¤ÎÍ×ÁǤòÄ´¤Ù¤ë¡£
;; ¤â¤Ã¤È¤âºÇ¶á¤Îɾ²Á·ë²Ì¤ò»²¾È¤¹¤ë
(nth 0 values)
⇒ (A 3 t)
;; ¤³¤¦¤¹¤ë¤È¡¢¿·¤¿¤ÊÍ×ÁǤ¬Äɲ䵤졢 ;; ¤¹¤Ù¤Æ¤ÎÍ×ÁǤ¬1¤Ä¤¦¤·¤í¤Ø¤µ¤¬¤ë (nth 1 values) ⇒ (A 3 t)
;; ¤³¤ÎÎã¤ò¼Â¹Ô¤¹¤ë¤Þ¤¨¤ÎºÇ¿·¤Î¤â¤Î¤Î¤Ä¤®¤ÎÍ×ÁǤò¼èÆÀ¤¹¤ë
(nth 3 values)
⇒ 1