From: Ron Garret
Subject: [ANNOUNCE] Lexicons, Take 2
Date: 
Message-ID: <rNOSPAMon-67A5E9.19155301032008@news.gha.chartermi.net>
A new version of Lexicons is now available at:

http://www.flownet.com/ron/lisp/Lexicons2.lisp

This version is a radical redesign from the previous version.  It makes 
extensive use of the built-in functionality of CL symbols.  In fact, 
this version of Lexicons can be viewed as a thin layer on top of 
packages, where the token-to-symbol mapping is done at macroexpand time 
instead of read time.  The API is very nearly the same as the previous 
version.  Where it differs it adheres more closely to the semantics of 
Common Lisp.  So, for example, LDEFUN and LDEFCLASS no longer set the 
value binding of the symbol being defined to the corresponding function 
or class.

There are three major differences between this version and the original:

1.  Arbitrary namespaces and Lisp-1 lexicons are no longer supported.

2.  The syntax for semi-hygienic macros has changed.  Instead of `(,foo 
...) you now write `(^foo ...) to reference the top-level binding of FOO.

3.  Because there is now a package corresponding to each lexicon, 
package reader syntax can be used to access lexicon bindings.

If you look at the code you will also see that this version is radically 
simplified from the previous version.  It is also pure Common Lisp with 
no external dependencies.

This code is still experimental, but all the features have been tested 
at least once.  (Demo code is at the end of the file.)

Bug reports, comments and feedback appreciated.

From: Don Geddis
Subject: Re: [ANNOUNCE] Lexicons, Take 2
Date: 
Message-ID: <87d4qc1ypw.fsf@geddis.org>
Ron Garret <·········@flownet.com> wrote on Sat, 01 Mar 2008:
> There are three major differences between this version and the original:
> 1.  Arbitrary namespaces and Lisp-1 lexicons are no longer supported.
> Bug reports, comments and feedback appreciated.

Wasn't allowing a Lisp-1 lexicon one of your primary goals?

Is that a "to do" for later, or does the new implementation preclude
allowing Lisp-1 code?

Another suggestion: in your posted announcements, I'd still recommend that
you include at least one sentence -- or paragraph -- defining what you are
talking about: "Lexicons provide the functionality of [...]".  I got this
part:
        the token-to-symbol mapping is done at macroexpand time instead of
        read time
but that's not really a statement of a problem.  You ought to have something
like "Lexicons are a solution [..of this character...] to the problem [...] 
that a Common Lisp programmer might have."

(In other words: if this posting is the first I've ever heard of your
lexicons, can I determine whether I'd be interested in learning more?
You haven't provided enough information to help readers decide whether
to look deeper.)

        -- Don
_______________________________________________________________________________
Don Geddis                  http://don.geddis.org/               ···@geddis.org
If you ate pasta and antipasta, would you still be hungry?
From: Ron Garret
Subject: Re: [ANNOUNCE] Lexicons, Take 2
Date: 
Message-ID: <rNOSPAMon-6DD98C.16431402032008@news.gha.chartermi.net>
In article <··············@geddis.org>, Don Geddis <···@geddis.org> 
wrote:

> Ron Garret <·········@flownet.com> wrote on Sat, 01 Mar 2008:
> > There are three major differences between this version and the original:
> > 1.  Arbitrary namespaces and Lisp-1 lexicons are no longer supported.
> > Bug reports, comments and feedback appreciated.
> 
> Wasn't allowing a Lisp-1 lexicon one of your primary goals?

Yes.  But making lexicons a less radical departure from CL semantics 
also has its advantages, so it might turn out to be a worthwhile 
tradeoff.  (Cue Mick Jagger:  "I saw her today at the re-cep-shawn..." 
:-)

> Is that a "to do" for later, or does the new implementation preclude
> allowing Lisp-1 code?

I'm not sure.  I have not figured out an easy way to implement Lisp-1 
lexicons using the new design, but I also haven't given it a whole lot 
of thought so just because I haven't thought of a way doesn't mean it's 
not possible.

Also, there may be a happy medium where e.g. the LDEF* forms just assign 
the value binding to whatever is being defined, or something like that.  
That's not really Lisp-1, but it might be good enough.  (In fact, it 
might be even better, because it would possibly give you the best of 
both worlds: the name-collision protection of Lisp-2 and the ability to 
refer to functions without having to type #' all the time.  How often do 
people really use the same name to refer to two different things at the 
top level?)

> Another suggestion: in your posted announcements, I'd still recommend that
> you include at least one sentence -- or paragraph -- defining what you are
> talking about: "Lexicons provide the functionality of [...]".  I got this
> part:
>         the token-to-symbol mapping is done at macroexpand time instead of
>         read time
> but that's not really a statement of a problem.  You ought to have something
> like "Lexicons are a solution [..of this character...] to the problem [...] 
> that a Common Lisp programmer might have."
> 
> (In other words: if this posting is the first I've ever heard of your
> lexicons, can I determine whether I'd be interested in learning more?
> You haven't provided enough information to help readers decide whether
> to look deeper.)

The main reason I didn't do that this time is that this code is not 
quite ready for prime time.  So my target audience with this 
announcement was people who were already interested and wanted to see 
the latest bleeding-edge stuff.  But your point is well taken.

rg