━━━━━━━━━━━━━━━━━━━━━━━━ PLN CDR DRAFT: ISSUE 9 Gleefre ━━━━━━━━━━━━━━━━━━━━━━━━ 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]. [WSCL issue 63]