[Openmcl-devel] funcallable instances
Gary Byers
gb at clozure.com
Sun Aug 29 16:12:14 PDT 2004
On Sun, 29 Aug 2004, Timothy Moore wrote:
> Hi,
> Here's a patch to support funcallable instances, as specified in AMOP.
> The changes are pretty minor:
> Change defclass to not supply default direct superclasses;
OK,
> Change the shared-initialize :after method for slots-class to supply a
> default superclass of funcallable-standard-object for classes with
> metaclass funcallable-standard-class;
OK.
> A trampoline for funcallable instances;
> A couple of functions that seem to need implementations for funcallable
> instances.
This basically implements section 5.5.4 of the spec, which is probably.
good.
>
> I haven't tested this extensively, but it seems to work.
We can certainly implement SET-FUNCALLABLE-INSTANCE-FUNCTION as
a generic function. Since section 5.5.5 of the spec isn't implemented
(or close to it: there are significant differences in how method functions
receive their args and other issues), I'd be tempted to want to split this
up:
(defmethod set-funcallable-instance-function ((funcallable-instance
funcallable-standard-object)
function)
;; Your implementation here.
)
(defmethod set-funcallable-instance-function ((funcallable-instance
generic-function)
function)
(error "Section 5.5.5 of the AMOP isn't implemented in this lisp.
~s was called with args ~s and ~s. "
'set-funcallable-instance-function funcallable-instance function))
Maybe that's overly paranoid, but someone who wants to use
SET-FUNCALLABLE-INSTANCE-FUNCTION to set the discriminating code in
a GF should probably be dissuaded from doing so. (Maybe letting them
do it once is a good way of dissuading them: how else will they learn ?)
>
> Tim
>
Thanks.
More information about the Openmcl-devel
mailing list