fork download
  1. (defclass a () ())
  2. (defclass b (a) ())
  3.  
  4. (defgeneric foo (x y)
  5. (:argument-precedence-order y x))
  6.  
  7. (defmethod foo ((a a) x)
  8. 1)
  9.  
  10. (defmethod foo ((a a) (x (eql :asd)))
  11. 2)
  12.  
  13. (defmethod foo ((b b) x)
  14. 3)
  15.  
  16. (dolist (obj (mapcar 'make-instance '(a b)))
  17. (dolist (x '(t :asd))
  18. (format t "~&(foo ~a ~a) => ~a" obj x (foo obj x))))
Success #stdin #stdout 0.03s 32976KB
stdin
Standard input is empty
stdout
(foo #<A {1001E9C703}> T) => 1
(foo #<A {1001E9C703}> ASD) => 2
(foo #<B {1001EDABA3}> T) => 3
(foo #<B {1001EDABA3}> ASD) => 2