Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (delete xs x)
- (define (iter xs ys x)
- (if (null? xs)
- (cons x (reverse ys))
- (if (equal? (car xs) x)
- (iter (cdr xs) ys x)
- (iter (cdr xs) (cons (car xs) ys) x ))))
- (iter xs '() (car xs)))
- (define (list->set xs)
- (define (iter xs ys)
- (if (null? xs)
- ys
- (iter (cdr (delete xs (car xs))) (cons (car xs) ys))))
- (iter xs '()))
- (define (set? xs)
- (if (null? xs)
- #t
- (= (length (list->set xs)) (length xs))))
- (define (union xs ys)
- (list->set (append xs ys)))
- (define (included? x xs)
- (if (null? xs)
- #f
- (begin (if (equal? x (car xs))
- #t
- (included? x (cdr xs))))))
- (define (intersection xs ys)
- (define (iter xs zs)
- (if (null? xs)
- zs
- (iter (cdr xs) (if (included? (car xs) ys)
- (cons (car xs) zs)
- zs))))
- (iter xs '()))
- (define (difference xs ys)
- (define (iter xs zs)
- (if (null? xs)
- (reverse zs)
- (iter (cdr xs) (if (included? (car xs) ys)
- zs
- (cons (car xs) zs)))))
- (iter xs '()))
- (define (symmetric-difference xs ys)
- (union (difference xs ys) (difference ys xs)))
- (define (set-eq? xs ys)
- (null? (difference xs ys)))
Add Comment
Please, Sign In to add comment