(defn fibo-seq
    "returns a sequence containing the fionacci sequence starting from 1"
    ([] (fibo-seq 1 1)) ;; default, calls into below function
    ([curr next] (lazy-seq
                    (cons curr (fibo-seq next (+ curr next))))))

(defn println-labled [count v]
    (println (str count ":\t" v)))

(defn print-seq-formatted
  "prints the first n of a sequence, formated."
  [sequence limit formatfn] {:pre [(>= limit 1)]}
  (loop [s (take limit (sequence)) count 1]
    (if (not (empty? s))
      (do
        (formatfn count (first s))
        (recur (rest s) (inc count))))))

(defn print-fibo [limit] (print-seq-formatted fibo-seq limit println-labled))