> > > One option is (. target :slot), possibly with the not-so-great (.:slot
> > > target) as well.
>
> > Why not simply (target :slot) and (:slot target) as one means of
>
> (:slot target) would do what, when facing an object which implements the
> Associative interface ?

Here's what I was trying to say. Assume that target is a javascript
object.

For the colon syntax:
If member is a field, then
(:member target) would return the value of the field.
If member is a method, then
(:member target) would return a function object (that is, the value of
the member field, which is a function), and
((:member target)) would execute the function.

This is sensible because javascript-style objects are associative
arrays.

For the dot syntax:
If member is a method, then
(.member target) would execute the function.
If member is a field, then
(.member target) would return the value of the field.
This is entirely consistent with clojure's existing syntax.

My feeling is this is the smallest possible perturbation to clojure's
behavior. The dot notation semantics don't change at all, and the
colon syntax is also essentially the same, with the handy addition
that because javascript contains first-class functions, you can treat
javascript objects as Associatives, whereas in general you can't treat
Java objects as associatives.

Arthur

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to