Then all of them must be schizophrenic: forcing delay X while forcing delay X gives a stack overflow except if the delay happens to be the rest-part of a lazy seq, and then gives nil instead making the sequence seem to terminate early.
That's very odd. How does it "know" whether the delay it's forcing happens to be part of a lazy seq or is instead a freestanding delay? And why should it care? Or ... could the forcing of a lazy seq element be swallowing exceptions and converting them to nil? Yet: => (take 3 (cons 1 (lazy-seq (/ 3 0)))) ArithmeticException Divide by zero clojure.lang.Numbers.divide (Numbers.java:156) Exceptions thrown calculating the value aren't swallowed, at least not in 1.5.1. If something is eating exceptions it's eating only StackOverflowError, or preserving and rethrowing exceptions generated by the body of the lazy-seq construct and only swallowing the ones produced by the surrounding machinery inside of the delay... Curiouser and curiouser. -- 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 Note that posts from new members are moderated - please be patient with your first post. 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.