Exercice 1 : Récursion
Implémenter les fonctions suivantes, sans utiliser les fonctions du modules List, sauf List.rev :
 
 
- val last : 'a list -> 'a
 
 
 
 
 
 
 
 
 
 
- val cut : int -> 'a list -> 'a list * 'a list
 
 
 
 
 
 
 
 
-  
 
 
- val even_only : 'a list -> 'a list
 
 
 
 
 
 
 
 
 
 
 
 
- val split : 'a list -> 'a list * 'a list
 
 
 
 
 
 
 
 
 
 
 
 
- val invert_pairs : 'a list -> 'a list
 
 
 
 
 
 
 
 
 
 
 
 
- val couple : 'a list -> 'a * 'a list
 
 
 
 
 
 
 
 
 
 
- val triangle : 'a list -> 'a list list
 
 
Exercice 2 : Utilisation des fonctionnelles
Rependre l'exercice 1 , mais cette fois, il est interdit d'écrire une fonction récursive. En revanche, on autorise l'utilisation du module List.
Exercice 3 : Triplets Pythagoriciens
Implémenter la fonction de type suivant :
- val filter_find : 'a list -> ('a -> 'b list) -> 'b list
 
 
tel que filter_find l f est la liste des éléments    pour lesquels il existe    dans la liste    telle que    est un élément de  .
En déduire la liste de tous les triplets pythagoriciens    avec    d'entiers inférieurs à 100 . Il faudra utiliser la fonction interval vu en TP2.
Exercice 4 : Palindrome
Écrire une fonction vérifiant si une liste est un palindrome. La liste    est un palindrome si    pour tout  .