Perhaps you are evaluating the (defmacro ë...) form in the REPL? That works for me too. What doesn&#39;t work is loading a <i>file</i> with the (defmacro ë...) and then trying to macroexpand a usage of ë in the REPL. Sorry I didn&#39;t make that clear. Also, as I mentioned in replying to Matthew, the whole problem goes away if we use a more normal name than ë. But ë is a nice name and we haven&#39;t come up with anything better (FN seemed like a good candidate, but turned out not to be).<br>

<br>Daniel<br><br><br><div class="gmail_quote">On Thu, May 21, 2009 at 12:53 AM, Stas Boukarev <span dir="ltr">&lt;<a href="mailto:stassats@gmail.com">stassats@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div><div></div><div class="h5">Daniel Gackle &lt;<a href="mailto:danielgackle@gmail.com">danielgackle@gmail.com</a>&gt; writes:<br>
<br>
&gt; 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<br>
&gt; 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<br>
&gt; when using the command slime-compile-defun. For example,<br>
&gt;<br>
&gt; (defun foo ()<br>
&gt;   (ë (x) (1+ x)))<br>
&gt;<br>
&gt; works the way you&#39;d expect if you compile the file it&#39;s in. But in the REPL bad things happen:<br>
&gt;<br>
&gt; (defun foo ()<br>
&gt;    (ë (x) (1+ x)))<br>
&gt; ;Compiler warnings :<br>
&gt; ;   In FOO: Undefined function Ë<br>
&gt; ;   In FOO: Undefined function X<br>
&gt; ;   In FOO: Undeclared free variable X<br>
&gt; =&gt; FOO<br>
&gt;<br>
&gt; (foo)<br>
&gt; =&gt; Undefined function X called with arguments () .<br>
&gt;    [Condition of type CCL::UNDEFINED-FUNCTION-CALL]<br>
&gt;<br>
&gt; (macroexpand &#39;(ë (x) (1+ x)))<br>
&gt;  =&gt; (Ë (X) (1+ X))<br>
&gt;<br>
&gt; And if you use slime-compile-defun on the (defun foo...) form, the following occurs:<br>
&gt;<br>
&gt; While compiling FOO :<br>
&gt; #1=(X) is not a symbol or lambda expression in the form (#1# (1+ X)) .<br>
&gt;    [Condition of type CCL::COMPILE-TIME-PROGRAM-ERROR]<br>
&gt;<br>
&gt; 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<br>
&gt; of Slime and CCL that doesn&#39;t like this macro. Does anyone have any ideas or suggestions?<br>
&gt;<br>
&gt; Thank you,<br>
&gt;<br>
&gt; Daniel Gackle<br>
&gt;<br>
</div></div>Are you sure that your macro is defined?<br>
(defmacro ë (arguments &amp;body body) `(lambda ,arguments ,@body))<br>
<br>
(funcall (ë (x) (+ x 1)) 5) =&gt; 6<br>
<br>
Works fine here.<br>
<font color="#888888"><br>
--<br>
With best regards, Stas.<br>
</font></blockquote></div><br>