[英]Difference between Haskell ((< x) y) and (((<) x) y)
我无法理解为什么这些会有所不同。
Prelude> :t ((<) 3)
((<) 3) :: (Num a, Ord a) => a -> Bool
Prelude> ((<) 3) 2
False
Prelude>
Prelude> :t (< 3)
(< 3) :: (Num a, Ord a) => a -> Bool
Prelude> (< 3) 2
True
Prelude>
我怀疑有一个直截了当的答案,但我甚至不知道用什么词来描述第一和第二个案例之间的区别。 我很乐意编辑我的问题,一旦有人告诉我这是什么情况,使用正确的命名法。
(<) 3
适用3
为一体的第一(左)参数<
。 所以(<) 3 2
与3 < 2
相同。
(< 3)
是一个部分施加3
为一体的右操作数<
。 这是可以与二进制中缀运算符一起使用的特殊语法。 所以(< 3) 2
与2 < 3
相同。
要将3
作为左操作数应用于一个节,您可以写: (3 <)
。 因此(3 <) 2
与3 < 2
相同。
使用lambdas进行演示: (< 3)
与\\x -> x < 3
,并且(3 <)
与\\x -> 3 < x
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.