Answers:
它说,答案已经在haskell-wiki中了,
一元减号是Prelude函数的语法糖
negate
因此函数(-)始终是a - b函数,如果您编写像let x = -y编译器这样的代码
,它将转换为let x = negate y。
一元减法在Haskell中很特殊。如报告第3.4节所述:
特殊形式表示前缀取反,这是Haskell中唯一的前缀运算符,并且是的语法。二进制运算符不一定引用Prelude中的定义;它可能会被模块系统反弹。但是,一元将始终引用前奏中定义的功能。运算符的本地含义与一元否定之间没有联系。
-enegate (e)---negate-