Default equality for list->lset, more testing.
This commit is contained in:
parent
ba50349f30
commit
ed8a11a5d8
1 changed files with 32 additions and 7 deletions
|
@ -132,13 +132,16 @@
|
|||
(cons (car els) res)))))))
|
||||
|
||||
;; Converts given list to a set with unique members
|
||||
(define (list->lset lst equality?)
|
||||
(let loop ((lst lst)
|
||||
(ls (make-lset equality?)))
|
||||
(if (null? lst)
|
||||
ls
|
||||
(loop (cdr lst)
|
||||
(lset-add ls (car lst))))))
|
||||
(define (list->lset lst . equality?)
|
||||
(let ((equality? (if (null? equality?)
|
||||
equal?
|
||||
(car equality?))))
|
||||
(let loop ((lst lst)
|
||||
(ls (make-lset equality?)))
|
||||
(if (null? lst)
|
||||
ls
|
||||
(loop (cdr lst)
|
||||
(lset-add ls (car lst)))))))
|
||||
|
||||
;; Converts the list set to plain list (effectively returning the
|
||||
;; internal list)
|
||||
|
@ -192,6 +195,28 @@
|
|||
(lset-member?
|
||||
(lset-add (make-lset string=?) "test")
|
||||
"not"))
|
||||
(test-equal? lset-count
|
||||
(lset-count (make-lset))
|
||||
0)
|
||||
(test-equal? lset-count
|
||||
(lset-count (lset-add (make-lset) 1))
|
||||
1)
|
||||
(test-equal? lset-count
|
||||
(lset-count (lset-add (make-lset) 1 2 3 1 2))
|
||||
3)
|
||||
(test-false lset-remove
|
||||
(lset-member?
|
||||
(lset-remove (lset-add (make-lset) 1 2 3) 2)
|
||||
2))
|
||||
(test-equal? list->lset
|
||||
(lset-count
|
||||
(list->lset '(1 2 3 1 2)))
|
||||
3)
|
||||
(test-equal? lset->list
|
||||
(length
|
||||
(lset->list
|
||||
(list->lset '(1 2 3 1 2))))
|
||||
3)
|
||||
))
|
||||
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue