这些天我通过一些基本材料和一个用OCaml编写的项目来学习OCaml。但我不理解OCaml中的一些符号。例如:
open Batteries
type char_token = [
| `Char of int
| `Escape of char list
]
这些带符号的东西是什么意思?
还有其他符号我很难理解:
我在OCaml Manual找不到任何内容。有人可以解释一下上面符号的更多细节吗?或者只是向我推荐一些材料?
答案 0 :(得分:2)
``Foo and
[>`是多态变体(http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual006.html#toc36)对初学者来说可能不值得,但是你可以看一下我的旧答案(Extending an existing type in OCaml)看看如何使用它们。
_是一种匹配任何内容的模式:
let head l = match l with
| x :: _ -> x
| _ -> failwith "empty list"
两者都有用来对编译器说“我不关心的事情”。
答案 1 :(得分:1)
以`polymorphic variants开头的标识符。粗略地说,它们是结构类型的变体。
|>
是一个中缀运算符:您可能正在考虑Batteries中定义的那个,即函数应用程序(x |> f
表示f x
)。
_
是匹配模式中的特殊符号,意思是“匹配任何内容而不进行绑定”。