Next: , Previous: Repeated Loading, Up: Loading   [Contents][Index]


14.6 µ¡Ç½

provide¤Èrequire¤Ï¡¢ ¥Õ¥¡¥¤¥ë¤ò¼«Æ°Åª¤Ë¥í¡¼¥É¤¹¤ë¤¿¤á¤Îautoload¤ÎÂåÂØ¼êÃʤǤ¹¡£ ¤½¤ì¤é¤Ï»ØÄꤷ¤¿µ¡Ç½¡Êfeatures¡Ë¤È¤¤¤¦¹Í¤¨Êý¤Çưºî¤·¤Þ¤¹¡£ ¼«Æ°¥í¡¼¥É¤ÏÆÃÄê¤Î´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Çµ¯Æ°¤·¤Þ¤¹¤¬¡¢ µ¡Ç½¤Ï¤½¤Î̾Á°¤Ç¥×¥í¥°¥é¥à¤¬ºÇ½é¤ËÍ׵ᤷ¤¿¤È¤­¤Ë¥í¡¼¥É¤·¤Þ¤¹¡£

µ¡Ç½Ì¾¤Ï¡¢´Ø¿ô¤äÊÑ¿ô¤Ê¤É¤Î½¸¹ç¤òɽ¤¹¥·¥ó¥Ü¥ë¤Ç¤¹¡£ ¤½¤ì¤é¤òÄêµÁ¤¹¤ë¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢¤½¤Îµ¡Ç½¤òÄó¶¡¡Êprovide¡Ë¤·¤Þ¤¹¡£ ¤½¤ì¤é¤ò»È¤¦ÊÌ¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ ¤½¤Îµ¡Ç½¤òÍ×µá¡Êrequire¡Ë¤¹¤ë¤³¤È¤Ç¡¢ ¤½¤ì¤é¤¬ÄêµÁ¤µ¤ì¤ë¤³¤È¤ò³Î¼Â¤Ë¤·¤Þ¤¹¡£ ¤³¤¦¤¹¤ë¤È¡¢Ì¤¥í¡¼¥É¤Ç¤¢¤ì¤ÐÄêµÁ¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¡£

µ¡Ç½¤òÍ׵᤹¤ë¤Ë¤Ï¡¢µ¡Ç½Ì¾¤ò°ú¿ô¤Ë¤·¤Ærequire¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ require¤Ï¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ôfeatures¤òÄ´¤Ù¤Æ¡¢ ÌÜŪ¤Îµ¡Ç½¤¬¤¹¤Ç¤ËÄ󶡤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤Þ¤¹¡£ Ä󶡤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢Å¬Åö¤Ê¥Õ¥¡¥¤¥ë¤«¤éµ¡Ç½¤ò¥í¡¼¥É¤·¤Þ¤¹¡£ ¤³¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢¥È¥Ã¥×¥ì¥Ù¥ë¤Çprovide¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢ features¤Ëµ¡Ç½¤òÄɲ乤ë¤Ù¤­¤Ç¤¹¡£ ¤½¤¦¤·¤Ê¤¤¤È¡¢require¤Ï¥¨¥é¡¼¤òÄÌÃΤ·¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢emacs/lisp/prolog.el ¤Ë¤Ï¡¢ ¤Ä¤®¤Î¥³¡¼¥É¤Î¤è¤¦¤Êrun-prolog¤ÎÄêµÁ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£

(defun run-prolog ()
  "Run an inferior Prolog process, with I/O via buffer *prolog*."
  (interactive)
  (require 'comint)
  (switch-to-buffer (make-comint "prolog" prolog-program-name))
  (inferior-prolog-mode))

(require 'comint)¤Ï¡¢¥Õ¥¡¥¤¥ëcomint.el¤¬Ì¤¥í¡¼¥É¤Ç¤¢¤ë¤È¡¢ ¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢make-comint¤¬ÄêµÁºÑ¤ß¤Ç¤¢¤ë¤³¤È¤òÊݾڤ·¤Þ¤¹¡£ ÉáÄÌ¡¢µ¡Ç½¤Ë¤Ï¡¢¤½¤Îµ¡Ç½¤òÄ󶡤¹¤ë¥Õ¥¡¥¤¥ë̾¤«¤é¤È¤Ã¤¿Ì¾Á°¤òÉÕ¤±¤Þ¤¹¤«¤é¡¢ require¤Ë¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£

comint.el¥Õ¥¡¥¤¥ë¤Ë¤Ï¡¢¤Ä¤®¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Î¼°¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£

(provide 'comint)

¤³¤ì¤Ë¤è¤ê¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ôfeatures¤Î¥ê¥¹¥È¤Ë comint¤¬Äɲ䵤ì¤ë¤Î¤Ç¡¢ ¤³¤ì°Ê¹ß¤Ë(require 'comint)¤ò¼Â¹Ô¤·¤Æ¤â¡¢ ¤Ê¤Ë¤â¤·¤Ê¤¤¤Ç¤è¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¥Õ¥¡¥¤¥ë¤Î¥È¥Ã¥×¥ì¥Ù¥ë¤Çrequire¤ò»È¤¦¤È¡¢ ¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤¹¤ë¾ì¹ç¤ÈƱÍͤˡ¢ ¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¡Êsee Byte Compilation¡Ë¤Ë¤â require¤Ë¤Ï¸ú²Ì¤¬¤¢¤ê¤Þ¤¹¡£ Í׵ᤷ¤¿¥Ñ¥Ã¥±¡¼¥¸¤Ë¡¢ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤¬ÃΤäƤ¤¤ëɬÍפ¬¤¢¤ë¥Þ¥¯¥í¤¬Æþ¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ç¤¹¡£

¥È¥Ã¥×¥ì¥Ù¥ë¤Îrequire¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ëÃæ¤Ëɾ²Á¤µ¤ì¤Þ¤¹¤¬¡¢ provide¤Î¸Æ¤Ó½Ð¤·¤Ïɾ²Á¤·¤Þ¤»¤ó¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤Ä¤®¤ÎÎã¤Î¤è¤¦¤Ë¡¢ Ʊ¤¸µ¡Ç½¤ËÂФ¹¤ëprovide¤Ë³¤±¤Ærequire¤ò½ñ¤¯¤³¤È¤Ç¡¢ ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤Þ¤¨¤ËÄêµÁ¤Î¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤¹¤ë¤³¤È¤ò³Î¼Â¤Ë¤Ç¤­¤Þ¤¹¡£

(provide 'my-feature)  ; ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤Ï̵»ë¤·¡¢
                       ;   load¤Ïɾ²Á¤¹¤ë
(require 'my-feature)  ; ¥Ð¥¤¥È¥³¥ó¥Ñ¥¤¥é¤Ïɾ²Á¤¹¤ë

¥³¥ó¥Ñ¥¤¥é¤Ïprovide¤ò̵»ë¤·¡¢ ³¤¯require¤Î½èÍý¤Ç¤ÏÅö³º¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É»þ¤Ë¤Ïprovide¤Î¸Æ¤Ó½Ð¤·¤ò¼Â¹Ô¤¹¤ë¤Î¤Ç¡¢ ¤½¤Î¤¢¤È¤Îrequire¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢ ¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤¹¤ë¤È¤­¤Ë¤Ï¤Ê¤Ë¤â¤·¤Þ¤»¤ó¡£

Function: provide feature

¤³¤Î´Ø¿ô¤Ï¡¢µ¡Ç½feature¤ò¥í¡¼¥É¤·½ª¤¨¤¿¤³¤È¡¢¤¢¤ë¤¤¤Ï¡¢ ¥í¡¼¥ÉÃæ¤Ç¤¢¤ë¤³¤È¤ò¸½ºß¤ÎEmacs¥»¥Ã¥·¥ç¥óÆâ¤ÇÀë¸À¤¹¤ë¡£ ¤Ä¤Þ¤ê¡¢feature¤Ë´ØÏ¢¤·¤¿µ¡Ç½¤¬Â¾¤ÎLisp¥×¥í¥°¥é¥à¤«¤éÍøÍѤǤ­¤ë¤³¤È¤ò °ÕÌ£¤¹¤ë¡£

provide¤Î¸Æ¤Ó½Ð¤·¤ÎľÀܤθú²Ì¤Ï¡¢ feature¤¬¥ê¥¹¥Èfeatures¤ËÆþ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ feature¤ò¥ê¥¹¥Èfeatures¤ÎÀèÆ¬¤ËÆþ¤ì¤ë¤³¤È¤Ç¤¢¤ë¡£ °ú¿ôfeature¤Ï¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£ provide¤Ïfeature¤òÊÖ¤¹¡£

features
     ⇒ (bar bish)

(provide 'foo)
     ⇒ foo
features
     ⇒ (foo bar bish)

¼«Æ°¥í¡¼¥É¤Ë¤è¤Ã¤Æ¥Õ¥¡¥¤¥ë¤ò¥í¡¼¥É¤·¤Æ¤¤¤ë¤È¤­¡¢ ¤½¤ÎÆâÍÆ¤òɾ²Á¤¹¤ë¤³¤È¤Ç¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ¥í¡¼¥É¤òÃæ»ß¤¹¤ë¤È¡¢ ¥í¡¼¥ÉÃæ¤Ë¹Ô¤ï¤ì¤¿´Ø¿ôÄêµÁ¤äprovide¤Î¸Æ¤Ó½Ð¤·¤Ï¤â¤È¤ËÌ᤹¡£ see Autoload¡£

Function: require feature &optional filename

¤³¤Î´Ø¿ô¤Ï¡Ê(featurep feature)¤ò»È¤Ã¤Æ¡Ë ¸½ºß¤ÎEmacs¥»¥Ã¥·¥ç¥óÆâ¤Ëfeature¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë¡£ °ú¿ôfeature¤Ï¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤³¤È¡£

µ¡Ç½¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢require¤Ï¡¢ load¤ò»È¤Ã¤Æfilename¤ò¥í¡¼¥É¤¹¤ë¡£ filename¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥·¥ó¥Ü¥ëfeature¤Î̾Á°¤ò ¥í¡¼¥É¤¹¤Ù¤­¥Õ¥¡¥¤¥ë̾¤Î´ð¤Ë¤¹¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤Î¾ì¹ç¤Ë¤Ï¡¢require¤Ï¡¢ ÀÜÈø¼­¤òɬ¤ºÉղä·¤Æfeature¤òõ¤¹¡£ feature¤À¤±¤Î̾Á°¤Î¥Õ¥¡¥¤¥ë¤Ïõ¤µ¤Ê¤¤¡£

feature¤òÄ󶡤¹¤ë¥Õ¥¡¥¤¥ë¤Î¥í¡¼¥É¤Ë¼ºÇÔ¤¹¤ë¤È¡¢ require¤Ï¥¨¥é¡¼ ‘Required feature feature was not provided’¤òÄÌÃΤ¹¤ë¡£

Function: featurep feature

¤³¤Î´Ø¿ô¤Ï¡¢¸½ºß¤ÎEmacs¥»¥Ã¥·¥ç¥ó¤Çfeature¤¬Ä󶡤µ¤ì¤Æ¤¤¤ì¤Ð ¡Ê¤Ä¤Þ¤ê¡¢feature¤¬features¤Î¥á¥ó¥Ð¤Ç¤¢¤ì¤Ð¡Ë t¤òÊÖ¤¹¡£

Variable: features

¤³¤ÎÊÑ¿ô¤ÎÃͤϡ¢ ¸½ºß¤ÎEmacs¥»¥Ã¥·¥ç¥ó¤Ë¥í¡¼¥ÉºÑ¤ß¤Îµ¡Ç½¤òɽ¤¹¥·¥ó¥Ü¥ë¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£ ³Æ¥·¥ó¥Ü¥ë¤Ï¡¢provide¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¤³¤Î¥ê¥¹¥È¤ËÄɲ䵤ì¤ë¡£ ¥ê¥¹¥ÈfeaturesÆâ¤ÎÍ×ÁǤνçÈ֤ϴط¸¤Ê¤¤¡£