Haskell : Fonction Second
Exercices Corriges en Haskell : Fonction Second
Exercice corriges Programmation Fonctionnelle (Haskell)
Écrire une fonction en Haskell nommée second qui retourne le deuxième élément d’une liste qui en contient toujours au moins 2.
Correction :
second :: [a] -> a
second (_:x:_) = x
Explications :
La fonction second prend en entrée une liste d'éléments de type quelconque (a) et retourne le deuxième élément de cette liste. On suppose que la liste en entrée contient au moins deux éléments.
Le principe de résolution de cet exercice consiste à utiliser la notation des motifs (pattern matching) de Haskell pour extraire le deuxième élément de la liste.
Dans la définition de la fonction second, on utilise le motif _ : x : _ pour décrire une liste qui commence par un élément non utilisé (noté _), suivi d'un deuxième élément x, suivi d'une liste finale non utilisée (notée _). Le premier élément non utilisé permet d'ignorer le premier élément de la liste, et le dernier élément non utilisé permet d'ignorer tous les autres éléments.
Ainsi, la fonction second extrait le deuxième élément de la liste en associant l'élément x au deuxième élément de la liste, et en ignorant tous les autres éléments.
Notez que la signature de la fonction second indique que l'argument est une liste d'éléments de type quelconque ([a]) et que le résultat est un élément de la même type que les éléments de la liste (a). Si l'on passe une liste qui contient moins de deux éléments, ou si la fonction est utilisée avec un type différent de celui attendu, une erreur de type sera générée par le compilateur Haskell.
Autre Solution :
Une autre approche pour écrire la fonction second consiste à utiliser l'opérateur de liste (!!) qui permet d'accéder à un élément d'une liste à partir de son indice :
second :: [a] -> a
second xs = xs !! 1
Explications :
La fonction second prend en entrée une liste d'éléments de type quelconque (a) et retourne le deuxième élément de cette liste. On suppose que la liste en entrée contient au moins deux éléments.
Dans cette approche, on utilise l'opérateur de liste !! qui permet d'accéder à un élément de la liste à partir de son indice. Comme les indices de liste commencent à 0, on accède au deuxième élément de la liste en utilisant l'indice 1 (l'indice 0 correspondant au premier élément).
Ainsi, la fonction second retourne l'élément de la liste correspondant à l'indice 1, c'est-à-dire le deuxième élément.
Notez que cette approche est plus simple et plus directe que l'utilisation de la notation des motifs, mais elle peut être moins robuste en cas de liste vide ou de liste ne contenant qu'un seul élément. Dans ce cas, l'utilisation de l'opérateur !! avec un indice supérieur à la taille de la liste générera une erreur d'exécution (Index out of range). Il est donc important de vérifier que la liste en entrée contient au moins deux éléments avant d'utiliser cette approche.
Commentaires
-
- 1. Viviane Le 11/03/2023
Ouff intéressant -
- 2. Judith Le 08/03/2023
Merci -
- 3. nanij Le 07/03/2023
Vraiment fastoche -
- 4. Ivan Le 06/03/2023
Je vous remercie car c'est très intéressant -
- 5. Franck Duhamel Le 06/03/2023
Cours détaillé -
- 6. Artenysce Le 06/03/2023
Bonjour. Très intéressant. Merci -
- 7. steve nn Le 06/03/2023
Jolie tutoriel merci encore
Ajouter un commentaire