On Wednesday, 14 December 2016 at 19:39:55 UTC, Andrei
Alexandrescu wrote:
On 12/14/2016 02:04 PM, Meta wrote:
On Wednesday, 14 December 2016 at 17:32:10 UTC, H. S. Teoh
wrote:
What about:
/* Showing full declaration just for context */
bool myFunc(R1, R2)(R1 r1, R2 r2)
import {
std.range : isInputRange,
std.traits : isNum = isNumeric
}
if (isInputRange!R1 && isInputRange!R2 &&
isNum!(ElementType!R1))
in { assert(someCondition!R1); }
out(result) { assert(result == expectedResult(...)); }
body
{
...
}
T
The fact that declarations like this WILL show up in Phobos or
elsewhere
if this proposal is implemented triggers my gag reflex.
There's got to
be a better way than tacking yet another pre-ambulatory clause
to the
function body.
What I see here is a function definition that has:
* parameters and return types
* dependencies on other modules
* the static condition under which arguments are acceptable
* the dynamic condition under which arguments are acceptable
* the guarantee made upon successful completion
* the implementation
... each of which is:
* easily distinguishable
* opt-in
Andrei
Don't forget "looks awful and cluttered as hell".