If you don't put IN-PACKAGE in the file, then the file will be loaded in
the current *PACKAGE* which might be the package named
"COMMON-LISP-USER".
clhs "2.3.5 Valid Patterns for Tokens"
says:
5. The consequences are unspecified if any other pattern of package
markers in a token is used. All other uses of package markers
within names of symbols are not defined by this standard but are
reserved for implementation-dependent use.
It happens that clisp exercises the freedom it has to read ":" as a
keyword with an emptyp name. Conforming representations for this
keyword are: :|| and KEYWORD:||.
Notice that once upon a time, clisp had a package nickname for the
KEYWORD package that was the empty string too. This definitely was not
conforming and has been removed. But it made ||:|| another
representation for KEYWORD:||. "" is a valid user package name.
(defpackage "" (:use "CL") (:export "RAILS"))
(defpackage "⊥" (:use "CL") (:export "RAILS"))
(not (eq '||:rails '⊥:rails))
--
__Pascal Bourguignon__
http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk