test(util/lazy_list): add simple lazy_list example
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
2589d60bfd
commit
9e50d5a1b8
1 changed files with 22 additions and 0 deletions
|
@ -168,11 +168,33 @@ static void tst4() {
|
||||||
list<int>({ 1, 2, 2, 4, 2, 4, 4, 8, 2, 4, 4, 8, 4, 8, 8, 16 }));
|
list<int>({ 1, 2, 2, 4, 2, 4, 4, 8, 2, 4, 4, 8, 4, 8, 8, 16 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class gen {
|
||||||
|
unsigned m_next;
|
||||||
|
public:
|
||||||
|
gen():m_next(0) {}
|
||||||
|
unsigned next() { unsigned r = m_next; m_next++; return r; }
|
||||||
|
};
|
||||||
|
|
||||||
|
lazy_list<unsigned> mk_gen(std::shared_ptr<gen> const & g) {
|
||||||
|
return mk_lazy_list<unsigned>([=]() { return some(mk_pair(g->next(), mk_gen(g))); });
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy_list<unsigned> mk_gen() {
|
||||||
|
return mk_gen(std::make_shared<gen>());
|
||||||
|
}
|
||||||
|
|
||||||
|
void tst5() {
|
||||||
|
auto l = mk_gen();
|
||||||
|
display(take(10, l));
|
||||||
|
display(take(10, l));
|
||||||
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
save_stack_info();
|
save_stack_info();
|
||||||
tst1();
|
tst1();
|
||||||
tst2();
|
tst2();
|
||||||
tst3();
|
tst3();
|
||||||
tst4();
|
tst4();
|
||||||
|
tst5();
|
||||||
return has_violations() ? 1 : 0;
|
return has_violations() ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue