[Ecls-list] (function * t) type specifier is no longer accepted
Juan Jose Garcia-Ripoll
juanjose.garciaripoll at googlemail.com
Thu Jun 7 14:26:03 UTC 2012
On Fri, Jun 1, 2012 at 12:20 PM, Stas Boukarev <stassats at gmail.com> wrote:
> As per CLHS,
> http://www.lispworks.com/documentation/lw50/CLHS/Body/04_bc.htm
> "*" means unspecified part of the type specifier.
>
> (declaim (ftype (function * integer) f))
>
> (defun f (a)
> (1+ a))
>
> and then (compile-file "file.lisp")
>
> ;;; LAMBDA: Illegal lambda list *.
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
http://www.lispworks.com/documentation/lw50/CLHS/Body/t_array.htm#array
and that of the FUNCTION type
http://www.lispworks.com/documentation/lw50/CLHS/Body/t_fn.htm
Only the former allows *
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.
Juanjo
--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20120607/a5f19df9/attachment.html>
More information about the ecl-devel
mailing list