Package-local nicknames
Alessio Stalla
alessiostalla at gmail.com
Wed Dec 9 20:53:43 UTC 2015
Hi,
on one hand I'm happy to have stirred this discussion, on the other hand I
don't want to abuse the ABCL mailing list, so if anyone is annoyed by this,
please speak up!
I'm glad to see so much interest in the topic. I don't think time is ripe
for a CDR, though. There are already two overlapping/competing features:
hierarchical packages (in ACL and Pascal's implementation) and
package-local nicknames (in SBCL, ABCL and...?) or pseudonyms, which are
not hierarchical.
I'm exploring yet another route, that is, to conflate packages and symbols
so that a symbol can serve as a namespace for other symbols; that naturally
creates nice hierarchical structures, and the addition of a symbol alias
operator in this context (which is necessary anyway to support global
package nicknames) produces the availability of a limited sort of
package-local nicknames. That route appears to be possible, at least in
ABCL; a further research topic is to try in other Lisp implementations.
In addition to hierarchy and nicknames, this has the nice properties of:
1) making symbol/packages first class (packages are not in CL today, and I
think they're the only data type with that property, am I mistaken?)
2) making packages naturally printable and readable with no special syntax
(since they are really symbols)
3) reducing the number of types/concepts (although this is very debatable
as packages won't disappear, since they're needed for backwards
compatibility and compliance with the ANSI standard; their properties are
simply transferred to symbols, making packages just a thin facade).
Recently, while I was in the middle of writing this, I discovered
symbol-as-packages has drawbacks too - it doesn't play completely nice with
existing Common Lisp as I hoped. But hey, exploration is good! :) That's
why I've waited before sending this. Anyway, I think package-local
nicknames or anything that builds upon packages and complicates them will
most probably make the drawbacks of my approach bigger, and that's
something I must take into account.
So, to make a long story short, I don't think the matter is settled yet.
There's still space for exploration. From your answers, or rather from the
absence of other answers, it seems like nobody is using these advanced
package features at least on ABCL, which admittedly has a small user base.
I'll try asking on the SBCL and ACL mailing lists.
On Fri, Nov 27, 2015 at 7:23 PM, Nikodemus Siivola <
nikodemus at random-state.net> wrote:
> I'm all for picking the CDR again -- but I probably don't have the cycles
> to hack on the SBCL implementation very much.
>
> The conceptual origin of SBCL/ABCL -style package local nicknames is Lisp
> Machine. I mostly tried to bring the ideas there in line with modern
> sensibilities and address things like read/write consistency.
>
> If you want to look at all the things it would be cool to support
> (conceptually), the Scheme module system pretty much does it all -- but
> obviously details and implementations would be quite different for CL.
>
> Nice to see people thinking about this stuff. :)
>
> Cheers,
>
> -- nikodemus
>
>
> On Fri, Nov 27, 2015 at 5:39 PM, Rudi Schlatte <rudi at constantly.at> wrote:
>
>>
>> > On Nov 27, 2015, at 15:46, Marco Antoniotti <marcoxa at cs.nyu.edu> wrote:
>> >
>> >>
>> >> On Nov 27, 2015, at 15:42 , Pascal J. Bourguignon <
>> pjb at informatimago.com> wrote:
>> >>
>> >> Alessio Stalla <alessiostalla at gmail.com>
>> >> writes:
>> >>
>> >>> Hello list,
>> >>>
>> >>> long time no see :)
>> >>>
>> >>> I'm once again experimenting on ABCL with a sort of a pet peeve of
>> >>> mine: hierarchical symbols (aka symbols as packages aka symbol/
>> >>> package conflation). If I get good results I'll submit an article to
>> >>> the next ELS. Btw, is anyone going?
>> >>>
>> >>> I've seen that, since the time when I was actively contributing to
>> >>> it, ABCL has gained package-local nicknames (or, they were already
>> >>> there and I never noticed or I forgot about them). Since my
>> >>> experiment is, I suppose, a superset of what said nicknames have to
>> >>> offer, I'm curious: is anybody using them? How? Are they a novel idea
>> >>> of ABCL's, or were they inspired by other implementations? Do they
>> >>> implement some specification (e.g., a CDR)?
>> >>
>> >> I implemented recently allegro's hierarchical package in conforming CL
>> >> cf.
>> https://gitlab.com/com-informatimago/com-informatimago/blob/master/common-lisp/lisp/relative-package.lisp
>> >>
>> >> and this week, phoe_krk implemented his own version of package local
>> >> pseudonyms (like package nicknames, but separate):
>> >> https://github.com/phoe-krk/pseudonyms
>> >>
>> >> Perhaps it'd really be time to write a CDR and implement something good
>> >> and common on all implementations?
>> >
>> > I am game. How do you guys want to proceed?
>>
>> Ages ago, Nikodemus and me started writing a cdr, but somehow got stuck
>> along the way. I attach what we came up with, this could be a good
>> starting point.
>>
>> (Hi from another lisper-in-exile :) )
>>
>> Rudi
>>
>>
>>
>>
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20151209/54569547/attachment.html>
More information about the armedbear-devel
mailing list