generator

Transforms delegate into lazy range. Generation is stopped, when genfunc returns Maybe!T.nothing.

generator
(
T
)
(
Maybe!T delegate
()
genfunc
)

Examples

Example

assert( (() => Maybe!int(1)).generator.take(10).equal(1.repeat.take(10)) );
assert( (() => Maybe!int.nothing).generator.empty);
assert( (() 
        {
            static size_t i = 0;
            return i++ < 10 ? Maybe!int(1) : Maybe!int.nothing;
        }
        ).generator.equal(1.repeat.take(10)));

class A {}
auto a = new A();

assert( (() => Maybe!A(a)).generator.take(10).equal(a.repeat.take(10)) );
assert( (() => Maybe!A.nothing).generator.empty);
assert( (() 
        {
            static size_t i = 0;
            return i++ < 10 ? Maybe!A(a) : Maybe!A.nothing;
        }
        ).generator.equal(a.repeat.take(10)));

Meta