transparent lambda
Neal Gafter
neal at gafter.com
Wed Dec 30 13:57:47 PST 2009
On Wed, Dec 30, 2009 at 1:45 PM, Peter Levart <peter.levart at gmail.com> wrote:
> Isn't it true that method 'four' only calls lambda 'two' once? Lambda
> 'two' returns from method 'four' (since lambda is transparent) before
> the second call.
Right (I stand corrected): four() returns 2 on its first invocation,
and throws an exception on subsequent invocations.
> My question was about how can a program differentiate multiple
> invocations of a method from the same call site? Does it maintain a
> counter?
The javac compiler can use any technique suitable for implementing
these semantics. A counter would work if there were some way to avoid
having to worry about the value wrapping. When a closure captures
some context from the enclosing scope, that context can be packaged up
into a frame object. The identity of that frame object can be used to
distinguish one invocation from another.
-Neal
More information about the closures-dev
mailing list