summaryrefslogtreecommitdiffstats
path: root/internals.scm
diff options
context:
space:
mode:
authorGravatar Arvydas Silanskas 2020-10-18 01:36:50 +0300
committerGravatar Arvydas Silanskas 2020-10-18 01:36:50 +0300
commitdf2693f79ac55b6700930353226a96e46f39af51 (patch)
tree0569a377d0f552493dc4227a23ec23f36db37838 /internals.scm
parentinternals impl; tests (diff)
tests against externals; registration; alist and plist implementations:
Diffstat (limited to 'internals.scm')
-rw-r--r--internals.scm24
1 files changed, 12 insertions, 12 deletions
diff --git a/internals.scm b/internals.scm
index c732684..fe8263e 100644
--- a/internals.scm
+++ b/internals.scm
@@ -46,7 +46,7 @@
((null? objs)
dictionary)
((null? (cdr objs))
- (error "mismatch of key / values argument list"))
+ (error "mismatch of key / values argument list" objs))
(else (let*-values
(((key) (car objs))
((value) (cadr objs))
@@ -58,13 +58,13 @@
(loop (cddr objs)
new-d))))))
-(define (idict-set! vec dictionary . objs)
+(define (idict-set! vec dictionary objs)
(idict-set!* vec dictionary #f objs))
-(define (idict-adjoin! vec dictionary . objs)
+(define (idict-adjoin! vec dictionary objs)
(idict-set!* vec dictionary #t objs))
-(define (idict-delete! vec dictionary . keys)
+(define (idict-delete! vec dictionary keys)
(dcall ddelete-all! vec dictionary keys))
(define (idict-delete-all! vec dictionary keylist)
@@ -122,7 +122,7 @@
(dcall dfor-each vec
(lambda (key value)
(define new-dict
- (dcall ddelete! vec dictionary key))
+ (dcall ddelete! vec dictionary (list key)))
(cont new-dict key value))
dictionary))))
(define empty? (dcall dempty? vec dictionary))
@@ -210,13 +210,13 @@
acc)
(define (idict-map->list vec proc dictionary)
- (call-with-values
- (lambda ()
- (dcall dentries vec dictionary))
- (lambda (keys vals)
- (map proc
- keys
- vals))))
+ (define reverse-lst
+ (dcall dfold vec
+ (lambda (key value lst)
+ (cons (proc key value) lst))
+ '()
+ dictionary))
+ (reverse reverse-lst))
(define (idict->alist vec dictionary)
(dcall dmap->list vec