unique des éléments dans une liste haskell

bon d'accord, c'est probablement va être dans le prélude, mais: est-il une norme fonction de la bibliothèque pour trouver les éléments dans une liste? ma (re)mise en œuvre, pour la clarification, est:

has :: (Eq a) => [a] -> a -> Bool
has [] _ = False
has (x:xs) a
  | x == a    = True
  | otherwise = has xs a

unique :: (Eq a) => [a] -> [a]
unique [] = []
unique (x:xs)
  | has xs x  = unique xs
  | otherwise = x : unique xs
  • Votre has est également de série, c'est juste flip elem.
  • Ou même has xs = (`elem` xs).
  • pourquoi êtes-vous à l'aide de elem comme infixe?
  • Parce que elem a type Eq a => a -> [a] -> Bool afin de l'utiliser comme un infixe la section de fonctionnement fait xs le deuxième argument. (`elem` xs) est délactosé à (\x -> elem x xs) qui est ce que nous voulons ici!
InformationsquelleAutor muhmuhten | 2010-06-23