CMU Common Lisp supports the values declaration as an extension to
Common Lisp. The syntax is (values type1
type2typen). This declaration is
semantically equivalent to a the form wrapped around the body
of the special form in which the values declaration appears.
The advantage of values over the is purely
syntactic--it doesn't introduce more indentation. For example:
If you declare the types of all arguments to a function, and also declare the return value types with values, you have described the type of the function. Python will use this argument and result type information to derive a function type that will then be applied to calls of the function (see section function-types.) This provides a way to declare the types of functions that is much less syntactically awkward than using the ftype declaration with a function type specifier.
Although the values declaration is non-standard, it is relatively harmless to use it in otherwise portable code, since any warning in non-CMU implementations can be suppressed with the standarddeclaration proclamation.