projprog/HSK9.md

1.7 KiB

Haskell 9

Exercice 1

  1. Le typage statique permet d'éviter certaines erreurs de programmation en les capturant dès la compilation (comme ajouter un entier et une chaine de caractères par exemple).
  2. Y a des choses non typées en Haskell ? À la limite les commandes de l'interpréteur.
  3. :t 'a' affiche le type de l'objet 'a', c'est à dire Char.
  4. L'opérateur :: signifie ici est du type
  5. Int est un entier machine, de 32 ou 64 bits typiquement. Integer est un entier mathématique théoriquement non borné.
  6. Cette différence permet de coder des algorithmes «machine» comme les codages binaires, les opérations bit à bit, et les entiers Integer permettent de coder sans se soucier de dépassement de la capacité de l'entier, qui peut amener des bugs plutôt étranges. De telles considérations peuvent simplifier les preuves d'algorithme.
  7. Haskell prévoit les types Double et Float pour représenter les réels, respectivement sur 64 et 32 bits.
  8. Les booléens sont appelés Bool.
  9. Les caractères sont appelés Char.

Exercice 2

  1. Un type explicite est un type donné ... explictiement à une variable, sans le déduire du contexte.
  2. True est du type Bool (c'est un booléen).
  3. "string est du type [Char] (une liste de caractères)
  4. ('e', False) est du type (Char, Bool) (un 2-uplet avec un caractère en premier élément et un booléen en second élément).
  5. Les types de ces trois variables sont différents. Certes ils sont tous des tuples, mais tuple est une classe de types. Le premier est un tuple (Char, Bool), le second un tuple ([Char], Bool) et le dernier un tuple (Char, Bool, [Char]).