La fonction filter est une fonction très utile en Haskell qui permet de filtrer les éléments d'une liste selon un prédicat donné en argument. Elle prend deux arguments : une fonction booléenne appelée prédicat et une liste d'éléments. La fonction retourne une nouvelle liste contenant les éléments de la liste d'entrée pour lesquels le prédicat est vrai.La fonction filter est une fonction très utile en Haskell qui permet de filtrer les éléments d'une liste selon un prédicat donné en argument. Elle prend deux arguments : une fonction booléenne appelée prédicat et une liste d'éléments. La fonction retourne une nouvelle liste contenant les éléments de la liste d'entrée pour lesquels le prédicat est vrai.
Voici la signature de la fonction filter en Haskell :
filter :: (a -> Bool) -> [a] -> [a]
Le premier argument est une fonction qui prend un élément de type a et retourne un booléen (True ou False). Le deuxième argument est une liste d'éléments de type a. La fonction filter renvoie une nouvelle liste d'éléments de type a qui satisfont le prédicat.
Voici quelques exemples d'utilisation de la fonction filter :
-- Retourne une liste contenant tous les éléments pairs de la liste originale
filter (\x -> x `mod` 2 == 0) [1,2,3,4,5,6,7,8,9,10] -- [2,4,6,8,10]
-- Retourne une liste contenant tous les éléments de longueur supérieure à 3
filter (\s -> length s > 3) ["a", "ab", "abc", "abcd", "abcde"] -- ["abcd", "abcde"]
La fonction filter est très pratique pour éliminer des éléments indésirables d'une liste ou pour ne garder que certains éléments selon certains critères. Il est également possible d'utiliser des fonctions prédéfinies en Haskell avec filter. Par exemple, pour obtenir tous les nombres premiers d'une liste d'entiers, on peut écrire :
primes :: [Int] -> [Int]
primes xs = filter isPrime xs
où isPrime est une fonction qui vérifie si un nombre est premier ou non.
En résumé, la fonction filter est un outil très pratique en Haskell qui permet de filtrer les éléments d'une liste selon un prédicat donné en argument. Elle est utilisée pour éliminer des éléments indésirables ou pour ne garder que certains éléments d'une liste selon certains critères.