22 lines
581 B
Racket
22 lines
581 B
Racket
#lang racket/base
|
|
(require racket/contract
|
|
"lang-struct.rkt")
|
|
|
|
(provide
|
|
(contract-out
|
|
[lang-enumerators (-> (listof nt?) (hash/c symbol? enum?))]
|
|
[pat-enumerator (-> (hash/c symbol? enum?)
|
|
any/c ;; pattern
|
|
enum?)]
|
|
[enum-ith (-> enum? exact-nonnegative-integer? any/c)]
|
|
[enum? (-> any/c boolean?)]))
|
|
|
|
(struct enum ())
|
|
|
|
(define (lang-enumerators nts) (make-hash))
|
|
(define (pat-enumerator li p)
|
|
(unless (equal? p '(name natural natural))
|
|
(error 'enum.rkt "not yet implemented"))
|
|
(enum))
|
|
(define (enum-ith e i) i)
|