16 lines
1.5 KiB
Markdown
16 lines
1.5 KiB
Markdown
# Haskell 8
|
|
|
|
1. Les chaines de caractères sont des listes de caractères.
|
|
2. Une liste a un seul type d'élément mais on peut rajouter des éléments en tête. Un tuple peut être constitué de variables de types différents, mais ne peut pas être agrandi.
|
|
3. Les tuples sont intérésants si on souhaite manipuler un jeu de données «en bloc».
|
|
4. (Un `s` s'est transformé en `d`). `sort` s'applique à une list et renvoie une liste contenant les mêmes éléments, mais dans l'ordre. `fst` prend en entrée un tuple, et renvoie le premier élément du tuple.
|
|
5. `sort` fonctionne pour des listes dont le type d'éléments étend la classe `Ord` (donc pas tous).
|
|
6. Dans ce code, `y` a dans le corps du `let` pour valeur `3`, le corps étant la partie `y+4`.
|
|
7. Cette expression correspond à la chaine de caractères `"dg"` (une liste de deux éléments).
|
|
8. L'expression indiquée renvoie un booléen de type `Bool`.
|
|
9. `sort` est une fonction alors que `:` est un constructeur. Une application pratique est que l'on peut faire du *pattern matching* sur `:` mais pas sur `sort`.
|
|
10. `map (*2) [1,4,7]` applique la fonction *multiplier par deux* à la liste donnée, ce qui renvoie la liste `[2,8,14]`.
|
|
11. `let addTwo=(+2) in addTwo 4` ou `let addTwo y = y+2 in addTwo 4`.
|
|
12. Dans cette expression, le pattern est `(t,q)` qui *match* n'importe quel tuple de 2 éléments (ou *2uplet* ou *paire*).
|
|
13. Ces deux expression renvoient la même valeur, puisque le type des listes est défini de manière inductive, `a:_:_:_` est une simplification syntaxique pour `a:(_:(_:_))`.
|