DIP 1003 Formal Review

MysticZach via Digitalmars-d digitalmars-d at puremagic.com
Sun May 14 18:39:34 PDT 2017


On Monday, 15 May 2017 at 01:18:02 UTC, Jonathan M Davis wrote:
> Why would we want to introduce function as an alternative to 
> body? Personally, I've always found the need to use body to be 
> very odd and annoying. It doesn't need to be there when you 
> don't have in or out contracts, and it just makes contracts 
> that much more verbose. It's not even like you can put in our 
> out contracts after the function body, so body is needed to 
> indicate which block the function body is - the contracts have 
> to go first. So, as far as I can tell, body serves no useful 
> function. It just makes the code longer, and the amount of 
> extra code required around in/out contracts is part of why I 
> almost never use them. In most cases, it just makes more sense 
> to put the assertions in the function body and not have all of 
> that extra plumbing right after the function signature.

Not that a whole new way of doing things is called for... but I 
think a better design would have been to allow 'in' and 'out' 
statements in the function itself, with no need for brackets if 
you only have one line's worth of contract, e.g.,

int fun(int a) {
   in assert(...);
   out(x) assert(...);

   // do stuff
}



More information about the Digitalmars-d mailing list