Issue: COERCING-SETF-NAME-TO-FUNCTIONReference: X3J13/92-102, dpANS 12.24
COERCE, p.4-30..32
X3J13/89-520, Issue FUNCTION-NAME
X3J13/88-413, Issue FUNCTION-TYPE
X3J13/92-3101, Kim Barrett comment #1
Category: ADDITION
Edit History: Version 1, 06/15/91, Kim Barrett
Version 2, 06/22/91, Kim Barrett (summarize discussion)
Version 3, 01/06/93, Kim Barrett (update references)
Version 4, 01/06/93, Kim Barrett (name the proposal)
Status: Proposal ALL-FUNCTION-NAMES accepted, Mar 1993
Problem Description:
COERCE doesn't currently provide a means of converting a SETF function name to
a function object, as it does for functions named by symbols. FUNCTION-TYPE
was written too early to cover this, and FUNCTION-NAME didn't correct it.
Proposal (COERCING-SETF-NAME-TO-FUNCTION:ALL-FUNCTION-NAMES):
Change the argument permitted by COERCE when the type argument is FUNCTION to
treat all function names as it currently treats symbols. The following change
to the 12.24 draft is required:
In the description of the COERCE function, the first paragraph of the section
for the FUNCTION result-type (p.4-31) says:
If the \param{result-type} is \typeref{function},
and \param{object} is any \term{symbol} that is \term{fbound}
but that is globally defined neither as a \term{macro name} nor as
a \term{special operator}, then the \param{result} is the
\term{functional value} of \param{object}.
Change the occurance of the term \term{symbol} to instead be
\term{function name}, so that the sentence reads:
If the \param{result-type} is \typeref{function},
and \param{object} is any \term{function name} that is \term{fbound}
but that is globally defined neither as a \term{macro name} nor as
a \term{special operator}, then the \param{result} is the
\term{functional value} of \param{object}.
Editorial Impact:
Single term change.
Rationale:
This corrects an apparent oversight in the FUNCTION-NAME proposal.
Discussion:
Moon and others feel that (COERCE symbol 'FUNCTION) is questionable, but that
it would be better to make a small upwardly compatible change for consistancy
rather than leaving things inconsistant, and that even worse would be the now
incompatible change involved in the removal of the coercion of symbols to
functions.