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]