/*
The implementation of delegates has solved an analogous problem.
e.g.
*/
import std.stdio;
auto getfun( int x) {
int y = x*x;
int ysquared() {
return y*y;
}
return &ysquared;
}
void main() {
auto f1 = getfun(2);
auto f2 = getfun(3);
writeln( f1() );
writeln( f2() );
}
/*
The variable y no longer exists local to getfun, but its
existence is prolonged making its use safe.
Just like _immutable_, some clever compiler inference that is
transitive plus a delegate-like solution may do the job with ref
without imposing constraints upon the sane. Plus, it may lead to
new terrain when the liberation of local variables as above
occurs in this context.
Warning: this is all speculation.
*/