Walter Bright:
> > /*@ assert (\forall int i; 0 <= i && i < n; a[i] != null);
> 
> This does not make it simpler, it just makes things more complicated by now 
> having two ways to do a foreach.

The point here is to restrict a lot the kind of code and instructions you can 
put inside contracts, so eventually you will have a chance to test them 
automatically.

When you have copied Eiffel to design D contracts you probably have seen that 
in Eiffel you can't put arbitrary code inside contracts (the same is true for 
contract systems in C# and Java, here it's D that is designed in the wrong 
way). This is a limit that was there because otherwise it kills the possibility 
of enforcing them statically.

Bye,
bearophile

Reply via email to