4 Éléments de corrigé


  ;; partie 2.3
  (define (compose f g)
    (lambda (x) (f (g x))))
  (define (ajoute_fonctions f g)
    (lambda (x) (+ (f x) (g x))))
  
  (define (curryfie f)
    (lambda (x)
      (lambda (y) (f x y))))
  
  (define (decurryfie f)
    (lambda (x y)
      ((f x) y)))
  
  
  
  ;; partie 2.5
  (define (fact n)
    (if (<= n 1) 1 (* n (fact (- n 1)))))
  (define (fibo n)
    (if (<= n 1) 1 (+ (fibo (- n 1)) (fibo (- n 2)))))
  (define (id x)
    x)
  (define (iter f n)
    (cond ((= n 0) id) ((= n 1) f) (#t (compose f (iter f (- n 1))))))
  (define (pair n)
    (if (= n 0) #t (impair (- n 1))))
  (define (impair n)
    (cond ((= n 0) #f) ((= n 1) #t) (#t (pair (- n 1)))))
  
  
  
  ;; partie 3
  (define (der l)
    (let ((cdrl (cdr l)))
      (if (null? cdrl) (car l) (der cdrl))))
  (define (nieme l n)
    (if (= n 1) (car l) (nieme (cdr l) (- n 1))))
  (define (elem l e)
    (cond
     ((null? l) #f)
     ((= (car l) e) #t)
     (#t (elem (cdr l) e))))
  (define (concat x y)
    (if (null? x) y (cons (car x) (concat (cdr x) y))))
  (define (longueur l)
    (if (null? l) 0 (+ 1 (longueur (cdr l)))))