Next: , Previous: Functions, Up: Functions   [Contents][Index]


11.1 ´Ø¿ô¤È¤Ï¤Ê¤Ë¤«

°ìÈÌŪ¤Ë¤Ï¡¢´Ø¿ô¤È¤Ï¡¢°ú¿ô¡Êarguments¡Ë¤È¸Æ¤Ð¤ì¤ëÃͤòÍ¿¤¨¤é¤ì¡¢ ·×»»¤ò¹Ô¤¦¤¿¤á¤Îµ¬Â§¤Ç¤¹¡£ ¤³¤Î·×»»·ë²Ì¤ò´Ø¿ô¤ÎÃͤȸƤӤޤ¹¡£ ·×»»¤Ç¤ÏÉûºîÍÑ¡¢¤Ä¤Þ¤ê¡¢ÊÑ¿ô¤ÎÃͤä¥Ç¡¼¥¿¹½Â¤¤ÎÆâÍÆ¤Ë·Ñ³¤¹¤ëÊѹ¹ ¤òȼ¤¦¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

Emacs Lisp¤Î´Ø¿ô¤ä´Ø¿ô¤Î¤è¤¦¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ë´Ø¤¹¤ë½ÅÍפÊÍѸì¤ò¤¢¤²¤Æ¤ª¤­¤Þ¤¹¡£

´Ø¿ô

Emacs Lisp¤Ç¤Ï¡¢Lisp¥×¥í¥°¥é¥à¤Ë¤ª¤¤¤Æ°ú¿ô¤ËŬÍѲÄǽ¤â¤Î¤Ï ¤Ê¤ó¤Ç¤¢¤ì´Ø¿ô¡Êfunction¡Ë¤Ç¤¢¤ë¡£ Lisp¤Ç½ñ¤¤¤¿´Ø¿ô¤ò°ÕÌ£¤¹¤ë¾ì¹ç¤â¤¢¤ë¡£ ¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤ä¥Þ¥¯¥í¤Ï´Ø¿ô¤Ç¤Ï¤Ê¤¤¡£

´ðËÜ´Ø¿ô

´ðËÜ´Ø¿ô¡Êprimitive¡Ë¤Ï¡¢car¤äappend¤Ê¤É¤ÎC¤Ç½ñ¤¤¤¿ Lisp¤«¤é¸Æ¤Ó½Ð¤·²Äǽ¤Ê´Ø¿ô¤Ç¤¢¤ë¡£ ¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢ÁȤ߹þ¤ß´Ø¿ô¤È¤«subrs¤È¤â¸Æ¤Ö¡£ ¡Ê¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ï´ðËÜ´Ø¿ô¤È¤â¹Í¤¨¤é¤ì¤ë¡£¡Ë

´Ø¿ô¤ò´ðËÜ´Ø¿ô¤È¤·¤Æ¼ÂÁõ¤¹¤ëÍýͳ¤Ï¡¢ ¤½¤ì¤¬´ðËÜŪ¤Ê¤â¤Î¤Ç¤¢¤ë¡¢ ¤½¤ì¤¬¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Îµ¡Ç½¤ËÂФ¹¤ë Äã¥ì¥Ù¥ë¤Î¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹¤òÄ󶡤¹¤ë¡¢ ¤¢¤ë¤¤¤Ï¡¢¹â®¤Ëưºî¤¹¤ëɬÍפ¬¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£ ´ðËÜ´Ø¿ô¤òÊѹ¹¤·¤¿¤êÄɲ乤ëÍ£°ì¤ÎÊýË¡¤Ï¡¢ C¥½¡¼¥¹¤òÊѹ¹¤·¤Æ¥¨¥Ç¥£¥¿¤òºÆ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£ see Writing Emacs Primitives¡£

¥é¥à¥À¼°

¥é¥à¥À¼°¡Êlambda expression¡Ë¤Ï¡¢Lisp¤Ç½ñ¤¤¤¿´Ø¿ô¤Ç¤¢¤ë¡£ ¤³¤ì¤é¤Ë¤Ä¤¤¤Æ¤Ï°Ê²¼¤ÎÀá¤ÇÀâÌÀ¤¹¤ë¡£

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à

¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¡Êspecial form¡Ë¤Ï´Ø¿ô¤Ë»÷¤¿´ðËÜ´Ø¿ô¤Ç¤¢¤ë¤¬¡¢ ¤½¤Î°ú¿ô¤¹¤Ù¤Æ¤òÉáÄ̤Τ褦¤Ë¤Ïɾ²Á¤·¤Ê¤¤¡£ °ú¿ô¤Î°ìÉô¤òɾ²Á¤·¤¿¤ê¡¢ÉáÄ̤Ȥϰۤʤë½ç½ø¤Çɾ²Á¤·¤¿¤ê¡¢ Ê£¿ô²óɾ²Á¤·¤¿¤ê¤¹¤ë¡£ ¿¤¯¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Control Structures¤ÇÀâÌÀ¤·¤Æ¤¢¤ë¡£

¥Þ¥¯¥í

¥Þ¥¯¥í¡Êmacro¡Ë¤Ï¡¢¥×¥í¥°¥é¥Þ¤¬Lisp¤ÇÄêµÁ¤·¤¿¹½Ê¸¤Ç¤¢¤ë¡£ ¥Þ¥¯¥í¤È´Ø¿ô¤È¤Î°ã¤¤¤Ï¡¢¥Þ¥¯¥í¤Ï¡¢ ÆÉ¼Ô¤¬½ñ¤¤¤¿Lisp¼°¤ò¤â¤È¤Î¼°¤Î¤«¤ï¤ê¤Ëɾ²Á¤µ¤ì¤ëÅù²Á¤Ê¼°¤ËÊÑ´¹¤¹¤ë¡£ ¥Þ¥¯¥í¤Ï¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¤Ç¤Ç¤­¤ë¼ïÎà¤Î¤³¤È¤ò Lisp¥×¥í¥°¥é¥Þ¤ËÄ󶡤¹¤ë¡£ ¥Þ¥¯¥í¤ÎÄêµÁÊýË¡¤È»È¤¤Êý¤Ë¤Ä¤¤¤Æ¤Ï¡¢see Macros¡£

¥³¥Þ¥ó¥É

¥³¥Þ¥ó¥É¡Êcommand¡Ë¤È¤Ï¡¢ command-execute¤¬µ¯Æ°¤Ç¤­¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢ ¥­¡¼Îó¤ËÂФ·¤ÆÄêµÁ¤Ç¤­¤ë¡£ ¤¤¤¯¤Ä¤«¤Î´Ø¿ô¤Ï¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£ Lisp¤Ç½ñ¤¤¤¿´Ø¿ô¤ËÂÐÏÃÀë¸À¡Êsee Defining Commands¡Ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¤­¡¢ ¤½¤Î´Ø¿ô¤Ï¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£ ¤½¤Î¤è¤¦¤Ê´Ø¿ô¤Ï¡¢Â¾¤Î´Ø¿ô¤ÈƱÍͤËLisp¼°¤«¤é¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¾ì¹ç¡¢´Ø¿ô¤¬¥³¥Þ¥ó¥É¤Ç¤¢¤ë¤È¤¤¤¦»ö¼Â¤Ï´Ø·¸¤Ê¤¤¡£

¥­¡¼¥Ü¡¼¥É¥Þ¥¯¥í¡Êʸ»úÎ󤫥٥¯¥È¥ë¡Ë¤â¥³¥Þ¥ó¥É¤Ç¤¢¤ë¤¬¡¢ ¤½¤ì¤é¤Ï´Ø¿ô¤Ç¤Ï¤Ê¤¤¡£ ¥·¥ó¥Ü¥ë¤Î´Ø¿ôÄêµÁ¤¬¥³¥Þ¥ó¥É¤Ç¤¢¤ì¤Ð¡¢¥·¥ó¥Ü¥ë¤Ï¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£ ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¡¢M-x¤Çµ¯Æ°¤Ç¤­¤ë¡£ ¥·¥ó¥Ü¥ë¤ÎÄêµÁ¤¬´Ø¿ô¤Ç¤¢¤ì¤Ð¡¢¥·¥ó¥Ü¥ë¤Ï´Ø¿ô¤Ç¤â¤¢¤ë¡£

ÂǸ°¥³¥Þ¥ó¥É

ÂǸ°¥³¥Þ¥ó¥É¡Êkeystroke command¡Ë¤È¤Ï¡¢ ¥­¡¼Îó¡Êŵ·¿Åª¤Ë¤Ï1¤«¤é3ÂǸ°¡Ë¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤¿¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡£ ¤³¤³¤Ç¤Î¶èÊ̤ϡ¢Emacs°Ê³°¤Î¥¨¥Ç¥£¥¿¤Î¡Ø¥³¥Þ¥ó¥É¡Ù¤Î°ÕÌ£¤È¤Î º®Íð¤òËɤ°¤¿¤á¤Ç¤¢¤ë¤¬¡¢ Lisp¥×¥í¥°¥é¥à¤Ë¤È¤Ã¤Æ¤Ï¡¢¤³¤Î¶èÊ̤ÏÉáÄ̤ϽÅÍפǤϤʤ¤¡£

¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô

¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¡Êbyte-code function¡Ë¤È¤Ï¡¢ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿´Ø¿ô¤Ç¤¢¤ë¡£ see Byte-Code Type¡£

Function: functionp object

¤³¤Î´Ø¿ô¤Ï¡¢object¤¬¡¢¤Ê¤ó¤é¤«¤Î´Ø¿ô¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥à¡¢ ¥Þ¥¯¥í¤Ç¤¢¤ì¤Ð¡¢t¤òÊÖ¤¹¡£

Function: subrp object

¤³¤Î´Ø¿ô¤Ï¡¢object¤¬ÁȤ߹þ¤ß´Ø¿ô¡Ê¤Ä¤Þ¤ê¡¢Lisp´ðËÜ´Ø¿ô¡Ë¤Ç¤¢¤ì¤Ð t¤òÊÖ¤¹¡£

(subrp 'message)            ; message¤Ï¥·¥ó¥Ü¥ë¤Ç¤¢¤ê¡¢
     ⇒ nil                 ;   subr¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ï¤Ê¤¤
(subrp (symbol-function 'message))
     ⇒ t
Function: byte-code-function-p object

¤³¤Î´Ø¿ô¤Ï¡¢object¤¬¥Ð¥¤¥È¥³¡¼¥É´Ø¿ô¤Ç¤¢¤ì¤Ðt¤òÊÖ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£

(byte-code-function-p (symbol-function 'next-line))
     ⇒ t