[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SPECIAL FUNCTION NAME [Gall: Bug Report]
- To: common-lisp@SU-AI.ARPA
- Subject: Re: SPECIAL FUNCTION NAME [Gall: Bug Report]
- From: Nick Gall <Gall@MIT-MULTICS.ARPA>
- Date: Tue, 2 Apr 85 15:01 EST
- In-reply-to: Message of 28 Mar 85 09:28 EST from "Network_Server.Daemon (Moon@SCRC-STONY-BROOK.ARPA@SU-AI)"
- Posted-date: 2 Apr 85 15:04 EST
!section 7.5(14) Nick Gall 85-03-19
!version Digital Press 1984
!topic Scope and Extent of local function names
See above comment about the implications of FLET and LABELS not having
been fully thought out and reflected in the manual.
I suggest that Common Lisp go all the way, and allow a
SPECIAL-FUNCTION-NAME declaration that would be analogous to the
SPECIAL declaration for "ordinary" variables.
Such a concept would make the idea of
ordinary-variable/function-name binding and assignment much more
consistent.
As I recall this was considered and rejected on the basis that it would
be confusing and wouldn't give any real increase in expressive power
(since FUNCALL of a special variable could be used). I agree with that
decision, even though our implementation has always had the feature.
The only place where we use it is in a crock that could just as well be
done some other way.
I think that a thought out explanation of FLET and LABELS would
allow a SPECIAL-FUNCTION-NAME declaration to be described in
perspicuous manner.
As for its usefulness, I am writing a command processor, and I
wish to prevent the user from typing in forms that might abort
the processor (e.g., (exit), (reset-stack-group), etc.). FLET
would allow me to establish temporary global function definitions
for these dangerous functions. The code would be much clearer
than saving the old function definitions, doing defuns (or setfs
of symbol-functions) and then restoring the old definitions.