On Sunday, 2 February 2014 at 18:37:34 UTC, Mario Schmidt wrote:
I'm new to D. Currently I'm programming in C# and I am looking
for a secondary, or even new main language that D might become.
One of the features that I found most promising in D is DbC.
However, I was very disappointed when I realized that the
current implementation is not much more than an assert that is
evaluated during runtime.
What i mean is.. look at this code:
void goCrazy(Person p)
in { assert(p); }
body {
// whatever
}
void main()
{
Person goku = null;
goCrazy(goku);
}
The compiler may be able to identify simple cases, but reality is
going to be a hit and miss. I think the goal here would be for
goCrazy to take a NotNull!Person (but that implementation isn't
finish).
On another note, in/out contracts don't appear to get much use in
the community. I use them once in awhile, but don't feel I get
much out of them.