2.0 KiB
2.0 KiB
Haskell 12
Exercice 1
- Cela renvoie les 10 première éléments de la suite (infinie) arithmétique de premiers termes 4 puis 8.
- Cela renvoie la liste des entiers de 1 à 10 multipliés par 4 (aussi appelée table de 4).
- Dans la commande précédente,
x <- [1..10]signifie «pour x prenant les valeurs de la liste[1..10]. - La partie à gauche est la fonction à appliquer afin d'obtenir le résultat.
- Dans cet exemple, la partie a gauche signifie «multiplier chaque élément de la liste par 4».
- Cette liste est donc le multiplié par 4 de chaque élément de la liste
[1..10].
Exercice 2
- On obtient la liste
[20,24,28,32,36,40]. - La virgule signifie «tel que». La partie à gauche est une expression booléene formant un filtre sur les valeurs de la liste.
- On peut ajouter le prédicat
x/=6donant l'expression[x*4 | x <- [1..10],x*4 > 16,x/=4].
Exercice 3
- On obtient la liste
[999,999,999,999,666,666,666,666,666,666]. - En effet pour chaque élément de la liste
[1..10], si son quadruple est plus grand strictement que 16 (donc si le nombre est strictement plus grand que 4), alors afficher 666 sinon afficher 999. - Les prédicats peuvent seulement limiter le nombre d'éléments en sortie, ce qui ne nous permet pas d'avoir les 10 éléments demandés.
Exercice 4
[x | x <- [1..35], mod x 2 /= 0]
Exercice 5
okko :: [Int] -> [[Char]]
okko xs = [if x<10 then "OK" else "KO" | x <- xs]
Exercice 6
addList :: [Int] -> [Int] -> [Int]
addList xs ys = [x+y | x <- xs, y <- ys]
Exemple:
addList [1..5] [10,20..50]
[11,21,31,41,51,12,22,32,42,52,13,23,33,43,53,14,24,34,44,54,15,25,35,45,55]
Exercice 7
Avec comme en-tête de fichier {-# LANGUAGE ParallelListComp #-}
length2 :: [a] -> Int
length2 xs = last [n | _ <- xs | n <- [2,4..]]
Le symbole _ signifie que l'on utilisera pas la valeur que cette variable prendra.
Exercice 8
[[x | x <- [1..10] , (mod x 2) == i] | i <- [0,1]]