[Openmcl-devel] make-method-lambda ?
Pascal Costanza
pc at p-cos.net
Tue Sep 9 10:11:24 PDT 2008
You have to keep track of that anyway. The semantics of define-
manipulated-method is sufficiently different from (standard) defmethod
that it warrants using different names to make that distinction
explicit. The idea of make-method-lambda is that you can use methods
defined using defmethod interchangeably with different semantics in
different contexts/generic functions, but it's actually very unlikely
that a change of semantics (the fact whether the arguments are
manipulated or not in your example) will _not_ have an effect on the
method body. So if you have to change the method body because of
different semantics, you might as well change the defining construct.
The advantage is that your code is more explicit. I think that makes
it easier to keep track of things, not harder.
We wanted to include such a discussion in the paper, but we haven't
gotten to a full formulation of the issues involved yet...
Pascal
On 9 Sep 2008, at 18:51, james anderson wrote:
> because it's another thing for the developer to keep track of.
>
> On 2008-09-09, at 12:26 , Pascal Costanza wrote:
>
>> why?
>>
>> On 9 Sep 2008, at 16:19, james anderson wrote:
>>
>>> i was hoping to avoid define-manipulated-method.
>>>
>>> On 2008-09-09, at 09:52 , Pascal Costanza wrote:
>>>
>>>>
>>>> On 9 Sep 2008, at 15:13, james anderson wrote:
>>>>
>>>>>> What do you want to achieve? In most cases, there are easier ways
>>>>>> than make-method-lambda to achieve what you want...
>>>>>
>>>>> manipulate the arguments passed to the method.
>>>>
>>>>
>>>> (defmacro define-manipulated-method (name (&rest args) &body body)
>>>> (let ((unspecialized-args (extract-lambda-list args)))
>>>> `(defmethod ,name ,args
>>>> (apply (lambda ,unspecialized-args , at body)
>>>> (manipulate-args
>>>> (list ,@(loop for arg in unspecialized-args
>>>> unless (member arg lambda-list-keywords)
>>>> collect arg)))))))
>>>>
>>>> ?!?
>>>>
>>>>
>>>> Pascal
>>>>
>>>> --
>>>> Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
>>>> Vrije Universiteit Brussel, Programming Technology Lab
>>>> Pleinlaan 2, B-1050 Brussel, Belgium
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
>>>> Vrije Universiteit Brussel, Programming Technology Lab
>>>> Pleinlaan 2, B-1050 Brussel, Belgium
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Openmcl-devel mailing list
>>> Openmcl-devel at clozure.com
>>> http://clozure.com/mailman/listinfo/openmcl-devel
>>
>> --
>> Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
>> Vrije Universiteit Brussel, Programming Technology Lab
>> Pleinlaan 2, B-1050 Brussel, Belgium
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
>> http://clozure.com/mailman/listinfo/openmcl-devel
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
--
Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
Vrije Universiteit Brussel, Programming Technology Lab
Pleinlaan 2, B-1050 Brussel, Belgium
More information about the Openmcl-devel
mailing list