On Fri, Jun 1, 2012 at 12:20 PM, Stas Boukarev <firstname.lastname@example.org>
As per CLHS,
"*" means unspecified part of the type specifier.
(declaim (ftype (function * integer) f))
(defun f (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
and that of the FUNCTION type
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.