如何在OCaml中将前缀函数用作中缀运算符?
OCaml中前缀函数转中缀用法的实现方式
OCaml本身没有像Haskell那样用反引号直接将前缀函数转为中缀运算符的语法,但可以通过两种替代方式实现类似效果:
自定义中缀运算符
如果你想让某个前缀函数支持中缀调用,可以手动包装出一个对应的中缀运算符。比如有个计算两数乘积的前缀函数mult,可以这么做:let mult x y = x * y let ( ** ) = mult (* 自定义中缀运算符 ** )之后就能用中缀形式调用:
3 ** 4,效果和mult 3 4完全一致。借助管道与部分应用(小众写法)
利用管道运算符|>和部分应用,也能模拟出类似中缀的写法,但可读性较差,不推荐实际使用:let mult x y = x * y 3 |> mult |> (fun f -> f 4) (* 等价于 mult 3 4 *)
另外要注意,OCaml对自定义中缀运算符的字符有要求,只能由! $ % & * + - . / : < = > ? @ ^ | ~这些符号组成,不能用字母或数字开头。
内容的提问来源于stack exchange,提问作者Daniel Jung
相关产品推荐
相关产品推荐

