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

Reply via email to