  | Scheme - TP no 2 |
Scheme - TP no 2: 7. Éléments de corrigé
;; Partie 1
(define (carre x) (* x x))
(define (compose-functions l)
(if (null? (cdr l))
(eval (car l))
(lambda (x)
((eval (car l)) ((compose-functions (cdr l)) x)))))
;; Partie 2
(define (max-list l)
(if (null? (cdr l)) (car l)
(let ((max-tail (max-list (cdr l)))
(max-first (car l))
)
(if (> max-first max-tail) max-first max-tail))))
(define (max-elem . l)
(max-list l))
(define (map-list f l)
(if (null? l)
’()
(cons (f (car l))
(map-list f (cdr l)))))
;; Partie 3
(define ensemble-vide ’())
(define (ensemble-vide? e)
(null? e))
(define (ajouter-element x e)
(cond ((ensemble-vide? e) (list x))
((< x (car e)) (cons x e))
((= x (car e)) e)
(#t (cons (car e) (ajouter-element x (cdr e))))))
(define (union e1 e2)
(if (ensemble-vide? e1)
e2
(ajouter-element (car e1) (union (cdr e1) e2))))
(define (appartient? x e2)
(cond ((ensemble-vide? e2) #f)
((< x (car e2)) #f)
((= x (car e2)) #t)
(#t (appartient? x (cdr e2)))))
(define (intersection e1 e2)
(cond ((ensemble-vide? e1) ensemble-vide)
((appartient? (car e1) e2) (ajouter-element (car e1) (intersection (cdr e1) e2)))
(#t (intersection (cdr e1) e2))))
(define (inclusion? e1 e2)
(if (ensemble-vide? e1)
#t
(and (appartient? (car e1) e2) (inclusion? (cdr e1) e2))))
(define (creer-ensemble . l)
(define (creer-ensemble-local l)
(if (null? l)
ensemble-vide
(ajouter-element (car l) (creer-ensemble-local (cdr l)))))
(creer-ensemble-local l))
;; Partie 4
(define (fact n)
(if (<= n 1) 1 (* n (fact (- n 1)))))
(define (series f n)
(if (zero? n) 0
(+ (f n) (sum f (- n 1)))))
(define (e-power x n)
(define (e-taylor i)
(/ (expt x i) (fact i)))
(+ #i1 (series e-taylor n)))
;Somme de la série = exp(x)
;; Partie 5
(define x ’(salut toi))
(define y ’(salut toi))
(equal? x y)
(eq? x y)
(define x ’salut)
(define y ’salut)
(equal? x y)
(eq? x y)
;; Partie 6
(define y 0)
(set! y 9)
(define (creer-compteur)
(let ((i 0))
(list (lambda () i)
(lambda () (set! i (+ i 1)) i)
(lambda () (set! i (- i 1)) i)
)))
(define (valeur c) ((car c)))
(define (incremente-compteur c) ((cadr c)))
(define (decremente-compteur c) ((caddr c)))
  | Scheme - TP no 2 |