aboutsummaryrefslogtreecommitdiffstats
path: root/set.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2024-09-27 11:16:22 -0400
committerGravatar Peter McGoron 2024-09-27 11:16:22 -0400
commitba26544bec78e491c7836da4f7438739ce0a8935 (patch)
treeb06bed159a4f3df5fbd0f6a58243494657ae21df /set.scm
parentRevert "object: rename" (diff)
Revert "object: change to a stateful table"
Diffstat (limited to 'set.scm')
-rw-r--r--set.scm36
1 files changed, 0 insertions, 36 deletions
diff --git a/set.scm b/set.scm
index 6aa661d..52d10b6 100644
--- a/set.scm
+++ b/set.scm
@@ -467,42 +467,6 @@
smap
pairs)))
-;;; SYMBOL-TABLE:
-;;;
-;;; A stateful map from symbols to values.
-;;;
-;;; (SET! KEY VAL)
-;;; (DELETE! KEY)
-;;; (GET KEY)
-;;; (TYPE)
-(define symbol-table
- (lambda ()
- (let ((table '()))
- (letrec ((insert!
- (lambda (key val)
- (let ((ret (smap:insert table
- (symbol->string key)
- val)))
- (set! table (car ret))
- (cdr ret))))
- (delete! (lambda (key) (smap:delete table (symbol->string
- key))))
- (search
- (lambda (key . default)
- (let ((ret (smap:search table (symbol->string key))))
- (if (null? ret)
- (if (null? default)
- #f
- (car default))
- (map:val ret))))))
- (lambda (op . args)
- (cond
- ((eq? op 'set!) (apply insert! args))
- ((eq? op 'delete!) (apply delete! args))
- ((eq? op 'get) (apply search args))
- ((eq? op 'type) 'symbol-table)
- (else (error 'symbol-table 'unknown op args))))))))
-
;;; ;;;;;
;;; Tests
;;; ;;;;;