summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Arvydas Silanskas 2020-10-18 15:39:41 +0300
committerGravatar Arvydas Silanskas 2020-10-18 15:39:41 +0300
commitfbddc05232ef3b57ead31e789ad0b72ad53f00b7 (patch)
tree396c3614e240bb3fdad0c96585fd625db40549d0
parentremove old test file (diff)
alist dict predicate check only first element; plist and alist size remove unique key check
-rw-r--r--alist-impl.scm10
-rw-r--r--plist-impl.scm12
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))