Package extensions usage
David Holz
david.holz at grindwork.com
Wed Dec 30 12:26:08 UTC 2015
This is something I've been coincidentally pondering recently.
I see two advantages of hierarchical package names:
1) Uniqueness of internal package names
2) The ability to reference internal packages easily as a relative
specifier, without specifying the full absolute package name
Issue 1 is always solved by simple concatenation, and doesn't
necessarily require new features of the package system. Issue 2 is
provided by local package nicknames, which I do support. Using local
nicknames for the purpose of internal packages would also promote this
features' use probably more popularly than importing external libraries,
at least at first.
A third "feature" of hierarchical package names is directory
organization, but as others have mentioned, I don't necessarily consider
that an advantage.
That said, I've not actually used these features in a real project, as
portability is important to us.
The only place that I've seen nested packages be uniquely useful is in
JavaScript's npm, where a single library can be loaded into the system
in completely independent multiple instantiations. I don't know if this
will ever have any relevance to Lisp system configuration, though.
I've coalesced some musings about hierarchical packages as
foo:bar:my-symbol (as opposed to com.org.foo:my-symbol) which would give
some more real meaning to a traversable hierarchy besides just being a
naming convention.
Regarding splitting a system up into multiple packages, I agree that it
should it not be done lightly. I use separate internal packages
generally when code sections may be optional or independently loaded.
Test suites and plug-in architectures are obvious examples.
On 12/29/2015 04:52 PM, Alessio Stalla wrote:
> Hi everyone,
>
> I'd like to run a little poll among experienced Lisp developers. The
> topic is the usage in the wild of the extensions to the package system
> provided by various implementations. My apologies to people who are
> subscribed to the ABCL mailing list, where some time ago I submitted
> the same questions getting back several insightful answers but no
> actual data.
>
> So, here is how it is. I'm working on a novel idea (I hope) regarding
> symbols and packages; I won't go into the details now. It suffices to
> say that there is some overlap with features offered by certain Lisp
> implementations, namely:
>
> * package-local nicknames: the ability to specify, for each package,
> a list of nicknames for other packages which are in effect only in
> that package; available on ABCL and SBCL
> (http://www.sbcl.org/manual/#Package_002dLocal-Nicknames) and possibly
> other implementations I'm not aware of.
> * "Hierarchical" packages: a naming convention for packages
> understood by the reader and a few support functions, which allow to
> have concise nicknames for a group of closely related packages, such
> as com.foo.mylib.api and com.foo.mylib.implementation. Found natively
> in Allegro CL
> (http://franz.com/support/documentation/current/doc/packages.htm) and
> in an open-source library by P. Bourguignon.
>
> My questions:
> 1) First and foremost, is anybody actually using those features? What
> are you using them for?
> 2) If yes, how useful are they for you? What shortcomings do you find
> in them?
--
David Holz
Director, Grindwork Corporation
http://www.grindwork.com/
More information about the pro
mailing list