尝试在 OCaml 中定义类型时出错 "Unbound value"
Error "Unbound value" when trying to define a type in OCaml
我试着定义这个类型:
type 'a operation = {
operande_1 : 'a;
operande_2 : 'a;
func : ('a -> 'a -> 'a) * string;
result : 'a;
};;
但是当我尝试以这种方式初始化此类内容时:
let o = {
operande_1 = 1.0;
operande_2 = 2.3;
func = ((+.), "+");
result = (fst func) operande_1 operande_2};;
我在第 result = (fst func) operande_1 operande_2}
行收到错误“Unbound value func
”
好吧,它是在之前定义的,所以我真的不知道出了什么问题...有人可以帮助解决这个问题吗?
func
是尚未定义的记录字段。因此,要访问它,您首先需要代表记录的值。此外,访问记录字段的语法是 <record> . <field>
.
正确的代码应该是这样的:
let o =
let func = ((+.), "+") in
let operande_1 = 1.0 in
let operande_2 = 2.3 in
{
operande_1;
operande_2;
func;
result = (fst func) operande_1 operande_2
}
我试着定义这个类型:
type 'a operation = {
operande_1 : 'a;
operande_2 : 'a;
func : ('a -> 'a -> 'a) * string;
result : 'a;
};;
但是当我尝试以这种方式初始化此类内容时:
let o = {
operande_1 = 1.0;
operande_2 = 2.3;
func = ((+.), "+");
result = (fst func) operande_1 operande_2};;
我在第 result = (fst func) operande_1 operande_2}
Unbound value func
”
好吧,它是在之前定义的,所以我真的不知道出了什么问题...有人可以帮助解决这个问题吗?
func
是尚未定义的记录字段。因此,要访问它,您首先需要代表记录的值。此外,访问记录字段的语法是 <record> . <field>
.
正确的代码应该是这样的:
let o =
let func = ((+.), "+") in
let operande_1 = 1.0 in
let operande_2 = 2.3 in
{
operande_1;
operande_2;
func;
result = (fst func) operande_1 operande_2
}