Why not extend the stack at runtime?<p>LispWorks:<p><pre><code>    CL-USER 101 &#62; (defun foo (n) (unless (zerop n) (cons n (foo (1- n)))))
    FOO

    CL-USER 102 &#62; (foo 1000)

    Stack overflow (stack size 15998).
      1 (continue) Extend stack by 50%.
      2 Extend stack by 300%.
      3 (abort) Return to level 0.
      4 Return to top loop level 0.

    Type :b for backtrace or :c &#60;option number&#62; to proceed.
    Type :bug-form "&#60;subject&#62;" for a bug report template or :? for other options.

     CL-USER 103 : 1 &#62; 
</code></pre>
Now use restart 1 or 2.