42 lines
895 B
Racket
42 lines
895 B
Racket
#lang racket
|
|
|
|
(require racket/generic rackunit)
|
|
|
|
(define-namespace-anchor generic-env)
|
|
|
|
(define-syntax-rule (check-syntax exp ...)
|
|
(begin
|
|
(check-exn
|
|
exn:fail:syntax?
|
|
(lambda () (eval '(module foo racket/base
|
|
(require racket/generic)
|
|
exp)
|
|
(namespace-anchor->namespace generic-env))))
|
|
...))
|
|
|
|
(check-syntax
|
|
(define-generics stream
|
|
(stream-first stream)
|
|
(stream-rest stream)
|
|
(stream-empty? stream)
|
|
#:defaults
|
|
foo)
|
|
|
|
(define-generics stream
|
|
(stream-first stream)
|
|
(stream-rest stream)
|
|
(stream-empty? stream)
|
|
#:defaults
|
|
([list?
|
|
(define stream-first car)
|
|
(define stream-rest cdr)
|
|
(define stream-rest 5)
|
|
(define stream-empty? null?)]))
|
|
|
|
(define-generics stream
|
|
(stream-first stream)
|
|
(stream-rest stream)
|
|
(stream-empty? stream)
|
|
#:defaults
|
|
([])))
|