DIP10005: Dependency-Carrying Declarations is now available for community feedback
Meta via Digitalmars-d
digitalmars-d at puremagic.com
Wed Dec 14 19:12:42 PST 2016
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".
More information about the Digitalmars-d
mailing list