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

Types of Functions

Since this is being discussed now this seems a reasonable
time to ask the following :-

Why is it that in CLtL (p 76) Functionp is the only type
predicate which is not specified to be equivalent to
(typep foo 'function)?

This means that there is no guarantee that the following
will work for the obvious expansion of typecase.

   (typecase foo
      (function (funcall foo bar))
      (otherwise (frobulate foo bar)))

It seems to me that CL should require that all implementation
dependent representation types of functions, whether they
be #<dtp-stack-closure>s or whatever, should be required to
be Subtypep of the type Function, and hence that
(typep foo 'function) should be T for such an object.