DIP10005: Dependency-Carrying Declarations is now available for community feedback
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Wed Dec 14 11:39:55 PST 2016
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
More information about the Digitalmars-d
mailing list