(defn fib
  []
  (lazy-seq
   (cons 0 
         (cons 1
               (when-let [f (fib)]
                (map + f (rest f)))))))

