projprog/HSK2.md

1.2 KiB
Raw Blame History

Haskell 2

### Exercice 1

GHCi, version 8.6.5: http://www.haskell.org/ghc/  :? for help
Prelude> 2+5
7
Prelude> 5/2
2.5
Prelude> 2^4
16
Prelude> -3
-3
Prelude> 2 + -3

<interactive>:5:1: error:
    Precedence parsing error
        cannot mix + [infixl 6] and prefix `-' [infixl 6] in the same infix expression
Prelude> 2 + (-3)
-1
Prelude> 2-3
-1
Prelude> 

Haskell ne comprend pas 2 + - 3 car - et + ont la même précédence, et que dans ce cas, les instructions sont lues de gauche à droite, et lorsque le compilateur trouve - comme second terme de l'additon, il se plaint que ce n'est pas un nombre.

Exercice 2

  1. Non, le parenthesage impose au calcul 2+4 de se faire avant, contredisant la précédence plus élevée du *.
  2. Il y a 10 niveaux, de 1 à 9.
  3. Le niveau de précédence est indiqué à la toute fin après infixl.
  4. Pas le même résultat, l'opérateur ^ est infixe à droite contrairement à plus et moins qui sont infixes à gauche.
  5. (^) est donc associatif à droite.
  6. La direction de l'associativité est donnée en bas du :info : infixl pour une associativité à gauche et infixr pour une associativité à droite.