On 2 Dec 2012, at 22:48, Juan Jose Garcia-Ripoll 
<juanjose.garciarip...@gmail.com> wrote:

> On Sun, Dec 2, 2012 at 9:11 PM, Pascal Costanza <p...@p-cos.net> wrote:
> 4) DEFMETHOD doesn't call MAKE-METHOD-LAMBDA to determine the method function 
> body. [My guess is that this is not easy to change due to the deviation from 
> the MOP specification in how method functions are called.]
> 
> I will look into the other issues, but this is definitely not true. In 
> ecl/src/clos/method.lsp, line 82, 
> ...
>         (multiple-value-bind (fn-form options)
>             (make-method-lambda generic-function method lambda-form env)
>           (when documentation
>             (setf options (list* :documentation documentation options)))
>           (multiple-value-bind (wrapped-lambda wrapped-p)
>               (simplify-lambda name fn-form)
> ...
> 
> ECL calls make-method lambda and then looks at the output to see whether it 
> can be transformed into the C-optimized dispatch that we use.
> 
> It would be important to have a test case that shows when make-method-lambda 
> is not working. What in particular made you think so?
> 



Here is a test case:

> (use-package :clos)

T
> (defclass my-generic-function (standard-generic-function) () (:metaclass 
> funcallable-standard-class))

#<The CLOS:FUNCALLABLE-STANDARD-CLASS COMMON-LISP-USER::MY-GENERIC-FUNCTION>
> (defgeneric f (x) (:generic-function-class my-generic-function))

#<my-generic-function F>
> (defmethod make-method-lambda :after ((gf my-generic-function) (method 
> standard-method) (lambda-expression t) (enviroment t)) (print :foo))

#<standard-method MAKE-METHOD-LAMBDA (#<The CLOS:FUNCALLABLE-STANDARD-CLASS 
COMMON-LISP-USER::MY-GENERIC-FUNCTION>
                                      #<The STANDARD-CLASS STANDARD-METHOD>
                                      #<The BUILT-IN-CLASS T>
                                      #<The BUILT-IN-CLASS T>)>
> (defmethod f ((x integer)) (+ x x))

#<standard-method F (#<The BUILT-IN-CLASS INTEGER>)>



Pascal


--
Pascal Costanza



------------------------------------------------------------------------------
Keep yourself connected to Go Parallel: 
DESIGN Expert tips on starting your parallel project right.
http://goparallel.sourceforge.net/
_______________________________________________
Ecls-list mailing list
Ecls-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ecls-list

Reply via email to