F#入门-第三章 功能性-第六节 管道运算符

    F#的所有管道运算符的优先级相同,而且全部都是左结合.因此,下例中的代码的计算顺序与加了括号后的计算顺序是相同的.

F#中的管道运算符的计算
> let add x y = x   y;;
val add : int -> int -> int
> add 2 <| add 3 4 |> add <| 3;;
val it : int = 12
> ((((add 2) <| (add 3 4)) |> add) <| 3);;
val it : int = 12


    也就是说,计算顺序为先执行函数调用部分,接下来与函数调用同样,从左往右开始,两个两个括起来进行计算。

    但是,这样的话很难使用<|运算符。以下为个人的理解。

A
<|为右结合
|>为左结合
(<|的优先级) ≧ (|>的优先级)


    同时如果使用两个<|

B
<|L为左结合
<|R为右结合
|>为左结合
(<|L的优先级) > (<|R的优先级)
(<|R的优先级) ≧ (|>的优先级)


    这样理解的话使用管道运算符起来相对容易一些。

    思考两个参数的函数f,g,h时,因为程序一般是从左往右书写的,系统使用除最后一个参数之外的参数进行柯里化,采用f a (g b (h c d))的方式进行右结合,如果想首先给定参数,然后执行处理的时候(想要处理顺序与思考时的顺序一致,把f g h当作当中的运算符进行书写),就要改写成(((a f b) g c) h d)方式的左结合方式,这样就与思考时的顺序保持一致,变得更加自然了。(f,g,h带多少参数都一样)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值