On Wed, Dec 29, 2010 at 5:45 PM, David Nolen <dnolen.li...@gmail.com> wrote: > On Wed, Dec 29, 2010 at 5:29 PM, Ken Wesson <kwess...@gmail.com> wrote: >> >> On Wed, Dec 29, 2010 at 4:28 PM, Meikel Brandmeyer <m...@kotka.de> wrote: >> > Hi, >> > >> > Am 29.12.2010 um 19:36 schrieb Ken Wesson: >> > >> >> Who needs to muck about with the stack and recur when you've got >> >> laziness? :) >> > >> > Even then you have to take care, because stacking lazy seq on lazy seq >> > on … might also result in a stackoverflow. >> >> True, but it's far less common to have lazy operations like maps >> nested 100,000 deep than it is to have seqs 100,000 items long. :) > > You only need to nest lazy operations 1000 levels deep before you blow the > stack w/ default JVM settings (on OS X, I imagine it's similar for other > systems).
Eww. Apple's JVM sucketh greatly. I'd be surprised if the default maximum stack depth isn't at *least* 32,768 on Sun's Hotspot, given how rarely I get SOEs outside of actually unbounded recursions (and how blasted long the resulting traces are when they're dump into my repl! So much for using backscroll afterward). Of course, even one thousand nested (map f (map g (map h ...))) is fairly unusual. Probably you'd have to have a seq you passed around and sometimes transformed, repeatedly, to get even that depth. An occasional (doall ...) thrown in would then fix it by flattening it every so often (if the seq would fit in main memory all at once, of course). I take it there are also -Xfoo flags to the various JVMs (probably different for each vendor) to tweak the stack depth, if you really need it for, say, a production webserver. And you can probably find some tool to package end-user applications as an executable installer that unpacks a jar and a stub .exe that boots the system JVM (or a bundled one) with particular options and tweaks, then hands off to a class in the jar, so desktop developers won't have to rely on end users knowing how to fiddle with JVM flags to use their product. -- 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