diff options
Diffstat (limited to 'src/ChezScheme/rktboot/symbol.rkt')
-rw-r--r-- | src/ChezScheme/rktboot/symbol.rkt | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/ChezScheme/rktboot/symbol.rkt b/src/ChezScheme/rktboot/symbol.rkt deleted file mode 100644 index 3e5480862d..0000000000 --- a/src/ChezScheme/rktboot/symbol.rkt +++ /dev/null @@ -1,52 +0,0 @@ -#lang racket/base - -(provide oblist - s:string->symbol - register-symbols - - putprop getprop remprop - $sputprop $sgetprop $sremprop - - lookup-constant) - -(define syms (make-hasheq)) - -(define (oblist) - (hash-keys syms)) - -(define (s:string->symbol str) - (define s (string->symbol str)) - (hash-set! syms s #t) - s) - -(define (register-symbols v) - (cond - [(symbol? v) (hash-set! syms v #t)] - [(pair? v) - (register-symbols (car v)) - (register-symbols (cdr v))] - [(box? v) - (register-symbols (unbox v))] - [(vector? v) - (for ([i (in-vector v)]) - (register-symbols v))])) - - -(define (make-put-get ht) - (values - (lambda (sym key val) - (hash-set! syms sym #t) - (hash-update! ht sym (lambda (ht) (hash-set ht key val)) #hasheq())) - (lambda (sym key [def-val #f]) - (hash-ref (hash-ref ht sym #hasheq()) key def-val)) - (lambda (sym key) - (hash-update! ht sym (lambda (ht) (hash-remove ht key)) #hasheq())))) - -(define-values (putprop getprop remprop) (make-put-get (make-hasheq))) -(define-values ($sputprop $sgetprop $sremprop) (make-put-get (make-hasheq))) - -(define (lookup-constant key [fail #f]) - (or (getprop key '*constant* #f) - (if fail - (fail) - (error key "cannot find value")))) |