On Fri, Mar 21, 2008 at 2:14 PM, Waldemar Horwat <[EMAIL PROTECTED]> wrote:
> Mark S. Miller wrote:
>  > The one use-case I can see for names and namespaces that isn't
>  > addressed adequately by existing patterns is expanding the
>  > property-name-space, [...] (The T variant of Scheme is the only example I 
> know
>  > where first-class selectors saw significant use. Though widely
>  > admired, no other Scheme or Lisp variants picked up on this feature.)
>
>  Really?  Lisp is a great example of the benefit of namespaces.  Namespaces 
> are essential to Common Lisp.  In my Netscape days I wrote the semantic 
> engine for the reference implementation of ES4 in Common Lisp.  Lisp 
> namespaces were crucial to maintaining my sanity while structuring that 
> program.


I'd forgotten about the Common Lisp package system. Unlike T and
Smalltalk, Common Lisp doesn't really have objects with selector-based
method dispatch. Instead, they overload a multimethod on the types of
its arguments. The parts of a multimethod are gathered together in a
strange fashion. But, IIUC, once gathered, a multimethod is looked
like any lexical definition -- by looking up a textual identifier in a
package to get a symbol, and then looking that symbol up in the normal
lexical environment to get a location. I consider that to be an
example of my previously explained use case: using an extra level of
indirection prior to lexical environment lookup. This is an example of
the package-like use case about which I wrote:

> I think
> the current JavaScript practice --- of using lexical scoping, objects
> as records, package naming paths as dotted paths through records
> (e.g., Dojo & YUI) --- addresses most of these needs by patterns
> expressed using more basic primitives.


Multimethods do blur the line between lexical name lookup and
selector-based method dispatch. This line is blurry enough that Common
Lisp may indeed be an example or a counter-example, depending on how
one regards their package system and their object system. Whereas
Scheme was easily subset into the object capability language W7
<http://mumble.net/~jar/pubs/secureos/>, attempts to secure Common
Lisp went nowhere. My sense has been
<http://www.eros-os.org/pipermail/e-lang/2005-April/010572.html> that
Common Lisp's package system and its multimethod-based object system
were the main impediments.

-- 
 Cheers,
 --MarkM
_______________________________________________
Es4-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es4-discuss

Reply via email to