PLN CDR draft: Issue 9
1. Issue 9 (Empty package local name)
1.1. Description
It is not clear whether it should be allowed to use the empty string "" as a
local nickname, and in the case it is allowed, whether it should affect the
keyword symbol syntax :xxxx.
1.2. Examples
(defpackage #:foo (:use #:cl) (:local-nicknames ("" #:cl))) (in-package #:foo) (package-name (symbol-package ':*package*)) ; => "KEYWORD" (sbcl, ccl, ecl, abcl, clasp, lispworks) ; => "COMMON-LISP" (acl) (package-name (symbol-package '||:*package*)) ; => "KEYWORD" (ecl, clasp, lispworks) ; => "COMMON-LISP" (sbcl, ccl, acl) ; abcl errors
1.3. Current behavior
sbcl, ccl:
:xxxx is read as a keyword;
||:xxxx is read as a symbol in the package named or nicknamed "".
ecl, clasp, lispworks:
Both ||:xxxx and :xxxx are read as a keyword.
acl:
Both :xxxx and ||:xxxx are read as a symbol in the package named or nicknamed
"" which is a global nickname for the #:KEYWORD package, but can be shadowed
by a local nickname.
abcl:
:xxxx is read as a keyword;
||:xxxx syntax cannot be read (attemts result in an error).
1.4. Proposal ALLOW-KEEP-KEYWORDS
The "" local nickname should be explicitely allowed. :xxxx should be always
read as a keyword regardless of package names or nicknames. ||:xxxx should be
read as a symbol in the package named or nicknamed by "".
1.5. Proposal ALLOW-FUN
The "" local nickname should be explicitely allowed. Both :xxxx and ||:xxxx
should be read as a symbol in the package named or nicknamed by "".
1.6. Links
See also the WSCL issue 63.