OCaml中的运算符

6
`operator` 在 OCaml 中的作用是什么?
let int_of_meth = function
  | `GET     -> 0
  | `POST    -> 1
  | `PUT     -> 2
  | `DELETE  -> 3
  | `HEAD    -> 4
  | `PATCH   -> 5
  | `OPTIONS -> 6
  | _        -> failwith "non standard http verbs not supported"

在OCaml手册中我找不到它。


4
http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual006.html#toc36 - user1971598
1个回答

7

这个`并不是真正的运算符,它在词法级别上工作(就像字符串引号一样),并使以下符号成为“多态变量”。请参见@Edgar Aroutiounian给出的链接:

http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual006.html#toc36

更新

实际上,如@gsg所指出的那样,`被扫描为一个单独的符号。因此,像` Abc这样的多态变量是一个语法构造。我仍然认为它不是通常意义上的运算符。

(编辑:更改为Abc。我从来没有知道它们应该大写。例如,lablgl接口似乎始终使用小写。)


2
它并不像字符串引号一样:`和符号是分开的标记,并且它们之间可以有空格。 - gsg
你说得对,我刚刚检查了lexer.mll。我会更新我的回答。 - Jeffrey Scofield
我注意到这个事实:这就是为什么你不能在多态变量中使用OCaml关键字的原因(如果你看一下lablgl库,例如某些变量会附加一个下划线,这对像“or”、“and”这样的单词非常恼人)。 - didierc
2
根据手册,多态变量应该以大写字母开头,这样就不会与关键字冲突。但是许多人(包括我自己)并没有遵守这个要求。 - ivg
1
我甚至不知道你可以有非大写的pvs! - J. Abrahamson
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接