We need better documentation for functions with ranges and templates

Basile B. via Digitalmars-d digitalmars-d at puremagic.com
Mon Dec 14 12:27:46 PST 2015


On Monday, 14 December 2015 at 19:04:46 UTC, bachmeier wrote:
> It's unanimous, at least among the three of us posting in this 
> Reddit thread:
>
> https://www.reddit.com/r/programming/comments/3wqt3p/programming_in_d_ebook_is_at_major_retailers_and/cxyqxuz
>
> Something has to be done with the documentation for Phobos 
> functions that involve ranges and templates.

Instead of rewriting all the doc I suggest another approach: 
someone writes a reference article or special phobos page such as

"Understanding D ranges, their constraints and the error 
messages",

that could teach how to interpret and undertstand the error 
messages and the doc. The problem is that new comers really have 
to learn std.range primitives as well as a big part of 
std.traits. The article would cover the most encountered 
functions from this two modules:

- isInputRange
- isForwardRange
- ElementType
- isNarrowString
- ...

Because clearly when you know these functions you understand the 
constraints. That's the key.

~~~~~~~~~~~~~~~~~~~

Another idea would be to put each condition of a constraint on a 
new line (I speak about DDoc formating):

bool isSameLength(Range1, Range2)(Range1 r1, Range2 r2)
if (isInputRange!Range1
     && isInputRange!Range2
     && !isInfinite!Range1
     && !isInfinite!Range2);


~~~~~~~~~~~~~~~~~~~

In the same vein, but a bit better, put the constraint in a 
separate ddoc section, for example "constraint".


More information about the Digitalmars-d mailing list