Re: Allowing incongruent methods

"Chris Double" <[email protected]> Tue, 06 Jul 2004 12:41:37 +1200
Newsgroups gmane.comp.lang.goo.general
Message-ID <[email protected]>
On Mon, 5 Jul 2004 18:46:55 -0500, "Eduardo Cavazos" wrote
>
> Here's an example of something I'd like to do in a CLOS like language,
> but haven't been able to. I'm wondering; does any language out there
> allow this?

Sisc Scheme's object system allows this (http://sisc.sourceforge.net).
The following works fine:

(define-generic range)
(define-method (range (<number> a) (<number> b) (<number> s))
  (if (> a b)
      '()
      (cons a (range (+ a s) b s))))

(define-method (range (<number> a) (<number> b))
  (range a b 1))

(define-method (range (<number> b))
  (range 0 b))

#;> (range 1 5 1)
 => (1 2 3 4 5)
#;> (range 1 5)
 => (1 2 3 4 5)
#;> (range 1 5 2)
 => (1 3 5)
#;> (range 6)
 => (0 1 2 3 4 5 6)

Is Goo still being maintained?

Chris.
-- 
  Chris Double
  [email protected]