[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: tail recursion, again



    Date: Tue, 11 Sep 90 07:00 PDT
    From: Swab@CHARON.arc.nasa.gov

    Hi Larry,

    ; Our code simply will not run on the Symbolics without blowing the
    ; stack. As a result, my 3645 is nothing but an expensive terminal to a Sun.

      I am catching up on a few days worth of mail so if this is redundant
      please excuse me. The Symbolics drops into the debugger during recur-
      sive function calls. First thought: What a wimpy machine. But in the
      event that it saves your environment (like when someone modifies the
      code to do a recursive nose dive) the meaning for it seems clear. A
      Sun would just cons until it drops.

      In short, the debugger is only trying to help you. Now, what to do if
      you do not desire the debugger's help: Catch the offending form and
      prevent it from running you into the debugger. The following code will
      help you do this...

      (block nil
	(sys:condition-bind
	  ((SYS:PDL-OVERFLOW
	     (lambda (err)
	       ; (format *standard-output* "~%Growing the stack...")
	       (sys:proceed err :grow-pdl))))
	  (recursive-function)))

    (Rod Swab | NASA Ames Research Center | swab@pluto.arc.nasa.gov)

See the source for the :Set Stack Size CP command.  It will tell you how
to grow your stacks.  You want to grow the control stack.