function - +1 和 -1 的区别

标签 function haskell operators prefix

> :t (+1)
(+1) :: Num a => a -> a

> :t (-1)
(-1) :: Num a => a

为什么第二个不是函数?我必须写(+(-1))或者,还有更好的方法?

最佳答案

这是因为 (-1)被解释为负数,但是 (+1)被解释为柯里化(Currying)函数 (\x->1+x) .

在 haskell 中,(a **)(**) a 的语法糖, 和 (** a)(\x -> x ** a) .然而(-)是一种特殊情况,因为它既是一元运算符(否定)又是二元运算符(减号)。因此,这种语法糖不能在这里明确应用。当你想要(\x -> a - x)你可以写(-) a , 并且,正如 Currying subtraction 中已经回答的那样,您可以使用函数negatesubtract消除一元和二元之间的歧义-功能。

关于function - +1 和 -1 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210182/

相关文章:

swift - 定时器只执行一次函数

javascript - 未捕获的类型错误 : undefined is not a function (on video pause function)

r - 计算函数的反函数

Haskell 因 runST 和 Data.Vector.Unboxed.Mutable 崩溃

javascript - 了解递增

java : "implements operator?"

R类型转换expression()function()

haskell - `do` 和 `where` 怎么混?

scala - 为什么 Scala 没有为每个 monad 定义返回/单元函数(与 Haskell 相比)?

C++ 为什么 operator-> 会中断嵌套的 operator() 调用?