> 26 okt. 2016 kl. 21:23 skrev Chris Angelico <[email protected]>:
> 
>> On Thu, Oct 27, 2016 at 6:08 AM, Martin Karlgren <[email protected]> wrote:
>> A possible workaround is to cut the reference to the “foo” frame:
>> 
>>  function f = lambda(string var1, string var2)
>>               {
>>                 return lambda(string arg)
>>                        {
>>                          write("%O, %O, %O\n”, var1, var2, arg);
>>                        };
>>               }(var1, var2);
>> 
>> However, this is pretty verbose.
> 
> More significantly, this is *early binding* semantics. It captures the
> current values of var1 and var2, and won't notice any other changes.

Yep – don't know about other people but I don't think I've ever really wanted 
"late binding", so I think that's a good thing.

>> Also, all variables in the frame referenced by the lambda will be kept 
>> around, even if just a single one is actually used in the lambda.
>> 
> 
> This, however, could be changed - it's a simple question of
> optimization, so it comes down to "is it worth it". There's no
> semantic change there, AFAIK.

Correct, but I'm not sure if that theoretically simple optimization is feasible 
in practice.

/Marty

Reply via email to