Next: , Previous: Classifying Lists, Up: Forms   [Contents][Index]


8.2.4 ¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀÜ

¥ê¥¹¥È¤ÎÀèÆ¬Í×ÁǤ¬¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤È¡¢ ɾ²Á½èÍý¤Ç¤Ï¥·¥ó¥Ü¥ë¤Î´Ø¿ô¥»¥ë¤òÄ´¤Ù¡¢ ¤â¤È¤Î¥·¥ó¥Ü¥ë¤Î¤«¤ï¤ê¤Ë¤½¤ÎÆâÍÆ¤ò»È¤¤¤Þ¤¹¡£ ¤½¤ÎÆâÍÆ¤¬Ê̤Υ·¥ó¥Ü¥ë¤Ç¤¢¤ë¤È¡¢ ¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀÜ¡Êsymbol function indirection¡Ë¤È¸Æ¤Ð¤ì¤ë ¤³¤Î½èÍý¤ò¥·¥ó¥Ü¥ë¤Ç¤Ê¤¤¤â¤Î¤òÆÀ¤ë¤Þ¤Ç·«¤êÊÖ¤·¤Þ¤¹¡£ ¥·¥ó¥Ü¥ë¤Î´Ø¿ô¥»¥ë¤Ë³ÊǼ¤µ¤ì¤¿´Ø¿ô̾¤È¤·¤Æ¤Î¥·¥ó¥Ü¥ë¤Î»È¤¤Êý¤Ë¤Ä¤¤¤Æ ¾Ü¤·¤¯¤Ï¡¢See Function Names¡£

¤³¤Î½èÍý¤Î·ë²Ì¡¢Ìµ¸Â¥ë¡¼¥×¤Ë¤Ê¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢¥·¥ó¥Ü¥ë¤Î´Ø¿ô¥»¥ë¤¬Æ±¤¸¥·¥ó¥Ü¥ë¤ò»Ø¤·¤Æ¤¤¤ë¾ì¹ç¤Ç¤¹¡£ ¤¢¤ë¤¤¤Ï¡¢¥·¥ó¥Ü¥ë¤Î´Ø¿ô¥»¥ë¤¬¶õ¤Î¾ì¹ç¤â¤¢¤ê¤¨¤Þ¤¹¡£ ¤½¤Î¾ì¹ç¡¢¥µ¥Ö¥ë¡¼¥Æ¥£¥ósymbol-function¤Ï¡¢ ¥¨¥é¡¼void-function¤òÄÌÃΤ·¤Þ¤¹¡£ ¤¤¤º¤ì¤Î¾ì¹ç¤Ç¤â¤Ê¤±¤ì¤Ð¡¢ºÇ½ªÅª¤Ë¤Ï¥·¥ó¥Ü¥ë¤Ç¤Ê¤¤¤â¤Î¤ò¼èÆÀ¤·¡¢ ¤½¤ì¤Ï´Ø¿ô¤Ê¤É¤ÎŬÀڤʥª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¤Ï¤º¤Ç¤¹¡£

¤è¤êÀµ³Î¤Ë¤¤¤¨¤Ð¡¢Lisp´Ø¿ô¡Ê¥é¥à¥À¼°¡Ë¡¢¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¡¢ ´ðËÜ´Ø¿ô¡¢Lisp¥Þ¥¯¥í¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¡¢¼«Æ°¥í¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤Î ¤¤¤º¤ì¤«¤ò¼èÆÀ¤·¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£ ¤³¤ì¤é¤Î³Æ¼ïÎऴ¤È¤Ë¡¢°Ê²¼¤Î1¤Ä1¤Ä¤ÎÀá¤ÇÀâÌÀ¤·¤Þ¤¹¡£ ¥ª¥Ö¥¸¥§¥¯¥È¤¬¤³¤ì¤é¤Î¤¤¤º¤ì¤Î·¿¤Ç¤â¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ ¥¨¥é¡¼invalid-function¤òÄÌÃΤ·¤Þ¤¹¡£

¤Ä¤®¤ÎÎã¤Ï¡¢¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀܤνèÍý¤ò¿Þ¼¨¤·¤¿¤â¤Î¤Ç¤¹¡£ fset¤ò»È¤Ã¤Æ¥·¥ó¥Ü¥ë¤Î´Ø¿ô¥»¥ë¤ËÀßÄꤷ¡¢ symbol-function¤ò»È¤Ã¤Æ´Ø¿ô¥»¥ë¤ÎÆâÍÆ¤ò¼è¤ê½Ð¤·¤Þ¤¹ ¡Êsee Function Cells¡Ë¡£ ¶ñÂÎŪ¤Ë¤Ï¡¢¥·¥ó¥Ü¥ëcar¤òfirst¤Î´Ø¿ô¥»¥ë¤Ë³ÊǼ¤·¡¢ ¥·¥ó¥Ü¥ëfirst¤òerste¤Î´Ø¿ô¥»¥ë¤Ë³ÊǼ¤·¤Þ¤¹¡£

;; ¤³¤Î¤è¤¦¤Ê´Ø¿ô¥»¥ë¤Î¥ê¥ó¥¯¤òºî¤ë
;;   -------------       -----        -------        -------
;;  | #<subr car> | <-- | car |  <-- | first |  <-- | erste |
;;   -------------       -----        -------        -------
(symbol-function 'car)
     ⇒ #<subr car>
(fset 'first 'car)
     ⇒ car
(fset 'erste 'first)
     ⇒ first
(erste '(1 2 3))   ; erste¤¬»Ø¤¹´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹
     ⇒ 1

°ìÊý¡¢¤Ä¤®¤ÎÎã¤Ç¤Ï¡¢¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀܤò»È¤ï¤º¤Ë´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ÀèÆ¬°ú¿ô¤ÏLisp¤Î̵̾´Ø¿ô¤Ç¤¢¤Ã¤Æ¡¢ ¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¹¡£

((lambda (arg) (erste arg))
 '(1 2 3)) 
     ⇒ 1

´Ø¿ô¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ï¡¢¤½¤ÎËÜÂΤòɾ²Á¤¹¤ë¤³¤È¤Ç¤¹¡£ ¤³¤Î²áÄø¤Ç¤Ï¡¢erste¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ë¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀܤ¬´Ø¤ï¤ê¤Þ¤¹¡£

ÁȤ߹þ¤ß´Ø¿ôindirect-function¤Ï¡¢ ÌÀ¼¨Åª¤Ë¥·¥ó¥Ü¥ë¤Î´Ø¿ô´ÖÀܤò¹Ô¤¦´Êñ¤ÊÊýË¡¤Ç¤¹¡£

Function: indirect-function function

¤³¤Î´Ø¿ô¤Ï¡¢´Ø¿ô¤È¤·¤Æ¤Îfunction¤Î°ÕÌ£¤òÊÖ¤¹¡£ function¤¬¥·¥ó¥Ü¥ë¤Ç¤¢¤ì¤Ðfunction¤Î´Ø¿ôÄêµÁ¤òõ¤·¡¢ ¤½¤ÎÃͤ«¤éºÆÅÙ·«¤êÊÖ¤¹¡£ function¤¬¥·¥ó¥Ü¥ë¤Ç¤Ê¤±¤ì¤Ðfunction¤½¤Î¤â¤Î¤òÊÖ¤¹¡£

Lisp¤Çindirect-function¤òÄêµÁ¤¹¤ë¤È¤Ä¤®¤Î¤è¤¦¤Ë¤Ê¤ë¡£

(defun indirect-function (function)
  (if (symbolp function)
      (indirect-function (symbol-function function))
    function))