diff options
| author | 2020-10-18 15:59:29 +0300 | |
|---|---|---|
| committer | 2020-10-18 15:59:29 +0300 | |
| commit | 8083cf8a46bd2aa359c0a84597ff6f985a2bba4a (patch) | |
| tree | 4cc36dce2842ade22116d37eff30f4f1afe0c7f4 | |
| parent | alist 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.scm | 11 | ||||
| -rw-r--r-- | plist-impl.scm | 2 |
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)) |
