15 lines
983 B
Markdown
15 lines
983 B
Markdown
# Haskell 24
|
|
|
|
### Exercice 1
|
|
1. Cette expression crée le type `Vector t` et appele `print` sur une instance de ce type. Sauf que Haskell râle car le type susnommé n'a pas la classe `Show`.
|
|
2. En indiquant que Vector a la classe `Show`, alors ..... ben elle peut être affichée.
|
|
|
|
### Exercice 2
|
|
1. Dans la première expression, Haskell ne sait pas comment comparer ou tester l'égalité des éléments de type `Card` car le type n'est pas de la classe `Eq` ni `Ord`.
|
|
Dans le second cas, on a précisé les classes, donc Haskell est capable d'inférer les opérateurs d'égalité et de définition (se basant sur l'ordre des déclarations des constructeurs).
|
|
2. L'expression suivante crée un type Objet avec trois constructeurs, et définit comment l'objet instantie la classe `Eq`.
|
|
3.
|
|
- Pour définir `Eq`, il faut définir `==`
|
|
- Pour définir `Ord`, il faut définir `compare` de type `a -> a -> Ordering
|
|
- Pour définir `Show`, il faut définir `show` de type `a -> String`.
|