> :t (+1)
(+1) :: Num a => a -> a
> :t (-1)
(-1) :: Num a => a
为什么第二个不是函数?我必须写吗(+(-1))
或者,还有更好的方法?
这是因为(-1)
然而被解释为消极的(+1)
被解释为柯里化函数(\x->1+x)
.
在哈斯克尔中,(a **)
是语法糖(**) a
, and (** a)
is (\x -> x ** a)
。然而(-)
是一种特殊情况,因为它既是一元运算符(否定)又是二元运算符(减号)。因此,这个语法糖不能明确地应用在这里。当你想要的时候(\x -> a - x)
你可以写(-) a
,并且,正如已经回答的那样柯里化减法 https://stackoverflow.com/questions/4454559/currying-subtraction/,您可以使用以下功能negate
and subtract
消除一元和二进制之间的歧义-
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)