Hi

Thanks for the writeup.  Apologies for the CDR-DISCUSS mishaps.

I am one of the major polluters of the packages' namespace as I happily
abuse :nicknames.

I perused the specification, I like it and I agree with the comments, but I
think there is an extra useful bit that is missing.  I would like to be
able to write

*(in-package "A-VERY-LONG-AND-HAIRY-PACKAGE-NICKNAME" ; This may even be a
'global nickname'!*

*            :as "HAIRY-PKG"                          ; The 'local
nickname'.            )*

It seems quite natural to me.  Did I miss something?

All the best

Marco

On Tue, Jul 9, 2024 at 8:19 AM Bart Botta <000...@gmail.com> wrote:

> On Mon, Jul 8, 2024 at 9:05 PM Scott L. Burson <sc...@sympoiesis.com>
> wrote:
>
> > 2.2: The strongest point I want to make here is that a correctable error
> should be signalled whenever a package becomes fully shadowed by another
> package (all of its global names are shadowed), with a restart that
> requests a new local nickname for the shadowed package in the shadowing
> package(s).  We want to alert the user to the situation, and strongly
> encourage them to add a new nickname (global or local) in the relevant
> source file so as to make the fully shadowed package accessible again.
> Meanwhile, we supply the restart to make it easy to remove the shadowing in
> the current session.
>
> I think signalling an error at the point where a package becomes
> completely shadowed is a bad idea . It destroys the locality of the
> local nicknames and brings us back to the problem where you can't load
> two systems at the same time because they happened to both want to use
> the same convenient name. Arguably one of them has a bad name, and
> should have other names, but lots of CL code is old and un- or
> under-maintained, and we shouldn't be annoying users about them just
> for a very rare edge case.
>
> >  In my view, the purpose of local nicknames is to shorten frequently
> typed package prefixes.  Using them for anything else seems potentially
> unsafe.
>
> Another intended use case was people who want to substitute one
> package for another without having to change the code (either picking
> from multiple implementations depending on requirements, or replacing
> an old lib with a compatibility layer, etc). I've seen people describe
> doing that with :USE, and package local nicknames should support it as
> well, and more safely in cases where any of those packages might
> change over time.
>


-- 
Marco Antoniotti, Professor                   tel. +39 - 02 64 48 79 01
DISCo, University of Milan-Bicocca U14 2043   http://dcb.disco.unimib.it
Viale Sarca 336
I-20126 Milan (MI) ITALY

Reply via email to