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 .