OCAML记录类型

时间:2015-09-19 13:44:52

标签: types binding ocaml record

我正在创建一个OCAML记录类型。

type matrix =
{m_index:int;n_index:int;matrix:float array array}
;;

我有一个带有两个参数和一个数组的函数。

let create_matrix m n ={m_index=m;n_index=n;matrix=Array.make_matrix~dimx:m_index~dimy:n_index 0.};;

但是,我收到以下错误,有人可以解释原因吗?

  

错误:未绑定的值m_index

1 个答案:

答案 0 :(得分:1)

问题在于您使用m_index作为右手值来初始化您正在创建的记录的字段。

在初始化包含字段m_index的记录时,您无法在分配给同一对象的另一个字段的表达式中使用此字段。

直接使用m参数绑定作为create_matrix的参数:

let create_matrix m n = {
  m_index = m;
  n_index = n;
  matrix = Array.make_matrix m n 0.
};;