A problem with D contracts
Marianne Gagnon
auria.mg at gmail.com
Sat Jul 31 19:04:24 PDT 2010
Agreed, and if static verification is ever implemented (like there isn't already enough to do on D ;) I can very well imagine adding contract blocks with the "pure" keyword (or is it an annotation now?)
> On Saturday 31 July 2010 18:33:09 bearophile wrote:
> > D contract programming lacks the 'old', but there is another different
> > problem.
> >
> > Allowing only asserts (and calls to only pure/readonly functions) in
> > precoditions, postconditions and invariants opens the door for future
> > software that perform automatic compile-time verification of contracts.
> >
> > Putting all kind of D code inside contracts will make them very hard to
> > statically verify.
>
> D strives to be practical and useful rather than perfect - not to mention what's
> best here depends on your goals. IIRC TDPL, specifically mentions that contracts
> allow for I/O for debugging purposes. Requiring contracts to be pure would
> destroy that ability, and there plenty of situations where that would be a big
> problem.
>
> Also, while automatic compile-item verification of contracts might be cool,
> you're talking about a future extension that would likely be used by a small
> percentage of the D user base while I'm willing to be that the ability to put
> print statements and the like in contracts would be used by a far greater
> percentage.
>
> So, while I can see why purity for contracts could be useful, what we have does
> the job, and enforcing purity has serious downsides. Personally, I think that
> what we have works quite well, and it's way better than the situation in any
> other language that I've used.
>
> - Jonathan M Davis
More information about the Digitalmars-d
mailing list