F#的所有管道运算符的优先级相同,而且全部都是左结合.因此,下例中的代码的计算顺序与加了括号后的计算顺序是相同的.
F#中的管道运算符的计算
> let add x y = x y;; |
也就是说,计算顺序为先执行函数调用部分,接下来与函数调用同样,从左往右开始,两个两个括起来进行计算。
但是,这样的话很难使用<|运算符。以下为个人的理解。
A
<|为右结合 |
同时如果使用两个<|
B
<|L为左结合 |
这样理解的话使用管道运算符起来相对容易一些。
思考两个参数的函数f,g,h时,因为程序一般是从左往右书写的,系统使用除最后一个参数之外的参数进行柯里化,采用f a (g b (h c d))的方式进行右结合,如果想首先给定参数,然后执行处理的时候(想要处理顺序与思考时的顺序一致,把f g h当作当中的运算符进行书写),就要改写成(((a f b) g c) h d)方式的左结合方式,这样就与思考时的顺序保持一致,变得更加自然了。(f,g,h带多少参数都一样)