如何在 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
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