TP4: Les Listes

Le fichier à remplir est ici. Il est autorisé d'ajouter rec au fonctions du fichier.

Les réponses aux questions de ce TP ne doivent pas utiliser le module List, ni la fonction de concaténations de listes @.

  1. Écrire la fonction longueur telle que longueur l est le nombre d'éléments de l.

    val longueur : 'a list -> int = <fun>
    
  2. Écrire la fonction appartient telle que appartient e l retourne true si e est dans l, false sinon.

    val appartient : 'a -> 'a list -> bool = <fun>
    
  3. Écrire la fonction rang telle que rang e l retourne la position de e si e est dans l (attention, la première position est 1), et retourne 0 sinon.

    val rang : 'a -> 'a list -> int = <fun>
    
  4. Écrire la fonction concatl telle que concatl l1 l2 retourne la concaténation des listes l1 et l2.

    val concatl : 'a list -> 'a list -> 'a list = <fun>
    
  5. Écrire la fonction debliste telle que debliste l n retourne la liste constituée des n premiers éléments de l. Si n est trop grand, retourner la liste en entier.

    val debliste : 'a list -> int -> 'a list = <fun>
    
  6. Écrire la fonction finliste telle que finliste l n retourne la liste constituée des n derniers éléments de l. Si n est trop grand, retourner la liste en entier.

    val finliste : 'a list -> int -> 'a list = <fun>
    
  7. Écrire la fonction remplace telle que remplace x y l retourne la liste l dans laquelle toutes les occurences de x sont remplacées par y.

    val remplace : 'a -> 'a -> 'a list -> 'a list = <fun>
    
  8. Écrire la fonction entete telle que entete l l1 retourne true si l est un préfixe de l1, et false sinon.

    val entete : 'a list -> 'a list -> bool = <fun>
    
  9. Écrire la fonction sousliste telle que sousliste l l1 retourne true si l est une sous-liste de l1, et false sinon.

    val sousliste : 'a list -> 'a list -> bool = <fun>
    
  10. Écrire la fonction oter telle que oter l l1 retourne la liste l1 de laquelle on a enlevé l si l1 commence par l, et la liste l1 sinon.

    val oter : 'a list -> 'a list -> 'a list = <fun>
    
  11. Écrire la fonction remplacel telle que remplacel l1 l2 l retourne la liste l où toutes les occurrences disjointes de l1 ont été remplacées par l2, en parcourant l de gauche à droite. On supposera que l1 n'est pas la liste vide.

    val remplacel : 'a list -> 'a list -> 'a list -> 'a list = <fun>
    
  12. Écrire la fonction supprimel telle que supprimel l1 l est la liste l où toutes les occurrences disjointes de l1 ont été supprimées, en parcourant l de gauche à droite. Attention Il faut prendre en compte le cas où l1 est vide.

    val supprimel : 'a list -> 'a list -> 'a list = <fun>
    

    Exemple:

  13. Optionnel Étant donnée une liste d'entiers l, on considère toutes ses sous-listes li, et pour chaque sous-liste la somme si des entiers qu'elle contient. Écrire la fonction maxl qui retourne le plus grand si. Est-il possible de le calculer en ne parcourant la liste qu'une fois ?

    val maxl : int list -> int = <fun>