The identifier "fibl" is holding on to the head of the sequence. On Mon, Feb 23, 2009 at 4:04 PM, bsmith.occs <bsmith.o...@gmail.com> wrote:
> > ;; > --------------------------------------------------------------------- > ;; 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 -~----------~----~----~----~------~----~------~--~---