OCaml 顶层介绍

OCaml 顶层是用户与 OCaml 之间的对话。用户编写 OCaml 代码,UTop 对其进行评估。这就是为什么它也被称为 Read-Eval-Print-Loop (REPL)。存在多个 OCaml 顶层,例如 ocamlutop。我们建议使用 UTop,它是 OCaml 平台 工具链的一部分。

要运行 UTop,我们使用 utop 命令,如下所示

$ utop
────────┬─────────────────────────────────────────────────────────────┬─────────
        │ Welcome to utop version 2.12.1 (using OCaml version 5.0.0)!        └─────────────────────────────────────────────────────────────┘

Type #utop_help for help about using utop.

─( 17:00:09 )─< command 0 >──────────────────────────────────────{ counter: 0 }─
utop #

Ctrl-D(文件结束)或输入 #quit;; 退出 utop

UTop 显示一个井号提示 #,类似于 CLI 中的 $。这个 # 表示它正在等待输入,因此您可以在提示符后开始编写代码。要对其进行评估,请添加双分号 ;; 来表示表达式的结束,然后按 Enter

以双分号结尾的行会触发解析、类型检查和评估提示符和双分号之间的所有内容。双分号的解释不是由 OCaml 解释器完成的;它是由 UTop 完成的。一旦双分号结尾的条目的评估结束,REPL 就会等待另一个输入。

# 开头的代码示例应该复制/粘贴到 UTop 中。

例如,请考虑以下代码片段

# 2 + 2;;
- : int = 4

在上面的代码片段中,2 + 2;; 是用户的输入,而 - : int = 4 是 OCaml 的输出。

如果在按下 Enter 之前需要修改代码,可以使用键盘的左右箭头在文本内移动。上下箭头允许在之前评估的表达式之间导航。在没有双分号 ;; 的情况下输入 Enter 会创建一个新行,因此您可以这样编写多行表达式。

以井号 # 开头的命令,例如 #quit#help,不会由 OCaml 评估;它们被 UTop 解释为命令。

现在您可以使用 UTop 进行编码了!如果您在使用顶层时遇到任何问题,请随时 在 Discuss 上提问.

注意:双分号 ;; 也是 OCaml 语法中顶层之外的一个有效标记。在 OCaml 源代码中,它是一个 无操作,即它不会触发任何行为,因此被编译器忽略。如果您打算将文件编译或解释为脚本,在编写 OCaml 代码时应避免使用双分号。保留它们不会导致错误,但它们是无用的。编译器容忍它们,以便允许从 UTop 复制粘贴到文件,而无需删除它们。

仍然需要帮助吗?

帮助改进我们的文档

所有 OCaml 文档都是开源的。看到错误或不清楚的地方?提交一个拉取请求。

OCaml

创新。社区。安全。