coops strangeness pasted by megane on Wed May 16 10:10:17 2012

(require-extension coops)

(define (bar)
  (print "bar v1"))

(bar)

(define (bar)
  (print "bar v2"))

(bar)


(define-class <a> ())

(define a (make <a>))

(define-method (foo (a <a>))
  (print "foo v1 on " a))

(foo a)

(define-method (foo (a <a>))
  (print "foo v2 on " a))

(foo a)

;; Output:
;; bar v1
;; bar v2
;; foo v1 on #<coops instance of `<a>'>
;; foo v1 on #<coops instance of `<a>'> <-- nothing changed

coops strangeness a bit different pasted by certainty on Wed May 16 10:37:52 2012

#;2> (define-class <a> ())
#;3> 
#;3> (define-method (foo (a <a>))
--->   (print "foo v1 on " a))

Note: implicitly defining generic-procedure: foo
#t
#;4> (define-method (foo (a <a>))
--->   (print "foo v2 on " a))
#t
#;5> 
#;5> (define a (make <a>))
#;6> (foo a)
foo v2 on #<coops instance of `<a>'>
#;7> 

no title pasted by megane on Wed May 16 10:46:37 2012

(require-extension coops)

(define (bar)
  (print "bar v1"))

(bar)

(define (bar)
  (print "bar v2"))

(bar)


(define-class <a> ())

(define b (make <a>))

(define-method (foo (c <a>))
  (print "foo v1 on " c))

(foo b)

(define-method (foo (c <a>))
  (print "foo v2 on " c))

(foo b)

;; Output:
;; bar v1
;; bar v2
;; foo v1 on #<coops instance of `<a>'>
;; foo v1 on #<coops instance of `<a>'>

hmmm pasted by certainty on Wed May 16 10:49:16 2012

#;2> (define-class <a> ())
#;3> (define b (make <a>))
#;4> 
#;4> (define-method (foo (c <a>))
--->   (print "foo v1 on " c))

Note: implicitly defining generic-procedure: foo
#t
#;5> 
#;5> (define-method (foo (c <a>))
--->   (print "foo v2 on " c))
#t
#;6> (foo b)
foo v2 on #<coops instance of `<a>'>
#;7> 

indeed added by megane on Wed May 16 10:57:32 2012

(require-extension coops)

(define (bar)
  (print "bar v1"))

(bar)

(define (bar)
  (print "bar v2"))

(bar)


(define-class <a> ())

(define b (make <a>))

(define-method (foo (c <a>))
  (print "foo v1 on " c))

;(foo b) <-- don't call foo

(define-method (foo (c <a>))
  (print "foo v2 on " c))

(foo b)

;; Output:
;; bar v1
;; bar v2
;; foo v2 on #<coops instance of `<a>'>