;;
---------------------------------------------------------------------
;; using clojure.jar from source r1301
;;
;; I'm new to clojure and working  from B7.0 of Programming Clojure.
;; This version still uses lazy-cons.  Nevertheless I'm trying to grok
lazy-seq
;; as described here: http://clojure.org/lazy
;;
;; It seems I've not understood it because I'm getting
OutOfMemoryError
;; below and this surprises me


;; bog-standard iterative fib.
;; This works as expected

(defn fibi [n]
  (loop [a 0, b 1, i n]
    (if (<= i 0) a
        (recur b (+ a b) (dec i)))))

;; (count (str (fibi 100000)))
;; --> 20899


;; my attempt to define a lazy fib sequence.
;; working? not so much.

(def fibl
     ((fn h [a b] (lazy-seq (cons a (h b (+ a b))))) 0 1))

;; (count (str (last (take 100000 fibl))))
;; --> java.lang.OutOfMemoryError: Java heap space


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to