C'était une décision de conception dans la langue. -1
est un nombre, mais son utilisation dans ce contexte n'est pas liée à la fonction(-)
. (Comme Ackdari le mentionne dans leur réponse, cette utilisation est liée à la fonction negate
.) Il existe quelques compromis qui permettent à cela de fonctionner:
Vous ne pouvez pas prendre une tranche droite de l' (-)
opérateur. Comme solution de contournement, Haskell fournit la subtract
fonction.
Vous ne pouvez pas écrire un entier négatif sans parenthèses sauf s'il se trouve au début d'une affectation (par exemple directement après =
ou ->
). Cela produit une erreur d'analyse:
let x = 8 * -1
Au lieu de cela, il devrait être écrit comme
let x = 8 * (-1)
Cependant, c'est très bien:
let x = -1 * 8
Ceux-ci ont été considérés comme des compromis raisonnables pour les concepteurs de la langue.