On Fri, Jun 1, 2012 at 12:20 PM, Stas Boukarev <stass...@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
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list