Next: , Previous: Definitions, Up: Symbols   [Contents][Index]


7.3 ¥·¥ó¥Ü¥ë¤ÎºîÀ®¤È¥¤¥ó¥¿¡¼¥ó

GNU Emacs Lisp¤Ë¤ª¤¤¤Æ¡¢¤É¤Î¤è¤¦¤Ë¥·¥ó¥Ü¥ë¤òºîÀ®¤¹¤ë¤«¤òÍý²ò¤¹¤ë¤Ë¤Ï¡¢ Lisp¤¬¤½¤ì¤é¤ò¤É¤Î¤è¤¦¤ËÆÉ¤à¤«¤òÃΤëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ Lisp¤Ï¡¢Æ±¤¸Ê¸»ú·²¤òÆÉ¤ß¼è¤ë¤¿¤Ó¤Ë¡¢Æ±¤¸¥·¥ó¥Ü¥ë¤ò¤ß¤Ä¤±¤ë¤³¤È¤òÊݾڤ¹¤ë ɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ë¼ºÇÔ¤¹¤ë¤È´°Á´¤Ëº®Í𤷤ޤ¹¡£

Lisp¥ê¡¼¥À¤¬¥·¥ó¥Ü¥ë¤Ë½Ð²ñ¤¦¤È¡¢Ì¾Á°¤Îʸ»ú·²¤ò¤¹¤Ù¤ÆÆÉ¤ß¼è¤ê¤Þ¤¹¡£ ¤½¤·¤Æ¡¢¤³¤ì¤é¤Îʸ»ú·²¤ò¡Ø¥Ï¥Ã¥·¥å²½¡Ù¤·¤Æ¡¢ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¡Êobarray¡Ë¤È¸Æ¤Ð¤ì¤ëɽ¤Îź»ú¤òõ¤·¤Þ¤¹¡£ ¥Ï¥Ã¥·¥å²½¤Ï¸úΨŪ¤Ëõº÷¤¹¤ë¼êË¡¤Ç¤¹¡£ ¤¿¤È¤¨¤Ð¡¢Jan Jones¤òÅÅÏÃÈÖ¹æÊí¤Îɽ»æ¤«¤é1¥Ú¡¼¥¸¤º¤Ä½ç¤Ëõ¤¹¤«¤ï¤ê¤Ë¡¢ J¤Î¥Ú¡¼¥¸¤«¤éõ¤·»Ï¤á¤Þ¤¹¡£ ¤³¤ì¤Ïñ½ã¤Ê¥Ï¥Ã¥·¥å²½¤Ç¤¹¡£ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Î³ÆÍ×ÁǤϡ¢ ¤¢¤ë¥Ï¥Ã¥·¥å¥³¡¼¥É¤òÍ­¤¹¤ë¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¤ò³ÊǼ¤·¤¿ ¥Ð¥±¥Ã¥È¡Êbucket¡Ë¤Ç¤¹¡£ ¤¢¤ë̾Á°¤òõ¤¹¤Ë¤Ï¡¢¤½¤Î̾Á°¤Î¥Ï¥Ã¥·¥å¥³¡¼¥É¤ËÂбþ¤¹¤ë¥Ð¥±¥Ã¥ÈÆâ¤Î ¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¤òÄ´¤Ù¤ë¤À¤±¤Ç½½Ê¬¤Ç¤¹¡£

ÌÜŪ¤Î̾Á°¤Î¥·¥ó¥Ü¥ë¤¬¤ß¤Ä¤«¤ì¤Ð¡¢¥ê¡¼¥À¤Ï¤½¤Î¥·¥ó¥Ü¥ë¤ò»È¤¤¤Þ¤¹¡£ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ËÌÜŪ¤Î̾Á°¤Î¥·¥ó¥Ü¥ë¤¬¤Ê¤±¤ì¤Ð¡¢ ¥ê¡¼¥À¤Ï¿·¤¿¤Ê¥·¥ó¥Ü¥ë¤òºîÀ®¤·¡¢¤½¤ì¤ò¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ËÄɲä·¤Þ¤¹¡£ ¤¢¤ë̾Á°¤Î¥·¥ó¥Ü¥ë¤òõ¤·¤¿¤êÄɲ乤뤳¤È¤ò¥·¥ó¥Ü¥ë¤ò ¥¤¥ó¥¿¡¼¥ó¡Êinterning¡Ë¤¹¤ë¤È¤¤¤¤¡¢ ¤½¤Î¥·¥ó¥Ü¥ë¤ò¥¤¥ó¥¿¡¼¥ó¤·¤¿¥·¥ó¥Ü¥ë¡Êinterned symbol¡Ë¤È¸Æ¤Ó¤Þ¤¹¡£

¥¤¥ó¥¿¡¼¥ó¤¹¤ë¤³¤È¤Ç¡¢³Æ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¤Ï ÆÃÄê¤Î̾Á°¤Î¥·¥ó¥Ü¥ë¤¬1¸Ä¤À¤±¤¢¤ë¤³¤È¤òÊݾڤ·¤Þ¤¹¡£ ¾¤Î»÷¤¿¤è¤¦¤Ê̾Á°¤Î¥·¥ó¥Ü¥ë¤¬Â¸ºß¤·¤Æ¤â¡¢ Ʊ¤¸¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¤ÏÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢Æ±¤¸¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ò»È¤Ã¤ÆÆÉ¤à¸Â¤ê¡¢ ¥ê¡¼¥À¤ÏƱ¤¸Ì¾Á°¤ËÂФ·¤ÆÆ±¤¸¥·¥ó¥Ü¥ë¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¤¬¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ËÆþ¤Ã¤Æ¤¤¤ë¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£ ¼ÂºÝ¡¢¤É¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¤â°¤µ¤Ê¤¤¥·¥ó¥Ü¥ë¤¬¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤ò¥¤¥ó¥¿¡¼¥ó¤·¤Æ¤Ê¤¤¥·¥ó¥Ü¥ë¡Êuninterned symbols¡Ë¤È¸Æ¤Ó¤Þ¤¹¡£ ¥¤¥ó¥¿¡¼¥ó¤·¤Æ¤Ê¤¤¥·¥ó¥Ü¥ë¤Ë¤â¡¢Â¾¤Î¥·¥ó¥Ü¥ë¤ÈƱÍͤË4¤Ä¤Î¥»¥ë¤¬¤¢¤ê¤Þ¤¹¡£ ¤·¤«¤·¡¢¤½¤ì¤ò»²¾È¤¹¤ë¼êÃʤϡ¢Â¾¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò²ð¤·¤ÆÃµ¤¹¤«¡¢ ÊÑ¿ô¤ÎÃͤȤ·¤ÆÃµ¤¹¤·¤«¤¢¤ê¤Þ¤»¤ó¡£

Emacs Lisp¤Ç¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ï¼ÂºÝ¤Ë¤Ï¥Ù¥¯¥È¥ë¤Ç¤¹¡£ ¥Ù¥¯¥È¥ë¤Î³ÆÍ×ÁǤϥХ±¥Ã¥È¤Ç¤¹¡£ ¤½¤ÎÃͤϡ¢¤½¤Î¥Ð¥±¥Ã¥È¤Ë¥Ï¥Ã¥·¥å²½¤µ¤ì¤ë̾Á°¤Î¥¤¥ó¥¿¡¼¥ó¤·¤¿¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤«¡¢ ¤½¤Î¥Ð¥±¥Ã¥È¤¬¶õ¤Ê¤é¤Ð0¤Ç¤¹¡£ ¥¤¥ó¥¿¡¼¥ó¤·¤¿³Æ¥·¥ó¥Ü¥ë¤Ë¤Ï¡¢¥Ð¥±¥Ã¥È¤Î¤Ä¤®¤Î¥·¥ó¥Ü¥ë¤ò»Ø¤¹ ¡Ê¥æ¡¼¥¶¡¼¤Ë¤Ï¸«¤¨¤Ê¤¤¡ËÆâÉôŪ¤Ê¥ê¥ó¥¯¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤Î¥ê¥ó¥¯¤Ï¸«¤¨¤Ê¤¤¤Î¤Ç¡¢mapatoms¡Ê²¼µ­¡Ë¤ò»È¤¦°Ê³°¤Ë¤Ï¡¢ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóÆâ¤Î¤¹¤Ù¤Æ¤Î¥·¥ó¥Ü¥ë¤òõ¤¹ÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¥Ð¥±¥Ã¥ÈÆâ¤Ç¤Î¥·¥ó¥Ü¥ë¤Î½ç½ø¤Ï´Ø·¸¤¢¤ê¤Þ¤»¤ó¡£

¶õ¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ç¤Ï¡¢³ÆÍ×ÁǤÏ0¤Ç¤¹¡£ (make-vector length 0)¤Ç¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤òºîÀ®¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤òºîÀ®¤¹¤ëÍ£°ì¤ÎÀµÅö¤ÊÊýË¡¤Ç¤¹¡£ Ťµ¤È¤·¤ÆÁÇ¿ô¤òÍѤ¤¤ë¤È¡¢¥Ï¥Ã¥·¥å²½¤Î·ë²Ì¤¬¤è¤¤·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£ 2¤Î¶Ò¤è¤ê1¾®¤µ¤¤Ä¹¤µ¤â¤è¤¤·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£

ÆÉ¼Ô¼«¿È¤Ç¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¥·¥ó¥Ü¥ë¤òÆþ¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ ¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó¡£ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¥·¥ó¥Ü¥ë¤òÀµ¤·¤¯Æþ¤ì¤é¤ì¤ë¤Î¤Ïintern¤À¤±¤Ç¤¹¡£

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ Common Lisp¤Ç¤Ï¡¢1¤Ä¤Î¥·¥ó¥Ü¥ë¤òÊ£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

²¼µ­¤Î´Ø¿ô¤Î¤Û¤È¤ó¤É¤Ï¡¢°ú¿ô¤Ë̾Á°¤ò¼è¤ê¡¢ ¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ò°ú¿ô¤Ë¼è¤ê¤Þ¤¹¡£ ̾Á°¤¬Ê¸»úÎó¤Ç¤Ê¤«¤Ã¤¿¤ê¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎ󤬥٥¯¥È¥ë¤Ç¤Ê¤¤¤È¡¢ ¥¨¥é¡¼wrong-type-argument¤òÄÌÃΤ·¤Þ¤¹¡£

Function: symbol-name symbol

¤³¤Î´Ø¿ô¤Ï¡¢symbol¤Î̾Á°¤òɽ¤¹Ê¸»úÎó¤òÊÖ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¤Ä¤®¤Î¤È¤ª¤ê¡£

(symbol-name 'foo)
     ⇒ "foo"

·Ù¹ð¡§ ʸ»úÎó¤Îʸ»ú¤òÃÖ¤­´¹¤¨¤ë¤È¥·¥ó¥Ü¥ë¤Î̾Á°¤òÊѹ¹¤¹¤ë¤¬¡¢ ¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ï¹¹¿·¤Ç¤­¤Ê¤¤¤Î¤ÇÊѹ¹¤·¤Ê¤¤¤³¤È¡ª

Function: make-symbol name

¤³¤Î´Ø¿ô¤Ï¡¢name¡Êʸ»úÎó¤Ç¤¢¤ë¤³¤È¡Ë¤ò̾Á°¤È¤¹¤ë ¿·¤¿¤Ë³ä¤êÉÕ¤±¤¿¥¤¥ó¥¿¡¼¥ó¤·¤Æ¤¤¤Ê¤¤¥·¥ó¥Ü¥ë¤òÊÖ¤¹¡£ ¤½¤ÎÃͤȴؿôÄêµÁ¤Ï¶õ¤Ç¤¢¤ê¡¢Â°À­¥ê¥¹¥È¤Ïnil¤Ç¤¢¤ë¡£ °Ê²¼¤ÎÎã¤Ç¤Ï¡¢sym¤ÎÃͤÏfoo¤Èeq¤Ç¤Ï¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢Ì¾Á°¤Ï‘foo’¤Ç¤Ï¤¢¤ë¤¬¡¢ ¥¤¥ó¥¿¡¼¥ó¤·¤Æ¤¤¤Ê¤¤Ê̤Υ·¥ó¥Ü¥ë¤Ç¤¢¤ë¤¿¤á¡£

(setq sym (make-symbol "foo"))
     ⇒ foo
(eq sym 'foo)
     ⇒ nil
Function: intern name &optional obarray

¤³¤Î´Ø¿ô¤Ï¡¢name¤ò̾Á°¤È¤¹¤ë¥¤¥ó¥¿¡¼¥ó¤·¤¿¥·¥ó¥Ü¥ë¤òÊÖ¤¹¡£ ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤¬¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóobarray¤Ë¸ºß¤·¤Ê¤±¤ì¤Ð¡¢ intern¤Ï¿·¤¿¤Ê¤â¤Î¤òºîÀ®¤·¡¢¤½¤ì¤ò¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ËÄɲ䷤Ƥ«¤é¡¢ ¤½¤ì¤òÊÖ¤¹¡£ obarray¤ò¾Êά¤¹¤ë¤È¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ôobarray¤ÎÃͤò»È¤¦¡£

(setq sym (intern "foo"))
     ⇒ foo
(eq sym 'foo)
     ⇒ t

(setq sym1 (intern "foo" other-obarray))
     ⇒ foo
(eq sym 'foo)
     ⇒ nil

Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§ Common Lisp¤Ç¤Ï¡¢´û¸¤Î¥·¥ó¥Ü¥ë¤ò¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ë¥¤¥ó¥¿¡¼¥ó¤Ç¤­¤ë¡£ Emacs Lisp¤Ç¤Ï¡¢¤³¤ì¤Ï¤Ç¤­¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢intern¤Î°ú¿ô¤Ïʸ»úÎó¤Ç¤¢¤ëɬÍפ¬¤¢¤ê¡¢ ¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¤¡£

Function: intern-soft name &optional obarray

¤³¤Î´Ø¿ô¤Ï¡¢obarrayÆâ¤Îname¤ò̾Á°¤È¤¹¤ë¥·¥ó¥Ü¥ë¤òÊÖ¤¹¡£ ¤¿¤À¤·¡¢¤½¤Î̾Á°¤Î¥·¥ó¥Ü¥ë¤¬obarray¤Ë¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢intern-soft¤òÍѤ¤¤Æ¡¢»ØÄꤷ¤¿Ì¾Á°¤Î¥·¥ó¥Ü¥ë¤¬ ¥¤¥ó¥¿¡¼¥ó¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤é¤ì¤ë¡£ obarray¤ò¾Êά¤¹¤ë¤È¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ôobarray¤ÎÃͤò»È¤¦¡£

(intern-soft "frazzle")        ; ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤Ï¸ºß¤·¤Ê¤¤
     ⇒ nil
(make-symbol "frazzle")        ; ¥¤¥ó¥¿¡¼¥ó¤·¤Ê¤¤¤â¤Î¤òºî¤ë
     ⇒ frazzle
(intern-soft "frazzle")        ; ¤½¤Î¤è¤¦¤Ê¤â¤Î¤Ï¤ß¤Ä¤«¤é¤Ê¤¤
     ⇒ nil
(setq sym (intern "frazzle"))  ; ¥¤¥ó¥¿¡¼¥ó¤·¤¿¤â¤Î¤òºî¤ë
     ⇒ frazzle
(intern-soft "frazzle")        ; ¤½¤Î¤è¤¦¤Ê¤â¤Î¤¬¤ß¤Ä¤«¤Ã¤¿¡ª
     ⇒ frazzle
(eq sym 'frazzle)              ; ¤·¤«¤â¡¢¤½¤ì¤é¤ÏƱ°ì
     ⇒ t
Variable: obarray

¤³¤ÎÊÑ¿ô¤Ï¡¢intern¤äread¤¬»È¤¦É¸½à¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¡£

Function: mapatoms function &optional obarray

¤³¤Î´Ø¿ô¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóobarray¤Î³Æ¥·¥ó¥Ü¥ë¤Ë¤Ä¤¤¤Æ¡¢ 1²ó¤º¤Äfunction¤ò¸Æ¤Ó½Ð¤¹¡£ ¤½¤·¤Æ¡¢nil¤òÊÖ¤¹¡£ obarray¤ò¾Êά¤¹¤ë¤È¡¢Ä̾ï¤Î¥·¥ó¥Ü¥ë¸þ¤±¤Îɸ½à¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤Ç¤¢¤ë obarray¤ÎÃͤò¥Ç¥Õ¥©¥ë¥È¤Ë¤¹¤ë¡£

(setq count 0)
     ⇒ 0
(defun count-syms (s)
  (setq count (1+ count)))
     ⇒ count-syms
(mapatoms 'count-syms)
     ⇒ nil
count
     ⇒ 1871

mapatoms¤ò»È¤Ã¤¿Ê̤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Accessing Documentation¤Îdocumentation¤ò»²¾È¡£

Function: unintern symbol &optional obarray

¤³¤Î´Ø¿ô¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóobarray¤«¤ésymbol¤òºï½ü¤¹¤ë¡£ symbol¤¬¼ÂºÝ¤Ë¤Ï¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎóÆâ¤Ë¤Ê¤±¤ì¤Ð¡¢ unintern¤Ï¤Ê¤Ë¤â¤·¤Ê¤¤¡£ obarray¤¬nil¤Ç¤¢¤ë¤È¡¢¸½ºß¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤ò»È¤¦¡£

symbol¤Î¥·¥ó¥Ü¥ë¤Î¤«¤ï¤ê¤Ëʸ»úÎó¤ò»ØÄꤹ¤ë¤È¡¢ ¤½¤ì¤Ï¥·¥ó¥Ü¥ë¤Î̾Á°¤òɽ¤¹¡£ ¤½¤·¤Æ¡¢unintern¤Ï¤½¤Î̾Á°¤Î¥·¥ó¥Ü¥ë¤ò¡Ê¤¢¤ì¤Ð¡Ë¥ª¥Ö¥¸¥§¥¯¥ÈÇÛÎó¤«¤é ºï½ü¤¹¤ë¡£ ¤½¤Î¤è¤¦¤Ê¥·¥ó¥Ü¥ë¤¬¤Ê¤±¤ì¤Ð¡¢unintern¤Ï¤Ê¤Ë¤â¤·¤Ê¤¤¡£

unintern¤Ï¡¢¥·¥ó¥Ü¥ë¤òºï½ü¤·¤¿¤È¤­¤Ë¤Ït¤òÊÖ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£


Next: , Previous: Definitions, Up: Symbols   [Contents][Index]