We defined a macro named ë (Greek lambda character, in case this email isn&#39;t Unicode-friendly) to expand into a lambda form, partly to save typing and partly to add a couple extra features our system needs. This works fine when you compile files, but not in a Slime REPL or when using the command slime-compile-defun. For example,<br>

<br>(defun foo ()<br>  (ë (x) (1+ x)))<br><br>works the way you&#39;d expect if you compile the file it&#39;s in. But in the REPL bad things happen:<br><br>(defun foo ()<br>   (ë (x) (1+ x)))<br>;Compiler warnings :<br>;   In FOO: Undefined function Ë<br>

;   In FOO: Undefined function X<br>;   In FOO: Undeclared free variable X<br>=&gt; FOO<br><br>(foo) <br>=&gt; Undefined function X called with arguments () .<br>   [Condition of type CCL::UNDEFINED-FUNCTION-CALL]<br><br>

(macroexpand &#39;(ë (x) (1+ x)))<br> =&gt; (Ë (X) (1+ X))<br><br>And if you use slime-compile-defun on the (defun foo...) form, the following occurs:<br><br>While compiling FOO :<br>#1=(X) is not a symbol or lambda expression in the form (#1# (1+ X)) .<br>

   [Condition of type CCL::COMPILE-TIME-PROGRAM-ERROR]<br><br>I&#39;m posting this here because none of the above errors happen in SBCL, so there would seem to be something specific about the combination of Slime and CCL that doesn&#39;t like this macro. Does anyone have any ideas or suggestions?<br>

<br>Thank you,<br><br>Daniel Gackle<br><br>