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