ML中的中缀操作符

infix operator 是一个写在它的两个参数中间的函数。ML中可以自己定义中缀操作符。

例:声名异或操作符

infix xor; (*xor是函数名*)

fun (p xor q) = (p orelse q) andalso not (p andalso q);

得到:

> val xor = fn : (bool * bool) -> bool

此处定义的xor函数是以一个布尔序偶为参数,返回布尔结果。

通常名字必须先被指定为中缀,然后才能定义它的值。

中缀的优先级

ML的infix可以声名一个从0~9的优先级。默认优先级为0。指令infix是左结合的,二infixr则规定是右结合。

infix 6 plus;

fun (a plus b) = a + b;

> val plus = fn : int * int -> int

将中缀作为函数

关键字op覆盖中缀状态。

op+(2,3);

> val it = 5 : int

中缀状态也可以取消,指令nonfix可以让操作符回到普通函数的记法,infix指令又可以将其变为一个中缀操作符。

nonfix *;

3*2;

> Error:  operator is not a function

*(3,2);
> val it = 6 : int

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值