Next: , Previous: Local Variables, Up: Variables   [Contents][Index]


10.4 ÊÑ¿ô¤¬¡Ø¶õ¡Ù¤Ç¤¢¤ë¤È¤­

¥·¥ó¥Ü¥ë¤Ë¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤È¤·¤Æ¤ÎÃͤò°ìÅÙ¤âÍ¿¤¨¤Æ¤¤¤Ê¤¤¤È¤­¡¢ ¤½¤Î¥·¥ó¥Ü¥ë¤Î¥°¥í¡¼¥Ð¥ëÃͤ϶õ¡Êvoid¡Ë¤Ç¤¢¤ë¤È¤¤¤¤¤Þ¤¹¡£ ¤¤¤¤¤«¤¨¤ì¤Ð¡¢¥·¥ó¥Ü¥ë¤ÎÃÍ¥»¥ë¤Ë¤Ï¤É¤ó¤ÊLisp¥ª¥Ö¥¸¥§¥¯¥È¤âÆþ¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ ¥·¥ó¥Ü¥ë¤òɾ²Á¤·¤è¤¦¤È¤¹¤ë¤È¡¢ÃͤǤϤʤ¯¥¨¥é¡¼void-variable¤òÆÀ¤Þ¤¹¡£

nil¤È¤¤¤¦Ãͤ϶õ¤È¤Ï°Û¤Ê¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥·¥ó¥Ü¥ënil¤ÏLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ê¡¢Â¾¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÈƱÍÍ¤Ë ÊÑ¿ô¤ÎÃͤˤʤꤨ¤Þ¤¹¡£ ¤½¤ì¤ÏÃͤʤΤǤ¹¡£ ¶õ¤ÊÊÑ¿ô¤Ï¤¤¤«¤Ê¤ëÃͤâ»ý¤¿¤Ê¤¤¤Î¤Ç¤¹¡£

ÊÑ¿ô¤ËÃͤòÍ¿¤¨¤¿¤¢¤È¤Ç¤Ï¡¢makunbound¤ò»È¤Ã¤Æ ºÆÅÙ¤½¤ÎÊÑ¿ô¤ò¶õ¤Ë¤Ç¤­¤Þ¤¹¡£

Function: makunbound symbol

¤³¤Î´Ø¿ô¤Ï¡¢symbol¤Î¸½ºß¤ÎÊÑ¿ô«Çû¤ò¶õ¤Ë¤¹¤ë¡£ ¤³¤ì°Ê¹ß¤ËÊÑ¿ô¤È¤·¤Æ¤³¤Î¥·¥ó¥Ü¥ë¤ÎÃͤò»È¤ª¤¦¤È¤¹¤ë¤È¡¢ ºÆÅÙÀßÄꤷ¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢¥¨¥é¡¼void-variable¤òÄÌÃΤ¹¤ë¡£

makunbound¤Ïsymbol¤òÊÖ¤¹¡£

(makunbound 'x)      ; ÊÑ¿ôx¤Î¥°¥í¡¼¥Ð¥ëÃͤò¶õ¤Ë¤¹¤ë
     ⇒ x
x
error→ Symbol's value as variable is void: x

symbol¤¬¥í¡¼¥«¥ë¤Ë«Çû¤µ¤ì¤Æ¤¤¤ë¤È¡¢ makunbound¤Ï´û¸¤ÎºÇ¥í¡¼¥«¥ë«Çû¤ËºîÍѤ¹¤ë¡£ ¥í¡¼¥«¥ë«Çû¤òºîÀ®¤¹¤ë¤¹¤Ù¤Æ¤Î¹½Ê¸¤ÏÊÑ¿ô¤ËÃͤòÍ¿¤¨¤ë¤¿¤á¡¢ ¤³¤ì¤Ï¥·¥ó¥Ü¥ë¤Î¥í¡¼¥«¥ë«Çû¤ò¶õ¤Ë¤¹¤ëÍ£°ì¤ÎÊýË¡¤Ç¤¢¤ë¡£ ¤³¤Î¾ìÌ̤Ǥϡ¢¶õ¤Î¾õÂ֤ϡ¢Â«Çû¤¬Â¸ºß¤¹¤ë¸Â¤ê¸³¤¹¤ë¡£ «Çû¤òºîÀ®¤·¤¿¹½Â¤¤«¤éÈ´¤±½Ð¤·¤ÆÂ«Çû¤¬ºï½ü¤µ¤ì¤ë¤È¡¢ Ä̾ï¤É¤ª¤ê¤½¤ì°ÊÁ°¤Î¥í¡¼¥«¥ë«Çû¤«¥°¥í¡¼¥Ð¥ë«Çû¤¬Í­¸ú¤Ë¤Ê¤ê¡¢ ¤½¤Î«Çû¤¬¶õ¤Ç¤Ê¤±¤ì¤ÐÊÑ¿ô¤Ï¶õ¤Ç¤Ï¤Ê¤¤¡£

(setq x 1)               ; ¥°¥í¡¼¥Ð¥ë«Çû¤ËÃͤòÆþ¤ì¤ë
     ⇒ 1
(let ((x 2))             ; ¥í¡¼¥«¥ë¤Ë«Çû¤¹¤ë
  (makunbound 'x)        ; ¥í¡¼¥«¥ë«Çû¤ò¶õ¤Ë¤¹¤ë
  x)
error→ Symbol's value as variable is void: x
x                        ; ¥°¥í¡¼¥Ð¥ë«Çû¤ÏÊѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤
     ⇒ 1

(let ((x 2))             ; ¥í¡¼¥«¥ë¤Ë«Çû¤¹¤ë
  (let ((x 3))           ; ¤â¤¦°ìÅÙ
    (makunbound 'x)      ; ¤â¤Ã¤È¤âÆâ¦¤Î¥í¡¼¥«¥ë«Çû¤ò¶õ¤Ë¤¹¤ë
    x))                  ; »²¾È¤¹¤ë¤¬¡¢¤½¤ì¤Ï¶õ
error→ Symbol's value as variable is void: x
(let ((x 2))
  (let ((x 3))
    (makunbound 'x))     ; Æâ¦¤Î«Çû¤ò¶õ¤Ë¤·¡¢¤½¤ì¤òºï½ü¤¹¤ë
  x)                     ; ³°Â¦¤Îlet¤Î«Çû¤¬¸«¤¨¤ë
     ⇒ 2

makunbound¤Ç¶õ¤Ë¤·¤¿ÊÑ¿ô¤Ï¡¢ °ìÅÙ¤âÃͤò¼õ¤±¼è¤Ã¤¿¤³¤È¤¬¤Ê¤¯¡¢¤½¤Î¤¿¤á¤Ë¶õ¤Ç¤¢¤ëÊÑ¿ô¤È¶èÊ̤Ǥ­¤Þ¤»¤ó¡£

ÊÑ¿ô¤¬¸½ºß¡¢¶õ¤Ç¤¢¤ë¤«¤É¤¦¤«¤Ï´Ø¿ôboundp¤ò»È¤Ã¤ÆÄ´¤Ù¤é¤ì¤Þ¤¹¡£

Function: boundp variable

boundp¤Ï¡¢¡Ê¥·¥ó¥Ü¥ë¡Ëvariable¤¬¶õ¤Ç¤Ê¤±¤ì¤Ð¡¢ ¤è¤êÀµ³Î¤Ë¤¤¤¨¤Ð¡¢¸½ºß¤Î«Çû¤¬¶õ¤Ç¤Ê¤±¤ì¤Ðt¤òÊÖ¤¹¡£ ¤µ¤â¤Ê¤±¤ì¤Ðnil¤òÊÖ¤¹¡£

(boundp 'abracadabra)          ; ¶õ¤Ç»Ï¤á¤ë
     ⇒ nil
(let ((abracadabra 5))         ; ¥í¡¼¥«¥ë¤Ë«Çû¤¹¤ë
  (boundp 'abracadabra))
     ⇒ t
(boundp 'abracadabra)          ; ¥°¥í¡¼¥Ð¥ë¤Ë¤Ï¤Þ¤À¶õ¤Ç¤¢¤ë
     ⇒ nil
(setq abracadabra 5)           ; ¥°¥í¡¼¥Ð¥ë¤Ë¶õ¤Ç¤Ê¤¯¤¹¤ë
     ⇒ 5
(boundp 'abracadabra)
     ⇒ t