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

Reply via email to