assert() vs. enforce(), invariant() vs. ... ?
Brian Rogoff
brogoff at gmail.com
Sat Aug 31 14:57:36 PDT 2013
On Saturday, 31 August 2013 at 21:30:40 UTC, Andrei Alexandrescu
wrote:
>> http://stackoverflow.com/questions/4711309/meaning-of-scope-in-d-for-a-parameter
>
> That use will stay and is useful and uncontested.
>
> Andrei
Sure, but my complaint is that that useful style is cramped by
the inability to have scope on *local variables*. I understand
that scope on function parameters will stay. If you're saying
that scope on local variables for delegates will stay, then
disregard all I've written here, I'm happy! :-).
If you look at the code I posted, try removing scope from the 2-D
integrate and from the local variable declarations in the main()
function, and the program hits the GC, with the scopes, they
don't. The problem occurs when I create the local variables to
name an anonymous function. I tested this with Adam Ruppe's code
which halts when the GC is called.
As I said, I'm not arguing for scope on objects, but for
contrivances which allow me to program easily with downward
funargs and not hit the GC. D goes further than most languages in
this and it would be a shame if this capability is removed with
no substitute.
For those who want to test on their systems, here are the trivial
unitCircle and unitSphere I omitted.
float unitCircle(float x) {
float x2 = x * x;
if (x2 < 1.0) {
return sqrt(1.0 - x2);
} else {
return 0.0;
}
}
float unitSphere(float x, float y) {
float sum = x*x + y*y;
if (sum <= 1.0) {
return sqrt(1.0 - sum);
} else {
return 0.0;
}
}
-- Brian
More information about the Digitalmars-d
mailing list