[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Some notes about declarations



Do we provide a way to type-declare functions (ie, FTYPE) that have
&optional or &rest specifications? It seems like
 (FTYPE (FUNCTION (INTEGER &OPTIONAL INTEGER) FLOAT))
would have been reasonable, but I can't find anything that suggests
I can do this. &REST would be more complicated, but not prohibitively so.
Am I missing something or do we not have a way to do this at all.

Do we provide a way to declare that a function is n-ary (or not) at all? That
is, the equivalent of the *EXPR and *LEXPR declarations in Maclisp? I guess
I would be surprised if there was no CL implementation that could generate 
better code in cases where I declared this kind of thing ahead of time.

And while we're on the subject, is there some reason that PROCLAIM was
not made to be n-ary?  It has bothered me on numerous occassions that I
have to do:
 (PROCLAIM '(SPECIAL X))
 (PROCLAIM '(FIXNUM X))
when we could just as well have allowed:
 (PROCLAIM '(SPECIAL X) '(FIXNUM X))
Allowing multiple arguments would be more consistent with DECLARE.