fre*_*low 13 haskell function operators prefix
> :t (+1)
(+1) :: Num a => a -> a
> :t (-1)
(-1) :: Num a => a
Run Code Online (Sandbox Code Playgroud)
为什么第二个不是功能?我必须写(+(-1))或有更好的方法吗?
这是因为(-1)被解释为否定的,但是(+1)被解释为curried函数(\x->1+x).
在haskell中,(a **)是语法糖(**) a,而且(** a)是(\x -> x ** a).然而,这(-)是一种特殊情况,因为它既是一元运算符(negate)又是二元运算符(减号).因此,这种语法糖不能在这里明确地应用.如果你想要,(\x -> a - x)你可以写(-) a,并且,正如Currying减法中已经回答的那样,你可以使用这些函数negate并subtract消除一元- 函数和二元函数之间的歧义.