(FLET ((FOO (X) (FOO X X))) (DECLARE (FUNCTION FOO (INTEGER) INTEGER)) ... (FOO 5) ...) The declaration for FOO would pertain to both the locally-defined FOO and the outer FOO used in its body. That's two different FOOs, and the declaration is going to be a lie for one or the other! A single declaration should never be able to refer to two different entities with the same name. - Paul ------