尝试在 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
  }