-- fib.hs — infinite Fibonacci stream.
--
-- The classic two-line definition: `fibs` is a self-referential
-- lazy list built by zipping itself with its own tail, summing the
-- pair at each step. Without lazy `:` (cons cell with thunked head
-- and tail) this would diverge before producing any output; with
-- it, `take 15 fibs` evaluates exactly as much of the spine as
-- demanded.

zipPlus (x:xs) (y:ys) = x + y : zipPlus xs ys
zipPlus _ _ = []

myFibs = 0 : 1 : zipPlus myFibs (tail myFibs)

result = take 15 myFibs
