[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Function cells
- To: Bobrow.PA at PARC-MAXC.ARPA, TIM%MIT-OZ at MIT-MC.ARPA
- Subject: Re: Function cells
- From: Eric Benson <BENSON at SPA-Nimbus>
- Date: Thu ,1 Sep 83 18:35:00 EDT
- Cc: Deutsch.PA at PARC-MAXC.ARPA, lisp-forum at MIT-MC.ARPA, Julian Padget <PADGET at UTAH-20.ARPA>, Teitelman.PA at PARC-MAXC.ARPA
- In-reply-to: The message of 1 Sep 83 14:30-PDT from Bobrow.PA at PARC-MAXC.ARPA
Date: Thu, 1 Sep 83 14:30 PDT
From: Bobrow.PA@PARC-MAXC.ARPA
Tim,
There is a difference in meaning between:
(fun x y) and (FUNCALL fun x y).
In the former case, one expects the meaning of fun to be independent of
the context of the call. In the latter, to be dependent of parameters
passed in to the environment. One can take the point of view that one
doesn't want to distinguish these cases, but I maintain that the code is
clearer when you do make the distinction for the call. Similarly, I
have seen proposals for doing object oriented programming by having the
function name evaluated in the context of the first argument to the
function (which would in fact be a closure on some functions and
variables). I object to that as well.
So for me the question is not about efficiency and limitation of name
space, but of what distinctions you want to make apparent at a call.
danny bobrow
By this reasoning you must object to the Common Lisp special forms
LABELS and FLET, which define lexically scoped functions. With the
inclusion of these, function name evaluation is no longer independent of
context. It is only dependent on the static context, however; there is
no dynamic binding of function names in Common Lisp. Is it only
dependence on dynamic context you object to, or dependence on any
context?