> > > 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