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.

Haskell pandacodeur

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.

  • 7 votes. Moyenne 4.2 sur 5.

Commentaires

  • Viviane

    1 Viviane Le 11/03/2023

    Ouff intéressant
  • Judith

    2 Judith Le 08/03/2023

    Merci
  • nanij

    3 nanij Le 07/03/2023

    Vraiment fastoche
  • Ivan

    4 Ivan Le 06/03/2023

    Je vous remercie car c'est très intéressant
  • Franck Duhamel

    5 Franck Duhamel Le 06/03/2023

    Cours détaillé
  • Artenysce

    6 Artenysce Le 06/03/2023

    Bonjour. Très intéressant. Merci
  • steve nn

    7 steve nn Le 06/03/2023

    Jolie tutoriel merci encore

Ajouter un commentaire

Anti-spam