<div dir="ltr"><div><div><div>Hi,<br><br></div>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!<br><br></div>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.<br>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.<br>In addition to hierarchy and nicknames, this has the nice properties of:<br>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?)<br></div>2) making packages naturally printable and readable with no special syntax (since they are really symbols)<br><div>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).<br></div><div>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.<br><br></div><div>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. <br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 27, 2015 at 7:23 PM, Nikodemus Siivola <span dir="ltr"><<a href="mailto:nikodemus@random-state.net" target="_blank">nikodemus@random-state.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I'm all for picking the CDR again -- but I probably don't have the cycles to hack on the SBCL implementation very much.<br><div><br></div><div>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.<div><br>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.</div></div><div><br></div><div>Nice to see people thinking about this stuff. :)</div><div><br></div><div>Cheers,</div><div><br></div><div> -- nikodemus</div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 27, 2015 at 5:39 PM, Rudi Schlatte <span dir="ltr"><<a href="mailto:rudi@constantly.at" target="_blank">rudi@constantly.at</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Nov 27, 2015, at 15:46, Marco Antoniotti <<a href="mailto:marcoxa@cs.nyu.edu" target="_blank">marcoxa@cs.nyu.edu</a>> wrote:<br>
><br>
>><br>
>> On Nov 27, 2015, at 15:42 , Pascal J. Bourguignon <<a href="mailto:pjb@informatimago.com" target="_blank">pjb@informatimago.com</a>> wrote:<br>
>><br>
>> Alessio Stalla <<a href="mailto:alessiostalla@gmail.com" target="_blank">alessiostalla@gmail.com</a>><br>
>> writes:<br>
>><br>
>>> Hello list,<br>
>>><br>
>>> long time no see :)<br>
>>><br>
>>> I'm once again experimenting on ABCL with a sort of a pet peeve of<br>
>>> mine: hierarchical symbols (aka symbols as packages aka symbol/<br>
>>> package conflation). If I get good results I'll submit an article to<br>
>>> the next ELS. Btw, is anyone going?<br>
>>><br>
>>> I've seen that, since the time when I was actively contributing to<br>
>>> it, ABCL has gained package-local nicknames (or, they were already<br>
>>> there and I never noticed or I forgot about them). Since my<br>
>>> experiment is, I suppose, a superset of what said nicknames have to<br>
>>> offer, I'm curious: is anybody using them? How? Are they a novel idea<br>
>>> of ABCL's, or were they inspired by other implementations? Do they<br>
>>> implement some specification (e.g., a CDR)?<br>
>><br>
>> I implemented recently allegro's hierarchical package in conforming CL<br>
>> cf. <a href="https://gitlab.com/com-informatimago/com-informatimago/blob/master/common-lisp/lisp/relative-package.lisp" rel="noreferrer" target="_blank">https://gitlab.com/com-informatimago/com-informatimago/blob/master/common-lisp/lisp/relative-package.lisp</a><br>
>><br>
>> and this week, phoe_krk implemented his own version of package local<br>
>> pseudonyms (like package nicknames, but separate):<br>
>> <a href="https://github.com/phoe-krk/pseudonyms" rel="noreferrer" target="_blank">https://github.com/phoe-krk/pseudonyms</a><br>
>><br>
>> Perhaps it'd really be time to write a CDR and implement something good<br>
>> and common on all implementations?<br>
><br>
> I am game. How do you guys want to proceed?<br>
<br>
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.<br>
<br>
(Hi from another lisper-in-exile :) )<br>
<span><font color="#888888"><br>
Rudi<br>
<br>
</font></span><br><br>
<br><br>
<br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div></div>