summaryrefslogtreecommitdiffstats
path: root/srfi/srfi-146-hash-impl.scm
diff options
context:
space:
mode:
authorGravatar Arvydas Silanskas 2022-08-06 11:35:06 +0300
committerGravatar Arvydas Silanskas 2022-08-06 11:35:06 +0300
commitfd4585b6e0ac67ae9591a4183fb7c82ed3a30218 (patch)
tree8da6ad7744c6b26cbcf3acdd7d08e83c33c5e014 /srfi/srfi-146-hash-impl.scm
parentMerge branch 'master' of https://github.com/johnwcowan/srfi-225 (diff)
return alists; refactor structure
Diffstat (limited to 'srfi/srfi-146-hash-impl.scm')
-rw-r--r--srfi/srfi-146-hash-impl.scm72
1 files changed, 0 insertions, 72 deletions
diff --git a/srfi/srfi-146-hash-impl.scm b/srfi/srfi-146-hash-impl.scm
deleted file mode 100644
index 609fce9..0000000
--- a/srfi/srfi-146-hash-impl.scm
+++ /dev/null
@@ -1,72 +0,0 @@
-(define hash-mapping-dto
- (let ()
-
- (define (prep-dto-arg proc)
- (lambda (dto . args)
- (apply proc args)))
-
- (define (hashmap-map* dto proc dict)
- (hashmap-map (lambda (key value)
- (values key (proc key value)))
- (dict-comparator dto dict) dict))
-
- (define (hashmap-find-update* dto dict key failure success)
- (call/cc
- ;; escape from whole hashmap-search entirely, when success / failure
- ;; return something other than through passed in continuation procedures
- (lambda (k)
- (define-values
- (new-dict ignored)
- (hashmap-search dict key
- (lambda (insert ignore)
- ;; handle when continuation procedure is called
- ;; and force it into tail call
- (call/cc (lambda (k2)
- (define result
- ;; calls to insert / ignore / update / remove
- ;; can return unspecified amount of values,
- ;; hence call-with-values approach
- (failure (lambda (value) (call-with-values (lambda () (insert value #f)) k2))
- (lambda () (call-with-values (lambda () (ignore #f)) k2))))
- ;; neither insert nor ignore called -- return result to top level escape
- (k result))))
- (lambda (key value update remove)
- (call/cc (lambda (k2)
- (define result
- (success
- key
- value
- (lambda (new-key new-value) (call-with-values (lambda () (update new-key new-value #f)) k2))
- (lambda () (call-with-values (lambda () (remove #f)) k2))))
- (k result))))))
- new-dict)))
-
- (make-dto
- dictionary?-id (prep-dto-arg hashmap?)
- dict-pure?-id (lambda _ #t)
- dict-map-id hashmap-map*
- dict-empty?-id (prep-dto-arg hashmap-empty?)
- dict-contains?-id (prep-dto-arg hashmap-contains?)
- dict-ref-id (prep-dto-arg hashmap-ref)
- dict-ref/default-id (prep-dto-arg hashmap-ref/default)
- dict-set-id (prep-dto-arg hashmap-set)
- dict-adjoin-id (prep-dto-arg hashmap-adjoin)
- dict-delete-id (prep-dto-arg hashmap-delete)
- dict-delete-all-id (prep-dto-arg hashmap-delete-all)
- dict-replace-id (prep-dto-arg hashmap-replace)
- dict-intern-id (prep-dto-arg hashmap-intern)
- dict-update-id (prep-dto-arg hashmap-update)
- dict-update/default-id (prep-dto-arg hashmap-update/default)
- dict-pop-id (prep-dto-arg hashmap-pop)
- dict-filter-id (prep-dto-arg hashmap-filter)
- dict-remove-id (prep-dto-arg hashmap-remove)
- dict-find-update-id hashmap-find-update*
- dict-size-id (prep-dto-arg hashmap-size)
- dict-count-id (prep-dto-arg hashmap-count)
- dict-keys-id (prep-dto-arg hashmap-keys)
- dict-values-id (prep-dto-arg hashmap-values)
- dict-entries-id (prep-dto-arg hashmap-entries)
- dict-fold-id (prep-dto-arg hashmap-fold)
- dict-map->list-id (prep-dto-arg hashmap-map->list)
- dict->alist-id (prep-dto-arg hashmap->alist)
- dict-comparator-id (prep-dto-arg hashmap-key-comparator))))