Example for Documentation?
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Tue Apr 21 10:30:08 PDT 2015
On 4/21/15 11:25 AM, "Marc =?UTF-8?B?U2Now7x0eiI=?= <schuetzm at gmx.net>"
wrote:
> On Tuesday, 21 April 2015 at 14:25:29 UTC, Steven Schveighoffer wrote:
>> On 4/21/15 10:07 AM, Chris wrote:
>>> Here's bearophile's version of sorting an AA by value [1]
>>>
>>> void main() {
>>> import std.stdio: writeln;
>>> import std.algorithm.sorting: multiSort;
>>> import std.array: array;
>>>
>>> const size_t[string] wCount = [
>>> "hamster": 5,
>>> "zorro": 80,
>>> "troll": 90,
>>> "algorithm": 80,
>>> "beer": 80
>>> ];
>>>
>>> auto pairs = wCount.byKeyValue.array;
>>> assert(wCount.length == pairs.length);
>>> pairs.multiSort!(q{a.value > b.value}, q{a.key < b.key});
>>> assert(pairs[2].key == "beer");
>>> foreach (const ref it; pairs)
>>> writeln(it.key, ": ", it.value);
>>> }
>>>
>>> Should we add it to the documentation of
>>>
>>> 1. http://dlang.org/phobos/std_algorithm_sorting.html#.multiSort
>>> 2. http://dlang.org/hash-map.html
>>
>> We should not be promoting string-based lambdas:
>>
>> pairs.multiSort!((a, b) => a.value > b.value, (a, b) => a.key < b.key);
>>
>
> I find the strings to be more readable, simply because they are shorter.
> I would probably even prefer normal "" quotes.
quoted lambdas are indeed shorter, but the issue with them is that "a<b"
instantiates a different template than "a < b", whereas the lambda does not.
In fact, that is why we added shorthand lambdas to the language. Note
that in this case, it's just wasted code space and not a real issue. but
for example, RedBlackTree!(int, "a < b") is not compatible with
RedBlackTree!(int, "a<b"), even though they are identical.
I'm not saying we shouldn't allow string lambdas, just that we shouldn't
encourage them as "proper" D code.
>> I think this would be a perfect addition for the disqus forum of that
>> function (once ddox gets to be the default). I don't want to get into
>> adding sample usages for every use case on every function to the
>> documentation.
>
> Not for every possible use case, but I'd prefer examples demonstrating
> an actual, practical application to ones that were just made up for the
> sake of documentation.
This use case seems niche to me. I haven't ever had the need to "sort"
an AA, and if I did, I would use a RedBlackTree.
Not discounting it, or saying it's not valid or useful, just that it's
not such a perfect example that it needs to unseat the current example
(sorting points by x and y).
It definitely does not belong in the AA documentation.
-Steve
More information about the Digitalmars-d
mailing list