Salut,
J'aimerais de l'aide pour cet exo si possible :
On s'intéresse à la fonction (unzip AL) prenant une A-liste AL ((a b) ...) et retournant la liste à deux éléments (L1 L2) où L1 [resp. L2] est la liste des premiers [resp. seconds] éléments des couples de AL :
a) Programmez (unzip AL) de manière fonctionnelle récursive enveloppée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 > (unzip '((a 1) (b 2) (c 3))) ((a b c) (1 2 3))
b) Programmez (unzip-it AL) de manière fonctionnelle itérative.
c) Programmez (unzip-os AL) en une ligne, à l'ordre supérieur.
-----------
En fait, il me semble avoir trouvé pour le b et le c. Mais je ne suis pas du tout sûr. J'aurais surtout besoin d'aide pour le a) . En fonctionnel récursif enveloppé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 b) (define (unzip-it AL) ; Fonctionnel itératif (define (iter L type) (if (null? L) L (if (equal? type 'first) (cons (caar L) (iter (cdr L) type)) (cons (cadar L) (iter (cdr L) type))))) (list (iter AL 'first) (iter AL 'second)))Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 c) (define (unzip-os AL) ; Ordre supérieur (build-list 2 (lambda (i) (build-list (length AL) (lambda (j) (list-ref (list-ref AL j) i))))))
Partager