Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define/contract (filter f xs)
- (parametric->/c [a] (-> (-> a boolean?) (listof a) (listof a)))
- (if (null? xs)
- null
- (if (f (car xs))
- (cons (car xs) (filter f (cdr xs)))
- (filter f (cdr xs)))))
- (filter odd? '(1 2 3 4 5 6 7 8 9))
- (define (contains a xs)
- (member a xs))
- (define (count a xs)
- (if (null? xs)
- 0
- (if (equal? a (car xs))
- (+ 1 (count a (cdr xs)))
- (count a (cdr xs)))))
- (define (all-inside xs f)
- (lambda (y)
- (define (iter xs)
- (if (null? xs)
- #t
- (if (and (f (car xs)) (not (contains (car xs) y)))
- #f
- (iter (cdr xs)))))
- (define (iter2 xs ys);;zmienic na contains
- (if (null? xs)
- #t
- (if (not (= (count (car xs) ys) (count (car xs) xs)))
- #f
- (iter2 (cdr xs) ys))))
- (and (iter xs) (iter2 y xs))))
- (define/contract (filter2 f xs)
- (->i ([f procedure?]
- [x (listof any/c)])
- [result (f x) (and/c list?
- (all-inside x f))])
- (if (null? xs)
- null
- (if (f (car xs))
- (cons (car xs) (filter2 f (cdr xs)))
- (filter2 f (cdr xs)))))
- (filter2 odd? '(1 2 3 4 5 6 7))
Add Comment
Please, Sign In to add comment