From: Pascal C. <pc...@p-...> - 2011-12-16 20:55:45
|
Hi, I think this looks like an extremely useful extension, and I would really welcome a CDR on this so this can be adopted by other CL implementations as well. Potential edge cases: - What if a local nickname happens to be the same as an existing package name, and/or an existing nickname for a package? I would vote for allowing this, but this then needs a specification of how the shadowing works. I would strongly be in favor of not allowing symbols from other packages (with the same name and/or nickname) 'leaking' through in any way. - You may have to pay attention to exporting symbols that you import via local nicknames. (Also consider shadowing-import, and friends…) - Can local nicknames be mapped to other local nicknames? - It may be a good idea to disallow nicknames for the "KEYWORD" package. - Can there be issues with package locks? Package redefinition is already tricky enough. I wouldn't expect local nicknames to make this substantially more tricky than it already is. If specified as a CDR, is probably a good idea to be minimal what can be supported across CL implementations (i.e., a redefinition should resemble as closely as possible the previous definition, for example by disallowing changing or removing of local nicknames, but only allowing adding new ones). CL implementations can then experiment with variations as soon as there is more experience with such a feature… The syntax looks good to me. I can imagine that people may want a form that can be used independently of defpackage, but that may be dangerous. (People may - erroneously? - expect file-local nicknames…) Just my 0.02€… Pascal On 15 Dec 2011, at 21:55, Paul Khuong wrote: > They are surprisingly easy to hack into a working prototype: > > --- > * (defpackage "FOO" > (:use "CL") > (:local-nicknames "X" "SB-EXT")) > > (in-package "FOO") > > #<PACKAGE "FOO"> > * > #<PACKAGE "FOO"> > * 'x:cas > > SB-EXT:CAS > --- > > The diff is tiny: each package comes with a (string=) alist of local nickname to global name, and read-token looks up in that plist when a package designator is tokenized. > > Issues: what are the edge cases and how should they be handled? > In particular, what do we do with package redefinition? > Is that really the best syntax? > > Please discuss (: > > Paul Khuong > ------------------------------------------------------------------------------ > 10 Tips for Better Server Consolidation > Server virtualization is being driven by many needs. > But none more important than the need to reduce IT complexity > while improving strategic productivity. Learn More! > http://www.accelacomm.com/jaw/sdnl/114/51507609/ > _______________________________________________ > Sbcl-devel mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-devel -- Pascal Costanza |