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

989 B

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.
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 []
ajouteListe::Liste t -> t -> Liste t
ajouteListe (Liste n s) x = Liste (n+1) (x:s)
  1. 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.