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