如何为嵌套递归数据定义数据类型

How to defined data type for nested recursive data

我从js端得到了一个数据,看起来是这样的 { "selectionSet": { "type": 1, "selections": [ { "name": { "kind": "Name", "value": "viewer" }, "selectionSet": { "type": 1, "selections": [ { "name": { "kind": "Name", "value": "avatarUrl" }, "selectionSet": null } ] } } ] } } 我想知道如何为 selectionSetselections.

定义类型

好像在定义selections的时候应该定义selectionSet因为它有一个字段类型是selectionSet。但是在定义selectionSet的时候,我应该定义selections

有人可以用 OCaml 风格回答吗?我想把这个JSON样式的数据转换成一条记录。

要为此定义相互递归类型或函数,您可以使用关键字 and。在您的情况下,您的记录看起来像这样:

type selectionSet = {
  t : t;
  selections : selections list;
}

and selections = {
  name : name;
  selectionSet : selectionSet option;
}