An alternative way of building and matching lazy lists using LazyList.cons(hd, tl).
A lazy list consisting of a given first element and remaining elements
The first element of the result lazy list
The remaining elements of the result lazy list
Maps a lazy list to its head and tail