[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: shebs%utah-orion@UTAH-CS.ARPA, common-lisp@SU-AI.ARPA
- Subject: Declaring Functions
- From: Daniel L. Weinreb <DLW@SCRC-QUABBIN.ARPA>
- Date: Mon, 4 Nov 85 22:29 EST
- In-reply-to: <8511012045.AA07112@utah-orion.ARPA>
Date: Fri, 1 Nov 85 13:45:55 MST
From: firstname.lastname@example.org (Stanley Shebs)
The notion of a function type is mentioned in two places: p. 47 of the
CLM, where the (function ...) type specifier is defined, and p. 158-159,
where (ftype ...) and (function ...) are defined as options to declare.
Are they intended to be the same?
Read page 159 more carefully. It explains that they have the same
meaning, but are syntactically different. "function" has the
disadvantage that you can only declare one thing per clause, unlike most
other declarations, but the advantage that it looks mildly like "defun".
If so, then the second definition
should say that keywords and a (values ...) type specifier are allowed.
If by keywords you mean &optional and friends, it isn't strictly
necessary to repeat that, although it would sure clear things up if
there were a cross reference in the book.
However, there appears to be a typo on page 159. The form following the
phrase "entirely equivalent to", which currently reads
(ftype (function arglist result-type1 result-type2 ...) name)
ought to read
(ftype (function arglist (values result-type1 result-type2 ...)) name)
in order to be consistent with page 47.