diff options
| author | 2020-10-18 15:39:41 +0300 | |
|---|---|---|
| committer | 2020-10-18 15:39:41 +0300 | |
| commit | fbddc05232ef3b57ead31e789ad0b72ad53f00b7 (patch) | |
| tree | 396c3614e240bb3fdad0c96585fd625db40549d0 | |
| parent | remove old test file (diff) | |
alist dict predicate check only first element; plist and alist size remove unique key check
| -rw-r--r-- | alist-impl.scm | 10 | ||||
| -rw-r--r-- | plist-impl.scm | 12 |
2 files changed, 5 insertions, 17 deletions
diff --git a/alist-impl.scm b/alist-impl.scm index 8f832dc..fab350d 100644 --- a/alist-impl.scm +++ b/alist-impl.scm @@ -1,7 +1,9 @@ (define (register-alist!) (define (alist? l) - (and (list? l) (every pair? l))) + (and (list? l) + (or (null? l) + (pair? (car l))))) (define (alist-map! proc alist) (map @@ -50,11 +52,7 @@ (else (handle-failure)))) (define (alist-size alist) - (define keys (map car alist)) - (define (fold-proc el set) - (lset-adjoin equal? set el)) - (define key-set (fold fold-proc '() keys)) - (length key-set)) + (length alist)) (define (alist-foreach proc alist) (define (proc* e) diff --git a/plist-impl.scm b/plist-impl.scm index f7f0571..ec0a9e7 100644 --- a/plist-impl.scm +++ b/plist-impl.scm @@ -75,17 +75,7 @@ (else (handle-failure)))) (define (plist-size plist) - (define keys - (let loop ((pl plist) - (keys '())) - (if (null? pl) - keys - (loop (cddr pl) - (cons (car pl) keys))))) - (define (fold-proc el set) - (lset-adjoin equal? set el)) - (define key-set (fold fold-proc '() keys)) - (length key-set)) + (length plist)) (define (plist-foreach proc plist) (let loop ((pl plist)) |
