[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
small changes
Date: Thu, 27 Mar 1986 01:43 EST
From: CPH%OZ.AI.MIT.EDU@XX.LCS.MIT.EDU
Date: Sunday, 23 March 1986 18:10-EST
From: Jonathan A Rees <JAR at MC.LCS.MIT.EDU>
Incompatible change:
I'd like to change the meaning of (DEFINE (form var ...) body ...) so
that it's defined in terms of LAMBDA instead of NAMED-LAMBDA.
I don't like this, and would prefer that
(DEFINE (FOO BAR BAZ) ...)
expand into
(DEFINE FOO
(LETREC ((FOO (LAMBDA (BAR BAZ) ...)))
FOO))
this additional complication mostly to eliminate the need for either
REC or NAMED-LAMBDA.
...
I claim (and I believe that there will be support for this claim) that
the INTENT of the author of such a self referential procedure was that
the name FOO refer to the procedure itself, not the binding of the
variable FOO. This is because the binding is normally assumed to be
fixed; ...
Well, what about tracing utilities of the style that replace the
(functional) value of a variable with a new function that does tracing
and also calls the old value? I suppose I can always write
(DEFINE FOO (LAMBDA (BAR BAZ) ...))
but it seems to me the language is more transparent if not too many
implicit hidden things creep in. (In retrospect, I think that the
Common Lisp "feature" of DEFUN supplying an implicit named BLOCK
around its body was perhaps a mistake.)
--Guy