It looks like the ecl reader will create automatically hidden package
when reading qualified symbols naming inexistant packages.

I can't find anything in CLHS that prevents this behavior, but it's
highly unexpected.


It just made me lose one hour on a typo.



I think this 'feature' should be optional (off by default), and be
documented as an extension to Common Lisp, if not removed at all.

It is problematic that no error is signaled when reading a symbol from
an inexisting package.

It may also be problematic that when creating a package, it may
already contain all the symbols read with this package qualification.



$ ecl
ECL (Embeddable Common-Lisp) 10.7.1
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  
Top level in: #<process SI:TOP-LEVEL 0000000000643f60>.
> '(user-input::a)

(USER-INPUT::A)
> (list-all-packages)

(#<"FFI" package> #<"GRAY" package> #<"MP" package> #<"CLOS" package>
 #<"SI" package> #<"KEYWORD" package> #<"COMMON-LISP-USER" package>
 #<"COMMON-LISP" package>)
> (find-package "USER-INPUT")

NIL
> (symbol-name (first '(user-input::a)))

"A"
> (symbol-package (first '(user-input::a)))

#<"USER-INPUT" package>
> (find-package "USER-INPUT")

NIL
> (eq 'user-input::a 'user-input::a)

T
> (defvar *a* 'user-input::a)

*A*
> (eq *a* 'user-input::a)

T
> (list-all-packages)

(#<"FFI" package> #<"GRAY" package> #<"MP" package> #<"CLOS" package>
 #<"SI" package> #<"KEYWORD" package> #<"COMMON-LISP-USER" package>
 #<"COMMON-LISP" package>)

> (defpackage "USER-INPUT")

#<"USER-INPUT" package>
> *a*

USER-INPUT::A
> (list-all-packages)

(#<"USER-INPUT" package> #<"FFI" package> #<"GRAY" package> #<"MP" package>
 #<"CLOS" package> #<"SI" package> #<"KEYWORD" package>
 #<"COMMON-LISP-USER" package> #<"COMMON-LISP" package>)
> (find-symbol "A" (find-package "USER-INPUT"))

USER-INPUT::A
:INTERNAL
> (eq *a* (find-symbol "A" (find-package "USER-INPUT")))

T
> 


-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list

Reply via email to