I just got it! (invariant/const)

Lionello Lunesu lionello at lunesu.remove.com
Wed Apr 9 19:30:49 PDT 2008

"Jason House" <jason.james.house at gmail.com> wrote in message 
news:ftislk$3m0$1 at digitalmars.com...
> Janice Caron Wrote:
>> On 09/04/2008, Georg Wrede <georg at nospam.org> wrote:
>> >  This is even stronger than (1) above, it is clearer,
>> >  and it's *right*.
>> Sure, but you don't need to outlaw code that does nothing. :-)
> D already outlaws having code that isn't run.  I would prefer for code 
> that does nothing to be considered an error.  Of course, with most 
> functions being impure, that's tough to enforce.  With pure functions, it 
> should be easy.

Why? If pure-ness (uh, purity?) can be checked, it can also be deducted (*), 
so the compiler could optimize/complain in either case.

Tagging a function explicitely as "pure" would only enable a constraint as 
to what other functions can be called, which is something I'd rather see 
solved using more generalized tagging abilities (See Scott Meyers' 
presentation on red-code, green-code [1]).

Maybe identifiers between the parameter list and the function body could 
work as ad-hoc constraints. This would work for pure and nothrow, and the 
user can add whatever identifier/constraint s/he wants.


(*) Is this conclusion correct? It feels correct, but I don't think I can 
proof it.

[1] http://www.nwcpp.org/Downloads/2007/redcode_-_updated.pdf 

More information about the Digitalmars-d mailing list