diff options
| author | 2020-10-18 01:36:50 +0300 | |
|---|---|---|
| committer | 2020-10-18 01:36:50 +0300 | |
| commit | df2693f79ac55b6700930353226a96e46f39af51 (patch) | |
| tree | 0569a377d0f552493dc4227a23ec23f36db37838 /internals.scm | |
| parent | internals impl; tests (diff) | |
tests against externals; registration; alist and plist implementations:
Diffstat (limited to 'internals.scm')
| -rw-r--r-- | internals.scm | 24 |
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 |
