繁体   English   中英

Haskell((<x)y)和(((<)x)y之间的差异

[英]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 23 < 2相同。

(< 3)是一个部分施加3为一体的右操作数< 这是可以与二进制中缀运算符一起使用的特殊语法。 所以(< 3) 22 < 3相同。

要将3作为左操作数应用于一个节,您可以写: (3 <) 因此(3 <) 23 < 2相同。

使用lambdas进行演示: (< 3)\\x -> x < 3 ,并且(3 <)\\x -> 3 < x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM