On Apr 17, 2008, at 4:53 AM, Daniel Yokomizo wrote:

> It's better to reuse whatever syntax these proposals use.

One nice thing about working on the JVM is that I get to take a  
vacation from syntax arguments.  Though I might carry my pager on  
vacation.  :-)

Another detail I left out of the nutshell, but which is present in  
the forthcoming full API, are operations for unreflecting fields as  
well as methods:

class MethodHandles { ...

     public static MethodHandle
     unreflectFieldGetter(java.lang.reflect.Field f);

     public static MethodHandle
     unreflectFieldSetter(java.lang.reflect.Field f);

... }

Something language designers usually miss at this point is that a  
handle to a variable (like a field above) is most naturally  
represented as a two-sided extension to a normal function type,  
nameless as a regular function, but with an additional setter  
aspect.  It may be called an accessor; it is a subtype of function,  
and is parameterized exactly the same as function:

   class Foo { int val } foo;
   accessor {=> int} acc1 = (&foo.val or foo#val or something);
   int i = acc1();
   acc1() = i+1;
   Map<K,V> map;
   accessor {K=>V} acc2 = (&<K>map.get or map#get(K) or something,  
with put annotated in somehow)
   V x = acc2(k);
   acc2(k2) = v2;

The design of accessor types is (AFAIK) insufficiently appreciated.   
It  was at the heart of "esh" Scheme[1] and allowed clean access- 
oriented programming patterns, and better integration with slot- 
oriented languages (CLOS-lite, C++ lvalues).

-- John

[1] http://homepage.mac.com/rose00/work/esh.html

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "JVM 
Languages" group.
To post to this group, send email to jvm-languages@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/jvm-languages?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to