Reproducing lazy evaluation in Scheme