DIP 1009--Improve Contract Usability--Preliminary Review Round 1
Moritz Maxeiner via Digitalmars-d
digitalmars-d at puremagic.com
Sun Jun 25 09:50:38 PDT 2017
On Sunday, 25 June 2017 at 15:46:12 UTC, Petar Kirov [ZombineDev]
wrote:
>
> out result => result > 0 // not much worse
>
> out __result > 0 // even better (__result works at least since
> [0])
>
> I suggested adding a shorter / better looking contextual
> keyword -
> `result` - a while ago [1]:
> ---
> out result > 0 // perhaps the best
> ---
I have no stance with having to specify a result identifier, or
using __result, making `result` special, *but*: Not requiring
parentheses here introduces an unacceptable language
inconsistency:
auto x(T)(T t)
if (...)
in (...)
out ...
{
...
}
If you also propose to drop the parentheses for `in`, that still
leaves the inconsistency with `if`, i.e. now `if` must be changed
to also drop the parentheses in template constraints. That,
however, leads then to an inconsistency between different uses of
`if` and thus all other occurrences of `if` in the grammar must
now be made to work without parenthesis. This then leads to even
more inconsistencies with `for`, `while`, etc. that now also will
have to be changed.
>
> I'm wondering if `out result > 0` (or if not `out __result > 0`)
> would be too much of a stretch for the language grammar.
>
As argued above, it would essentially require making all uses of
parenthesis for conditions optional or introduce atrocious
inconsistencies.
If this is to be done, I believe it belongs in a separate DIP
"Optional parenthesis for conditions", while this DIP uses
parentheses.
More information about the Digitalmars-d
mailing list