如何在 OCaml 中定义中缀(不是符号,也不是运算符)函数?

How to define an infix (not symbolic aka not an operator) function in OCaml?

OCaml 是否支持明文定义的中缀函数?

arg1 `plus` arg2 = arg1 + arg2 

谢谢

没有。如OCaml manual中所述,中缀运算符只能包含特殊字符,即!$%&*+, -, ., /, :, <, =, >, ?@^|~(或 #,但仅在第一个位置)并且不得以 ! 开头, ?~.

为了定义一个中缀操作,你必须把符号放在圆括号中:

# let (+++) x y = x + 2 * y;;
...
# 3 +++ 4;;

- : int = 11

基础语言不支持作为标识符的中缀运算符。

您可以使用 ppx 对 OCaml 的语法进行或多或少的任意扩展,但这不是轻而易举的事情(恕我直言)。

这是一个包含 ppx 信息链接的页​​面:https://ocaml.io/w/PPX