谁能给我解释一下这个 OCAML 语法

Could anyone explain this OCAML syntax to me

我正在尝试将字符串附加到现有字符串。 我在这里遇到了 this 线程来解释它。 仅供参考,我将该页面的内容粘贴到此处

let (^$) c s = s ^ Char.escaped c (* append *)
let ($^) c s = Char.escaped c ^ s (* prepend *)

现在我想知道 (^$)

中是什么意思
  let (^$) c s = s ^ Char.escaped c (* append *)

This 此处的页面指出

operator ^    is for string concatenation

什么是 (^$)?

就是把给定的字符追加到带转义的字符串中:

'x' ^$ "hello" ----> "hellox"
'\n' ^$ "hello"  ----> "hello\n"

@icktoofay 是正确的,这个代码:

let (^$) c s = s ^ Char.escaped c

正在定义一个新的运算符^$

您可以将运算符括在括号中,将其用作普通(前缀)函数名。事实上,这就是您 定义 运算符时所做的事情。

$ ocaml
    OCaml version 4.02.1

# (+) 44 22;;
- : int = 66
# let (++++) x y = x * 100 + y;;
val ( ++++ ) : int -> int -> int = <fun>
# 3 ++++ 5;;
- : int = 305

OCaml 中的中缀运算符以一个类似运算符的字符 =<>@^|&+-*/$% 开头,然后可以有任意数量的其他类似运算符的字符 !$%&*+-./:<=>?@^|~。所以你可以有一个中缀运算符 $^$^??@+ 等等。

参见 OCaml 手册的 Section 6.1