Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- ;;----------------------------------------------ZAD 1----------------------------------------------
- (define/contract (suffixes l)
- (let ((a (new-∀/c 'a)))
- (-> (listof a) (listof (listof a))))
- (if (null? l)
- '()
- (cons l (suffixes (cdr l)))))
- ;;----------------------------------------------ZAD 2----------------------------------------------
- (define/contract (dist x y)
- (-> number? number? number?)
- (abs (- x y)))
- (define/contract (average x y)
- (-> number? number? number?)
- (/ (+ x y) 2))
- (define/contract (square x)
- (-> number? number?)
- (* x x))
- (define/contract (sqrt x)
- (->i ((argument (>=/c 0)))
- (result (argument) (and/c (>=/c 0)
- (if (> argument 1)
- (<=/c argument)
- (>=/c argument)))))
- ;; lokalne definicje
- ;; poprawienie przybliżenia pierwiastka z x
- (define (improve approx)
- (average (/ x approx) approx))
- ;; nazwy predykatów zwyczajowo kończymy znakiem zapytania
- (define (good-enough? approx)
- (< (dist x (square approx)) 0.0001))
- ;; główna procedura znajdująca rozwiązanie
- (define (iter approx)
- (cond
- [(good-enough? approx) approx]
- [else (iter (improve approx))]))
- (iter 1.0))
- ;;----------------------------------------------ZAD 3----------------------------------------------
- (define/contract (filter l p)
- (-> (and/c
- (let ((a (new-∀/c 'a)))
- (-> (listof a) (-> a boolean?) (listof a)))
- (->i ([l list?] [p procedure?])
- [result (l) (λ (r) (<= (length r) (length l)))])))
- (if (null? l)
- '()
- (if (p (car l))
- (cons (car l) (filter (cdr l) p))
- (filter (cdr l) p))))
- ;;----------------------------------------------ZAD 4----------------------------------------------
- (define-signature monoid^
- ((contracted
- [elem? (-> any/c boolean?)] [neutral elem?]
- [oper (-> elem? elem? elem?)])))
- ;;----------------------------------------------ZAD 5----------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement