Using chunks with Generator

Tetiana via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Mar 14 03:00:24 PDT 2017


I'd like to evaluate values lazily and then process them one by 
one, using e.g. `map`. One of the steps requires processing the 
values in chunks. I was thinking of using a Generator for lazy 
evaluation, but I can't seem to make it work with the `chunks`.

How can I make `std.range.chunks` work with a generator?


import std.stdio;
import std.concurrency: Generator, yield;
import std.range:chunks;
import std.algorithm:map;


void main()
{

     auto gen = new Generator!int(
     {
         foreach (i; 1 .. 10)
             yield(i);
     });


     foreach (n; chunks(gen, 2))
     {
         writeln(n);
     }
}

Build fails with the following error:

source/app.d(18,23): Error: template std.range.chunks cannot 
deduce function from argument types !()(Generator!int, int), 
candidates are:
/usr/include/dmd/phobos/std/range/package.d(6940,15):        
std.range.chunks(Source)(Source source, size_t chunkSize) if 
(isForwardRange!Source)
dmd failed with exit code 1.



More information about the Digitalmars-d-learn mailing list