Macrolet will make possible to do local macros, which are fine, but this is not what I meant. <br>What I wanted is to define macros "safely", because the code is evaluated in different thread with safe symbols, thus it is first saved <br>
as lazy function. <br><br>Would it be possible (with regards to modification of defmacro), with any internal (si) ecl functions/c functions (because I think its not possible with ansi common lisp) to create macro <br>at any time (which could be registered in global environment).<br>
<br>Thanks.<br><div class="gmail_extra"><br><br><div class="gmail_quote">2012/12/11 Juan Jose Garcia-Ripoll <span dir="ltr"><<a href="mailto:juanjose.garciaripoll@gmail.com" target="_blank">juanjose.garciaripoll@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p>Your code is incorrect. The defmacro is not a toplevel form and thus the definition is not available for the statement that follows it. Use macrolet instead.</p>

<div class="gmail_quote">El 10/12/2012 23:28, "Peter Enerccio" <<a href="mailto:enerccio@gmail.com" target="_blank">enerccio@gmail.com</a>> escribió:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="h5">
Hello, I dont know if this is related to the common lisp or the ecl, <br>but imagine code like this, compiled into function:<br><br>(LAMBDA ()<br>  (LET ((CORE::P *PACKAGE*) (CORE:THIS #<a GAME:CUBE>))<br>    (IN-PACKAGE ANCA)<br>


    (HANDLER-CASE<br>     (UNWIND-PROTECT<br>         (PROGN<br>          (PROGN<br>           (DEFMACRO ANCA::RUNNABLE (&BODY ANCA::BODY)<br>             (SI:QUASIQUOTE (LAMBDA () (SI:UNQUOTE-SPLICE ANCA::BODY))))<br>


           ((ANCA::RUNNABLE (PRINT "Ahoj")))))<br>       (SETF *PACKAGE* CORE::P))<br>     (T (CORE::X)<br>      (FUNCALL<br>       #<bytecompiled-closure #<bytecompiled-function 00000000032387d0>><br>


       #<a GAME:CUBE><br>       CORE::X)))<br>    T))<br><br>which will work fine, until it will be run, where it will crash with <br><br>;;; Loading #P"/usr/lib/ecl-12.12.1/cmp.fas"<br>;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0<br>


;;;<br>;;; Error:<br>;;;   * (ANCA::RUNNABLE (PRINT "Ahoj")) is not a legal function name.The variable C::GAZONK is unbound.<br><br>I have no idea what C::GAZONK is, but I imagine that it is not recognizing macro made with the defmacro before?<br>


<br>The problem is, that I need to save this into lambda so it is evaluated later, not right now (and definitely not in this thread).<br clear="all"><br>-- <br>Bc. Peter Vaņu¹anik<br><a href="http://www.bishojo.tk" target="_blank">http://www.bishojo.tk</a><br>


<br>
<br></div></div>------------------------------------------------------------------------------<br>
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial<br>
Remotely access PCs and mobile devices and provide instant support<br>
Improve your efficiency, and focus on delivering more value-add services<br>
Discover what IT Professionals Know. Rescue delivers<br>
<a href="http://p.sf.net/sfu/logmein_12329d2d" target="_blank">http://p.sf.net/sfu/logmein_12329d2d</a><br>_______________________________________________<br>
Ecls-list mailing list<br>
<a href="mailto:Ecls-list@lists.sourceforge.net" target="_blank">Ecls-list@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/ecls-list" target="_blank">https://lists.sourceforge.net/lists/listinfo/ecls-list</a><br>
<br></blockquote></div>
</blockquote></div><br><br clear="all"><br>-- <br>Bc. Peter Vaņu¹anik<br><a href="http://www.bishojo.tk" target="_blank">http://www.bishojo.tk</a><br><br>
</div>