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
-~----------~----~----~----~------~----~------~--~---

Reply via email to