Esta fue una decisión de diseño en el lenguaje. -1
es un número, pero su uso en este contexto no(-)
está relacionado con la función . (Como Ackdari menciona en su respuesta, este uso está relacionado con la función negate
). Hay un par de compromisos que permiten que esto funcione:
No puede tomar una porción derecha del (-)
operador. Como solución alternativa, Haskell proporciona la subtract
función.
No puede escribir un número entero negativo sin paréntesis a menos que esté al comienzo de una tarea (por ejemplo, directamente después =
o ->
). Esto produce un error de análisis:
let x = 8 * -1
En cambio, debería escribirse como
let x = 8 * (-1)
Sin embargo, esto está bien:
let x = -1 * 8
Estos se consideraron compensaciones razonables para los diseñadores del lenguaje.