On Tuesday, 8 September 2015 at 10:08:03 UTC, cym13 wrote:
Filter is a template and returns a FilterResult range which is used to lazily compute the result. This behaviour is the same for map and the majority of functions in std.algorithm.

Ah...now it makes sense why use a proxy to the results.

It is an input range really (ie: it has front, popFront and empty). You can chain it just like any other range with other functions and normally don't have to know the exact type (which would be complicated since it is a templated thing).

I agree. Some types are better left unspecified; like some 300+ characters long type signatures one would get from a generic Scala function :-D

However, I have made this a strict practice of mine to specify the full signature of my public API. I suppose, if I want to be pedantic, I have to realise the lazy value first and pass the resulting array out. Is this correct?

To store it in a variable if you don't know the exact type you can use auto to use type deduction.

True.

Example:

Great.  The usage is crystal clear to me now.

If you want more precise documentation the best is to look to the source code (/usr/include/dlang/dmd/std/algorithm/iteration if you are on linux).

Thanks for the help and pointers.

Reply via email to