DSL for handle binding
John Rose
john.r.rose at oracle.com
Mon Mar 21 15:05:21 PDT 2011
The standard MH factory methods construct method handles functionally, from the target backward. This simplifies "pure functional" implementations, but (as you found) is kind of hard to read. Constructing them from the caller forward is often easier to read, since it is a narrative of what happens when the composite MH gets called.
That's a long way of saying, yes, this is very interesting. Bravo!
-- John
On Mar 20, 2011, at 11:21 PM, Charles Oliver Nutter wrote:
> I'm working on a DSL for binding method handles *forward* rather than
> backward. It's not much logic, really, but for me it's much easier to
> reason about incoming arguments being transformed toward an eventual
> target, rather than a target being transformed backward toward
> incoming arguments. The API lets you bind like this:
>
> MethodHandle mh = Binder
> .from(String.class, String.class, String.class) // (String, String)String
> .drop(1, String.class) // (String)String
> .insert(0, 'hello') // (String, String)String
> .cast(String.class, CharSequence.class, Object.class) //
> (CharSequence, Object)String
> .invoke(someTargetHandle);
>
> Is this interesting to others on the list? I will push my work to
> github sooner rather than later if so. I plan to use this in JRuby to
> make the MH binding code easier to read.
>
> - Charlie
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
More information about the mlvm-dev
mailing list