[slime-devel] Re: SBCL restart-frame

Juho Snellman jsnell at iki.fi
Tue Jan 17 18:56:56 UTC 2006


<jcm at FreeBSD-uk.eu.org> wrote:
> On Sat, Jan 14, 2006 at 11:11:18PM +0100, Mészáros Levente wrote:
>: Hi,
>: 
>: I am relatively new to SBCL and SLIME, so maybe I'm wrong about this. I 
>: did not find restart-frame support for SBCL, so I did this patch and it 
>: seems to work for me.
> 
> Is it really this simple?

Not quite. The restarted function will be run in the wrong dynamic
environment. For example:

(declaim (optimize (debug 2)))

(defvar *a* 0)

(defun foo (a)
  (let ((*a* (1+ *a*)))
    (/ 2 a)))
      
(defun bar ()
  (print *a*)
  (foo 0))

When you call BAR, it'll print 0 and then call FOO, which will signal
an error. If we now restart BAR, the dynamic binding for *A* that FOO
established will still be visibile, and it'll print 1 instead.

-- 
Juho Snellman




More information about the slime-devel mailing list