问题描述
我是 OCaml 的新手。我在 MacOS 上安装了带有最新自制软件的 utop(版本 2.6.0),安装了带有 opam install core base
的库。
这是我的.ocamlinit
:
#use "topfind";;
#thread;;
#require "core.top";;
open Base;;
open Core;;
我遇到了 FI
类型的错误:
utop # FI;;
Line 1,characters 0-2:
Error: The constructor FI expects 3 argument(s),but is applied here to 0 argument(s)
OCaml 中的 FI
类型是什么?
以下是 TAPL(https://www.cis.upenn.edu/~bcpierce/tapl/) 中引入的类型 info
:type info = FI of string * int * int | UNKNowN
,
OCaml 中的 UNKNowN
类型是什么?
解决方法
正如所有评论者都告诉你的那样,StackOverflow 不是通过提问来学习一门新语言的好地方。通过阅读有关 OCaml 的教程开始,您会更有效率,例如 the OCaml Learning page.
在这里回答您的问题,这些标识符(FI
或 UNKNOWN
)在“OCaml”中都没有特别的意义。它们只是可以定义为许多可能事物的大写标识符。在您的情况下,它们由您引用的类型定义定义:
type info = FI of string * int * int | UNKNOWN
这定义了名称 info
、FI
和 UNKNOWN
。后两个是名为 info
的新类型的“常量”。第一个常量(实际上称为值构造函数)FI
是一种将字符串和两个整数收集到带有标记 FI
的单元中的方法。第二个只是一个不收集任何数据的简单值。它在某种程度上类似于其他语言中的 NULL
,因为它表示没有有趣的数据。