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.