[Issue 13590] New: [Enh] Add std.algorithm.iterate
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Oct 8 17:04:19 PDT 2014
https://issues.dlang.org/show_bug.cgi?id=13590
Issue ID: 13590
Summary: [Enh] Add std.algorithm.iterate
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: enhancement
Priority: P1
Component: Phobos
Assignee: nobody at puremagic.com
Reporter: bugzilla at digitalmars.com
In using http://dlang.org/phobos/std_stdio.html#.File.byChunk, it turns out to
be rather clumsy to get things character-by-character, one has to write a loop.
This is not how ranges are supposed to work.
It exposes a more general problem - given a Range of a Range of Elements, how
does one iterate over Elements?
The solution is a new algorithm - iterate.
And that's all it does - one could write .byChunk.iterate and voila! one is
getting ubytes by ubyte. iterate takes a template argument of the number of
Elements it should produce for each front():
.byChunk.iterate!4 // get ubyte[4]
iterate should produce results by value, not by ref. This is because byChunk
produces references to ephemeral data.
iterate asserts if the number of elements does not evenly divide into the
.byChunk size (or should it throw?). Obviously, by 1 should not assert or
throw.
Pulling data out 4 bytes at a time is useful, for example, to read data as a
sequence of ints.
iterate should be lazy.
--
More information about the Digitalmars-d-bugs
mailing list