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
}