Thread overview
what is full closures
Jan 03, 2008
bobef
Jan 03, 2008
Sean Kelly
Jan 03, 2008
bobef
January 03, 2008
Sounds like something useful but what is full closure and what is the difference from the current (D1 - empty? :) ) closures?
January 03, 2008
bobef wrote:
> Sounds like something useful but what is full closure and what is the difference from the current (D1 - empty? :) ) closures?

A full closure is where all data relevant to a delegate is retained until the delegate is destroyed.  ie.

void delegate() fn( int i )
{
    return delegate void() { writefln( "i is ", i ); };
}

fn( 1 )();

In D 1.0, this code would crash because the stack location for i no longer exists when the delegate is called.  In D 2.0, memory for i is allocated on the heap and this code works.


Sean
January 03, 2008
Oh, this is nice. Thank you for the explanation.