projprog/HSK24.md
2022-01-08 04:21:26 +01:00

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`.