任何人都可以向我解释这个OCAML语法

时间:2015-09-22 00:59:18

标签: ocaml

我正在尝试将字符串附加到现有字符串。 我在这里遇到了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

什么是(^ $)?

2 个答案:

答案 0 :(得分:3)

@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

答案 1 :(得分:1)

通过转义:

将给定字符附加到字符串
'x' ^$ "hello" ----> "hellox"
'\n' ^$ "hello"  ----> "hello\\n"