I think Alyssa has the right solution
Lazy evaluation + side effects is confusing