EN
PréludeChargé par défaut — aucun import nécessaire.

Opérations sur les listes

Synopsis
map : (a -> b) -> List a -> List b

Applique une fonction à chaque élément d'une liste, en gardant l'ordre. map f [1, 2, 3] = [f 1, f 2, f 3]

foldr : (a -> b -> b) -> b -> List a -> b

Pli à droite : remplace :: par f et Nil par z. foldr f z [a, b, c] = f a (f b (f c z))

foldrLazy : (a -> Lazy b -> b) -> Lazy b -> List a -> b

Pli à droite qui peut s'arrêter : f reçoit le pli du reste en attente (Lazy b) et ne le calcule que si elle le lit ; la graine z n'est lue que si le pli va jusqu'au bout. foldrLazy (\x rest -> p x || rest) False xs s'arrête au premier p x.

foldl : (b -> a -> b) -> b -> List a -> b

Pli à gauche : accumule depuis la gauche. foldl f z [a, b, c] = f (f (f z a) b) c Préférer foldl pour les sommes/produits (récursif terminal).

reverse : List a -> List a

Renverse une liste.

length : List a -> Nat

Nombre d'éléments d'une liste, sous forme de Nat.

isEmpty : List a -> Bool

La liste est-elle vide ?

head : List a -> Maybe a

Récupère sans risque le premier élément (Nothing si vide).

tail : List a -> Maybe (List a)

Récupère sans risque tous les éléments sauf le premier (Nothing si vide).

filter : (a -> Bool) -> List a -> List a

Ne conserve que les éléments qui satisfont un prédicat. filter even [1, 2, 3, 4] = [2, 4]

splitAt : Nat -> List a -> (List a, List a)

Scinde une liste après ses n premiers éléments : le préfixe de longueur n (ou la liste entière si elle est plus courte) apparié avec le reste, en un seul parcours. splitAt 2 [1, 2, 3, 4] = ([1, 2], [3, 4])

length : String -> Nat

Nombre de caractères d'une chaîne, sous forme de Nat. Un length nu fonctionne sur les deux : length s sur une String, length xs sur une liste.