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 *. -- With best regards, Stas.