[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: the KEYWORD package USEing another package
Date: Mon, 29 Feb 88 23:08 CST
From: David Vinayak Wallace <Gumby@MCC.COM>
...
Yes there is a problem: you could cause a symbol to be available as a
keyword whose value was not the keyword. E.g:
1 (setf user::keyword-example nil) ==> nil
2 (export 'user::keyword-example) ==> t
3 user:keyword-example ==> nil
4 (use-package '(user) (find-package 'keyword)) ==> t
5 :keyword-example ==> nil
What makes you think that reading and evaluating :keyword-example
results in NIL? Pg 175: "Any symbol preceded by a colon but no
package name ... is added to (or looked up in) the KEYWORD package as
an EXTERNAL symbol." After form 4, user:keyword-example is accessible
only as an INTERNAL symbol in the KEYWORD package. Therefore,
according to my interpretation of the preceding quote, whatever
mechanism "looks up" keyword::keyword-example (aka
user:keyword-example) would EXPORT it from the KEYWORD package,
thereby making it PRESENT in the KEYWORD package, and thereby causing
it to become a constant whose value is itself (all on pg 175). Thus
the value of form 5 would be printed as :keyword-example.
...
-- Nick