laziness, guarded recursion, strictness