<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 17, 2013 at 12:51 AM, Jason Sewall <span dir="ltr"><<a href="mailto:jasonsewall@gmail.com" target="_blank">jasonsewall@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Thu, May 16, 2013 at 3:42 PM, Juan Jose Garcia-Ripoll<br>
<<a href="mailto:juanjose.garciaripoll@gmail.com">juanjose.garciaripoll@gmail.com</a>> wrote:<br>
><br>
> You are looking at the _old_ manual. That section is obsolete, but I did not<br>
> have time to go through the whole manual again.<br>
<br>
</div>Sorry, it wasn't clear to me that it was "old" - I got it from a doc<br>
tree I recently built from the ecl-doc repo. Should such parts be at<br>
least marked with *obsolete* somehow if there is no time for updating?<br></blockquote><div><br></div><div style>ECL demands more time than I have and the docs have become obsolete. The sources for the documentation are open and I welcome patches and bug reports for them.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im">> That said, ECL no longer implements unboxed functions. It was very hard to<br>
> maintained and lead to code bloat: we had to provide two functions for every<br>
> signature, one with Common Lisp objects, another one with unboxed values. It<br>
> could be reimplemented using appropriate proclamations, but the default<br>
> action was to remove it.<br>
><br>
> Outside from function arguments, the rest can be fully unboxed, as you see<br>
> in the new code body, which is also more readable.<br>
<br>
</div>This seems sensible to me, but it doesn't really explain the warning I<br>
got, does it? Shouldn't the compiler just ignore the proclamation in<br>
that case instead of apparently failing to understand it?<br></blockquote></div><br>Well, your code was broken. As shown here: <a href="http://clhs.lisp.se/Body/f_procla.htm">http://clhs.lisp.se/Body/f_procla.htm</a> the list of valid declaration identifiers for PROCLAIM does not include FUNCTION. Your proclamation should have read instead</div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">(eval-when (compile)</div><div class="gmail_extra"> (proclaim '(ftype (function (fixnum fixnum fixnum) fixnum) tak)))</div><div class="gmail_extra">
<br></div><div class="gmail_extra">(defun tak (x y z)</div><div class="gmail_extra"> (declare (fixnum x y z))</div><div class="gmail_extra"> (if (not (< y x))</div><div class="gmail_extra"> z</div><div class="gmail_extra">
(tak (tak (1- x) y z)</div><div class="gmail_extra"> (tak (1- y) z x)</div><div class="gmail_extra"> (tak (1- z) x y))))</div><div><br></div>With this, ECL does not complain</div><div class="gmail_extra">
<br></div><div class="gmail_extra"><div class="gmail_extra">> (compile-file "foo.lsp")</div><div class="gmail_extra"><br></div><div class="gmail_extra">;;;</div><div class="gmail_extra">;;; Compiling foo.lsp.</div>
<div class="gmail_extra">;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0</div><div class="gmail_extra">;;;</div><div class="gmail_extra">;;; Compiling (DEFUN TAK ...).</div><div class="gmail_extra">;;; End of Pass 1.</div>
<div class="gmail_extra">;;; Emitting code for TAK.</div><div class="gmail_extra">;;; Finished compiling foo.lsp.</div><div class="gmail_extra">;;;</div><div><br></div><div><br></div>-- <br>Instituto de Física Fundamental, CSIC<br>
c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a>
</div></div>