[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