On 11/01/2013 02:36 PM, Kenji Hara wrote:
I think this is a good discovery. Currently a pure function can have...
lazy parameters and it is treated as a weakly pure function.
pure int foo(lazy int x) { return x; } // OK
We can think the lazy parameter is a limited case of scope delegate
parameter.
They are. I think it would be quite strange to treat them differently.
Yes. Furthermore, the first delegate should have inferred type 'void delegate(int x)pure nothrow @safe' and the second delegate should have inferred type 'void delegate(int x)pure immutable nothrow @safe'.And more, I discovered that the purity may be stronger depends on the
given delegate purity.
void func(scope void delegate(int) dg) pure;
void main() {
int num;
// the function call has weak purity
func((x){ num = x;});
// the function call has strong purity
func((x){ ; });
}
Kenji Hara