38 lines
623 B
Scheme
38 lines
623 B
Scheme
|
; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees. See file COPYING.
|
||
|
|
||
|
|
||
|
(define-generic g &g)
|
||
|
|
||
|
(define-method &g ((x :number)) 'win)
|
||
|
|
||
|
(define-method &g ((n :integer))
|
||
|
(if (= n 13)
|
||
|
(next-method)
|
||
|
'ok))
|
||
|
|
||
|
(define-method &g ((s :symbol))
|
||
|
(if (= s 13)
|
||
|
(next-method)
|
||
|
'ok))
|
||
|
|
||
|
; (g 1/2) => 'win
|
||
|
; (g 10) => 'ok
|
||
|
; (g 13) => 'win
|
||
|
|
||
|
|
||
|
(define-generic elt &elt)
|
||
|
|
||
|
(define-method &elt ((x :vector) y)
|
||
|
(vector-ref x y))
|
||
|
|
||
|
(define-method &elt ((x :string) y)
|
||
|
(string-ref x y))
|
||
|
|
||
|
(define-method &elt ((x :list) y)
|
||
|
(list-ref x y))
|
||
|
|
||
|
; Generic length
|
||
|
|
||
|
; (define-generic-function glength ((s :sequence)))
|
||
|
|