# Haskell 22 ### Exercice 1 1. Cette expression crée un type appelé `Vector` qui peut être instancié avec un seul constructeur: `Vec3` qui prend en paramètre trois flottants. 2. ``` magnitude :: Vector -> Float magnitude (Vec3 a b c) = sqrt (a*a+b*b+c*c)^ ``` ### Exercice 2 1. Cette expression crée un type polymorphique de vecteur à trois coordonées, qui peuvent être de n'importe quel type. 2. L'expression donnée est donc du type `Vector [Char]`. 3. Là où cette autre expression est du type `Vector Int` (ou plutôt `Num t => Vector t`) 4. Celle ci est du type Vector Float (on a forcé le type d'un élément, donc de t, donc du vecteur). 5. `data Liste t = Liste Integer [t]` 6. `initListe = Liste 0 []` 7. ``` ajouteListe::Liste t -> t -> Liste t ajouteListe (Liste n s) x = Liste (n+1) (x:s) ``` 8. Cette liste permet d'implémenter la fonction `length` en temps constant, au prix d'un coût à peine plus élevé lors du l'ajout et un petit peu plus de mémoire.