[Ecls-list] ContextL functions with &key args don't work properly in ECL.

Pascal Costanza pc at p-cos.net
Thu Feb 25 14:20:56 UTC 2010


Hi,

I have changed Closer to MOP for ECL in such a way that &allow-other-keys is added when &key is present in a method lambda list, so it now does the same ECL does. The change is in the Closer to MOP repository. Could you check whether that solves your problem? (As far as I can tell, it should.)

I don't think the issue with (debug 3) concerns me as the ContextL maintainer, but I'm not user? Do you think that's a ContextL issue, or rather an ECL issue?


Best,
Pascal

On 24 Feb 2010, at 18:51, Alexander Gavrilov wrote:

> Hi,
> 
> Using the following definition:
> 
> (define-layered-function foo (a &key)
>  (:method (a &key)
>    (print a))
>  (:method ((a number) &key b)
>    (call-next-layered-method)
>    (print b)))
> 
> in the following way doesn't work:
> 
> (foo 5 :b 5)
> 
> because the base method complains about an unknown key.
> 
> This is incorrect because a key is valid if any of the applicable
> methods accepts it. Moreover, it breaks even if &allow-other-keys
> is added to the generic function parameter list (but not to the
> methods). The standard defmethod implementation in ECL
> supports this by adding &allow-other-keys to the method
> function lambdas, but CloserMOP doesn't do it.
> 
> Also, even with (debug 3) layered method calls appear in the
> stack trace as useless uninterned symbols.
> 
> Alexander

-- 
Pascal Costanza, mailto:pc at p-cos.net, http://p-cos.net
Vrije Universiteit Brussel
Software Languages Lab
Pleinlaan 2, B-1050 Brussel, Belgium










More information about the ecl-devel mailing list