如何定义相互递归类型

时间:2018-03-28 05:27:31

标签: recursion ocaml typing reason

我有以下代码:

bool b = (bool)(flag & FLAG1);

了解每种类型如何相互依赖。

我收到以下错误消息:

type cellInfo('a) = {
  index: int,
  column: column('a),
  id: string
};

type cellInfoFn('a) = cellInfo('a) => ReasonReact.reactElement;

type column('a) = {
  header: string,
  accessor: accessor('a),
  id: option(string),
  cell: cellInfoFn('a),
};

我如何处理相互递归的类型定义?

1 个答案:

答案 0 :(得分:5)

相互递归定义必须用and分隔。这适用于let定义和type定义:

type cellInfo('a) = {
  index: int,
  column: column('a),
  id: string
}

and cellInfoFn('a) = cellInfo('a) => ReasonReact.reactElement

and column('a) = {
  header: string,
  accessor: accessor('a),
  id: option(string),
  cell: cellInfoFn('a),
};