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)))))))
|
(cons (car els) res)))))))
|
||||||
|
|
||||||
;; Converts given list to a set with unique members
|
;; Converts given list to a set with unique members
|
||||||
(define (list->lset lst equality?)
|
(define (list->lset lst . equality?)
|
||||||
(let loop ((lst lst)
|
(let ((equality? (if (null? equality?)
|
||||||
(ls (make-lset equality?)))
|
equal?
|
||||||
(if (null? lst)
|
(car equality?))))
|
||||||
ls
|
(let loop ((lst lst)
|
||||||
(loop (cdr lst)
|
(ls (make-lset equality?)))
|
||||||
(lset-add ls (car lst))))))
|
(if (null? lst)
|
||||||
|
ls
|
||||||
|
(loop (cdr lst)
|
||||||
|
(lset-add ls (car lst)))))))
|
||||||
|
|
||||||
;; Converts the list set to plain list (effectively returning the
|
;; Converts the list set to plain list (effectively returning the
|
||||||
;; internal list)
|
;; internal list)
|
||||||
|
@ -192,6 +195,28 @@
|
||||||
(lset-member?
|
(lset-member?
|
||||||
(lset-add (make-lset string=?) "test")
|
(lset-add (make-lset string=?) "test")
|
||||||
"not"))
|
"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