summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arvydas Silanskas 2020-10-18 15:59:29 +0300
committerGravatar Arvydas Silanskas 2020-10-18 15:59:29 +0300
commit8083cf8a46bd2aa359c0a84597ff6f985a2bba4a (patch)
tree4cc36dce2842ade22116d37eff30f4f1afe0c7f4
parentalist dict predicate check only first element; plist and alist size remove un... (diff)
fix plist size proc; rewrite dict-entries to use fold
-rw-r--r--internals.scm11
-rw-r--r--plist-impl.scm2
2 files changed, 10 insertions, 3 deletions
diff --git a/internals.scm b/internals.scm
index fe8263e..9652aaa 100644
--- a/internals.scm
+++ b/internals.scm
@@ -198,8 +198,15 @@
dictionary)))
(define (idict-entries vec dictionary)
- (values (dcall dkeys vec dictionary)
- (dcall dvalues vec dictionary)))
+ (define pair
+ (dcall dfold vec
+ (lambda (key value acc)
+ (cons (cons key (car acc))
+ (cons value (cdr acc))))
+ (cons '() '())
+ dictionary))
+ (values (reverse (car pair))
+ (reverse (cdr pair))))
(define (idict-fold vec proc knil dictionary)
(define acc knil)
diff --git a/plist-impl.scm b/plist-impl.scm
index ec0a9e7..4baa337 100644
--- a/plist-impl.scm
+++ b/plist-impl.scm
@@ -75,7 +75,7 @@
(else (handle-failure))))
(define (plist-size plist)
- (length plist))
+ (/ (length plist) 2))
(define (plist-foreach proc plist)
(let loop ((pl plist))