Dies war eine Designentscheidung in der Sprache. -1
ist eine Zahl, aber ihre Verwendung in diesem Zusammenhang hängt nicht mit der Funktion zusammen(-)
. (Wie Ackdari in seiner Antwort erwähnt, hängt diese Verwendung mit der Funktion zusammen negate
.) Es gibt einige Kompromisse, die dies ermöglichen:
Sie können kein rechtes Stück des (-)
Operators nehmen. Als Problemumgehung bietet Haskell die subtract
Funktion.
Sie können keine negative Ganzzahl ohne Klammern schreiben, es sei denn, sie steht am Anfang einer Zuweisung (z. B. direkt nach =
oder ->
). Dies erzeugt einen Analysefehler:
let x = 8 * -1
Stattdessen sollte es geschrieben werden als
let x = 8 * (-1)
Dies ist jedoch in Ordnung:
let x = -1 * 8
Dies wurde als angemessener Kompromiss für die Designer der Sprache angesehen.