Add an implementation of lazy evaluation
Add lazy evaluation documentation