James: It's extremely difficult to overflow the stack in Racket, because the stack isn't arbitrarily limited to some small value -- it does some tricks so that the stack is only limited by your total available memory.
For me, having to worry about stack overflows is definitely one of the biggest pain points in Clojure. Clojure provides a few workarounds for the common cases (recur, trampoline, lazy-seq), but there are some scenarios where you really just need ample stack. John: When you're doing memoization and you have a lot of "holes" in the inputs, one option is to have two phases to your function. The first phase takes the initial input and then computes a collection of all the inputs that are dependencies and need to be computed ahead of time. Then in phase two, you can "prime the pump" with that particular sequence of inputs. If you need help on this, I can give you a concrete example of how to do this. Another option to consider: I wrote a blog entry about how to use core.async to convert a stack-consuming computation into stackless with minimal transformation to your program. I haven't tried this technique yet in any serious program, but it's worth investigating: http://programming-puzzler.blogspot.com/2013/07/stackless-clojure-with-coreasync_7.html -- -- 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/groups/opt_out.