21 lines
573 B
Racket
21 lines
573 B
Racket
#lang racket/base
|
|
|
|
;; vectors as method tables
|
|
(struct kons (kar kdr)
|
|
#:methods gen:equal+hash
|
|
[(define (equal-proc x y rec)
|
|
(and (rec (kons-kar x) (kons-kar y))
|
|
(rec (kons-kdr x) (kons-kdr y))))
|
|
(define (hash-proc x rec) 12)
|
|
(define (hash2-proc x rec) 13)])
|
|
|
|
(module+ test
|
|
(require rackunit)
|
|
|
|
(check-equal? (kons 1 2) (kons 1 2))
|
|
(check-false (equal? (kons 1 2) 2))
|
|
(check-false (equal? 2 (kons 1 2)))
|
|
(check-false (equal? (kons 1 2) (kons 3 4)))
|
|
(check-equal? (equal-hash-code (kons 1 2)) 60)
|
|
)
|