<div class="gmail_quote">On Fri, Jun 1, 2012 at 12:20 PM, Stas Boukarev <span dir="ltr"><<a href="mailto:stassats@gmail.com" target="_blank">stassats@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

As per CLHS,<br>
<a href="http://www.lispworks.com/documentation/lw50/CLHS/Body/04_bc.htm" target="_blank">http://www.lispworks.com/documentation/lw50/CLHS/Body/04_bc.htm</a><br>
"*" means unspecified part of the type specifier.<br>
<br>
(declaim (ftype (function * integer) f))<br>
<br>
(defun f (a)<br>
  (1+ a))<br>
<br>
and then (compile-file "file.lisp")<br>
<br>
;;; LAMBDA: Illegal lambda list *.</blockquote><div><br></div><div>Actually, the behavior you expect is undefined. While * is used to design parts of the type that are general, not specified, the situations in which * is used are very precisely marked by the Standard. Note for instance the difference between the grammar for the ARRAY type</div>

<div><br></div><div><a href="http://www.lispworks.com/documentation/lw50/CLHS/Body/t_array.htm#array">http://www.lispworks.com/documentation/lw50/CLHS/Body/t_array.htm#array</a></div><div><br></div><div>and that of the FUNCTION type</div>

<div><br></div><div><a href="http://www.lispworks.com/documentation/lw50/CLHS/Body/t_fn.htm">http://www.lispworks.com/documentation/lw50/CLHS/Body/t_fn.htm</a></div><div><br></div><div>Only the former allows *</div><div>
<br>
</div><div>One could allow ECL to "support" * by ignoring all function declarations where it appears. I presume this would help with certain libraries that use these nonstandard types.</div><div><br></div><div>
Juanjo</div>
</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><br>