尝试在OCaml中定义类型时出错“未绑定值”

时间:2015-02-12 14:29:27

标签: 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};;

我在第Unbound value func

处收到错误“result = (fst func) operande_1 operande_2}

之前就已定义了所以我没有真正弄错了......有人可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

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
  }