[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Another ballot

Sorry, I never got back to A8.  I'm sure I don't understand the
implications of all of this myself, either.  However, on page 42
it says quite explicitly that a lambda expression is not a form
and cannot be meaningfully evaluated.  So you cannot turn
(apply '(lambda ...) ...) into (apply (lambda ...) ...)
and expect it to work.  Perhaps the suggestion is that you
have to turn it into (apply #'(lambda ...) ...)?  Presumably
the restriction would also apply to funcall, mapcar, and anything
else that accepts a "function" as an argument?

If you read section 2.13 (p 23), it doesn't even say that "lexical
closures" are functions, even though the description of function (p 62)
talks about returning lexical closures.  In fact, Chapter 2 doesn't say
much about lexical closures at all; it's not clear how they fit into the
type system.  2.13 also says that lambda expressions are functions; A8
would change this as well.

My gut feeling at this point is to say No to A8, continue to allow
lambda-expressions to act as functions, but clear up the role of
functions in the language by making 2.13 more correct and having the
definitions of apply and funcall refer to 2.13.  I think this is partly
that I'm being conservative, and hoping the ease the conversion task
ahead, but also that the implications just aren't clear enough.