What determines if an algorithm goes in std.algorithm or std.range

Andrei Alexandrescu SeeWebsiteForEmail at erdani.com
Mon Jul 16 19:05:35 UTC 2018


On 7/14/18 5:32 PM, aliak wrote:
> Alo, I'm wondering how phobos devs view or determine what goes in to 
> std.algorithm and what goes in to std.range.
> 
> To me some of them are quite obvious - well, most things can arguably be 
> an algorithm. But for example "refRange" is clearly a range specific 
> thing, but "transpose" is not. And things that create ranges from 
> nothing also may "clearly" belong in the range module? (e.g. iota, 
> generate and recurrence)
> 
> Also curious, are there any github PRs in phobos where certain 
> algorithms were discussed as going in to where and what the reasonings 
> were?
> 
> cheers
> - Ali

There is no hard and fast rule. If it does something one would naturally 
associate with an algorithm (e.g. it would belong in a book on 
algorithms etc), it belongs in std.algorithm even if it processes 
ranges. If something is algorithmically trivial but support ranges, then 
it belongs in std.range.

Without looking: where should "chain" belong? It's a trivial algorithm 
but has a variety of intricacies for supporting different kinds of 
ranges. So it's in std.range.


Andrei


More information about the Digitalmars-d mailing list