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 @
.
Écrire la fonction
longueur
telle quelongueur l
est le nombre d'éléments del
.val longueur : 'a list -> int = <fun>
Écrire la fonction
appartient
telle queappartient e l
retournetrue
sie
est dansl
,false
sinon.val appartient : 'a -> 'a list -> bool = <fun>
Écrire la fonction
rang
telle querang e l
retourne la position dee
sie
est dansl
(attention, la première position est1
), et retourne0
sinon.val rang : 'a -> 'a list -> int = <fun>
Écrire la fonction
concatl
telle queconcatl l1 l2
retourne la concaténation des listesl1
etl2
.val concatl : 'a list -> 'a list -> 'a list = <fun>
Écrire la fonction
debliste
telle quedebliste l n
retourne la liste constituée desn
premiers éléments del
. Sin
est trop grand, retourner la liste en entier.val debliste : 'a list -> int -> 'a list = <fun>
Écrire la fonction
finliste
telle quefinliste l n
retourne la liste constituée desn
derniers éléments del
. Sin
est trop grand, retourner la liste en entier.val finliste : 'a list -> int -> 'a list = <fun>
Écrire la fonction
remplace
telle queremplace x y l
retourne la listel
dans laquelle toutes les occurences dex
sont remplacées pary
.val remplace : 'a -> 'a -> 'a list -> 'a list = <fun>
Écrire la fonction
entete
telle queentete l l1
retournetrue
sil
est un préfixe del1
, etfalse
sinon.val entete : 'a list -> 'a list -> bool = <fun>
Écrire la fonction
sousliste
telle quesousliste l l1
retournetrue
sil
est une sous-liste del1
, etfalse
sinon.val sousliste : 'a list -> 'a list -> bool = <fun>
Écrire la fonction
oter
telle queoter l l1
retourne la listel1
de laquelle on a enlevél
sil1
commence parl
, et la listel1
sinon.val oter : 'a list -> 'a list -> 'a list = <fun>
Écrire la fonction
remplacel
telle queremplacel l1 l2 l
retourne la listel
où toutes les occurrences disjointes del1
ont été remplacées parl2
, en parcourantl
de gauche à droite. On supposera quel1
n'est pas la liste vide.val remplacel : 'a list -> 'a list -> 'a list -> 'a list = <fun>
Écrire la fonction
supprimel
telle quesupprimel l1 l
est la listel
où toutes les occurrences disjointes del1
ont été supprimées, en parcourantl
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:
Optionnel Étant donnée une liste d'entiers
l
, on considère toutes ses sous-listesli
, et pour chaque sous-liste la sommesi
des entiers qu'elle contient. Écrire la fonctionmaxl
qui retourne le plus grandsi
. Est-il possible de le calculer en ne parcourant la liste qu'une fois ?val maxl : int list -> int = <fun>