Jonathan M Davis:

> So, while I can see why purity for contracts could be useful, what we have 
> does 
> the job, and enforcing purity has serious downsides.

You have missed half (well, two thirds) of what I was trying to say. It's not 
just about enforcing purity (or just @readonly of names in outer scopes), but 
it's also a problem of automatic analysis of notation (code). If you have 
generic D code it's harder to perform inferences on it. That's the purpose of 
those forall, etc, I have tried to talk about (and maybe you have also missed 
the part about the relation between code size and bug-prone nature of 
contracts).

Automatic verification of contracts is an important feature, that can be made 
much harder (or impossible) to implement if contract contents aren't clean and 
simple. Putting print statements inside contracts is just wrong. As in future 
probably a second documentation system will be added/used to/in D, a second 
unit-testing system too, probably eventually a second contract system too will 
be added/used, because the built-in ones are not designed in a serious way, all 
three of them are just toys :-) "keeping their usage simple" doesn't hold when 
they lack essential features (I have discussed about missing parts in unittest 
system recently).

Bye,
bearophile

Reply via email to