Remove more internal contract usages

This commit is contained in:
Max New 2014-10-10 17:19:33 -04:00 committed by Robby Findler
parent f1403b70f2
commit 039eac7440

View File

@ -21,8 +21,9 @@
(provide enum
enum?
size
encode
decode
(contract-out
(encode (-> enum? any/c exact-nonnegative-integer?))
(decode (-> enum? exact-nonnegative-integer? any/c)))
empty/e
const/e
from-list/e
@ -85,16 +86,14 @@
(enum-size e))
;; decode : enum a, Nat -> a
(define/contract (decode e n)
(-> enum? exact-nonnegative-integer? any/c)
(define (decode e n)
(if (and (< n (enum-size e))
(>= n 0))
((enum-from e) n)
(redex-error 'decode "Index into enumerator out of range. Tried to decode ~s in an enum of size ~s" n (size e))))
;; encode : enum a, a -> Nat
(define/contract (encode e a)
(-> enum? any/c exact-nonnegative-integer?)
(define (encode e a)
((enum-to e) a))
;; Helper functions