OCaml 顶层介绍
OCaml 顶层是用户与 OCaml 之间的对话。用户编写 OCaml 代码,UTop 对其进行评估。这就是为什么它也被称为 Read-Eval-Print-Loop (REPL)。存在多个 OCaml 顶层,例如 ocaml
和 utop
。我们建议使用 UTop,它是 OCaml 平台 工具链的一部分。
要运行 UTop,我们使用 utop
命令,如下所示
$ utop
────────┬─────────────────────────────────────────────────────────────┬─────────
│ Welcome to utop version 2.12.1 ()! │
└─────────────────────────────────────────────────────────────┘
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 复制粘贴到文件,而无需删除它们。