[Sbcl-help] Re: The name: USER does not designate any package. ...

Chris Hart <chriscorp@...> writes:
> Of all the Lisps I've tried, sbcl is the only one that gives me the
> error message in the subject line,
CVS CMUCL does the same.
> anyone knows what causes it?
AFAIR, Paul Dietz discovered that the standard doesn't allow USER as a
nickname of COMMON-LISP-USER. (See also CLHS 11.1.2 Standardized
Packages.)

Thread view

Hi,
I've just hopped on sbcl after the Allegro trial refused to handle a large
heap package ( http://www.isi.edu/licensed-sw/halogen/ ). Of all the Lisps
I've tried, sbcl is the only one that gives me the error message in the
subject line, anyone knows what causes it? It looks like a syntax glitch, but
what exactly? And why would CMU CL and GNU CL handle this better?
Thanks
CH

Chris Hart <chriscorp@...> writes:
> Of all the Lisps I've tried, sbcl is the only one that gives me the
> error message in the subject line,
CVS CMUCL does the same.
> anyone knows what causes it?
AFAIR, Paul Dietz discovered that the standard doesn't allow USER as a
nickname of COMMON-LISP-USER. (See also CLHS 11.1.2 Standardized
Packages.)

Gerd Moellmann wrote:
> AFAIR, Paul Dietz discovered that the standard doesn't allow USER as a
> nickname of COMMON-LISP-USER. (See also CLHS 11.1.2 Standardized
> Packages.)
There has been some controversy over this. However, I think everyone
will agree that the standard *permits* USER to not be a nickname or name
for any predefined package, so no portable program should depend (find-package "USER")
succeeding.
Paul

"Paul F. Dietz" <dietz@...> writes:
> However, I think everyone will agree that the standard *permits*
> USER to not be a nickname or name for any predefined package, so no
> portable program should depend (find-package "USER") succeeding.
Certainly.

Hello,
Chris Hart <chriscorp@...> writes:
> Hi,
>
> I've just hopped on sbcl after the Allegro trial refused to handle a large
> heap package ( http://www.isi.edu/licensed-sw/halogen/ ). Of all the Lisps
> I've tried, sbcl is the only one that gives me the error message in the
> subject line, anyone knows what causes it?
Packages LISP and USER were present in CLtL1 and renamed to
COMMON-LISP and COMMON-LISP-USER in ANSI; SBCL is an implementation of
_ANSI_ Common Lisp. If you are not going to support very old CL
implementations, I'd recommend you to follow ANSI.
--
Regards,
Alexey Dejneka
"Alas, the spheres of truth are less transparent than those of
illusion." -- L.E.J. Brouwer

Chris Hart <chriscorp@...> writes:
> I've just hopped on sbcl after the Allegro trial refused to handle a large
> heap package ( http://www.isi.edu/licensed-sw/halogen/ ). Of all the Lisps
> I've tried, sbcl is the only one that gives me the error message in the
> subject line, anyone knows what causes it? It looks like a syntax glitch, but
> what exactly? And why would CMU CL and GNU CL handle this better?
"better" is a difficult word :-)
In the first Common Lisp standard, defined by Guy Steele in (the first
edition of) _Common Lisp the Language_, there were two standardized
Lisp packages, named by "LISP" and "USER". "LISP" was the package
containing all the functions defined by the standard; "USER" was a
guaranteed-clean package for user's interactive use.
Time passed, and software was written. Back in the bad old days,
software authors didn't worry too much about modularity violations --
in particular, they didn't worry too much about scribbling over a
notionally shared package, rather than building their own. So you
would see code[*] starting with (in-package "USER") and proceeding
with a load of definitions, which could in principle overwrite or be
overwritten by some other software package's definitions.
Along came the ANSI standard for Common Lisp, which was incompatible
with the previous (CLtL) standard in some ways. The "LISP" package
was renamed to "COMMON-LISP", and the "USER" package to
"COMMON-LISP-USER". Some Common Lisp vendors maintained the old names
as nicknames for the new, a practice which was at least slightly
problematic, given that some operators had subtly changed their
semantics in the transition, but nonetheless, old code continued
mostly to work. Newer implementations (of which SBCL is conceptually
one, despite its 20+ year history; likewise OpenMCL :-), however, do
not necessarily support this pseudo-backwards-compatibility, because
the existing standard does not mandate or even encourage it.
I hope that gives some feeling for the reason. Quick workarounds for
your problem would be to find any mention of the "LISP" and "USER"
packages, and convert references (including package prefixes, for
instance) into "CL" and "CL-USER" (nicknames for the rather more
verbose names); alternatively,
(rename-package "COMMON-LISP" "COMMON-LISP" '("CL" "LISP"))
(rename-package "COMMON-LISP-USER" "COMMON-LISP-USER" '("CL-USER" "USER"))
will get it up and running. I do encourage you, however, to contact
the author of the software to update it for the 1994 standard.
Cheers,
Christophe
[*] I don't know if this applies to this particular software.
--
http://www-jcsu.jesus.cam.ac.uk/~csr21/ +44 1223 510 299/+44 7729 383 757
(set-pprint-dispatch 'number (lambda (s o) (declare (special b)) (format s b)))
(defvar b "~&Just another Lisp hacker~%") (pprint #36rJesusCollegeCambridge)