[slime-devel] defining LISP functions in Emacs

Joe Corneli jcorneli at planetmath.org
Tue Jun 19 15:16:01 UTC 2007


I want to create a variant of `defun' that takes arguments from Emacs
and assembles a body to be evaluated by SLIME.

It seemed to me that this macro definition w ould work:

(defmacro ldefun (name arglist &rest body)
  `(defun ,name ,arglist (slime-eval (progn , at body))))

For example, here is how it expands in a simple case:

(macroexpand
  '(ldefun testslime (first second)
     (list first (+ 1 second))))

;=> (defun testslime (first second)
;=>  (slime-eval (progn (list first (+ 1 second)))))

But that didn't turn out.

In fact, even the `slime-eval' form just above does not work
in a stand-alone fashion:

(slime-eval (progn (list 2 (+ 1 6))))

Gives this error:

Execution of a form compiled with errors.
Form:
  (2 7)

Whereas from the REPL, I get this behavior:

CL-USER> (progn (list 2 (+ 1 6)))
(2 7)

So, I find this behavior surprising.  Can anyone help me out?

Note: I'm running Slime CVS from 2007-06-16 and SBCL 1.0.5.




More information about the slime-devel mailing list