[Issue 4264] Various std.algorithm.map problems

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Jul 16 13:19:23 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4264



--- Comment #3 from bearophile_hugs at eml.cc 2010-07-16 13:19:18 PDT ---
> The problem with the last example seems to be that the
> template arguments to 'to' are in the wrong order.

But this too doesn't work:

import std.algorithm, std.conv, std.range;
void main() {
    auto r1 = map!(to!(string, uint))(iota(20));
}


import std.algorithm, std.conv, std.range;
void main() {
    auto r1 = map!(to!(string, int))(iota(20));
}

------------------

> Also, how can the opApply example work with lazy iteration?
> As far as I know opApply does not provide any way to pause and resume
> iteration.

If you perform a map! on an iterable that has a length, then map! detects it at
compile-time and offers a length attribute, otherwise it's not offered.

So map! and other similar higher order functions can adapt and offer as much as
possible.

If the iterable given to map! has just an opApply, then map! can offer just an
opApply, for an iteration that can't be resumed.

------------------

> It would be possible on the other hand to allow array to work on
> anything that supplies opApply.

array() can work with anything that can be iterated by foreach.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list