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.

Reply via email to