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

Ocaml 如何为嵌套递归数据定义数据类型,ocaml,reason,bucklescript,Ocaml,Reason,Bucklescript,我从js端得到一个数据,看起来像这样 { “选择集”:{ “类型”:1, “选择”:[ { “姓名”:{ “种类”:“名称”, “值”:“查看器” }, “选择集”:{ “类型”:1, “选择”:[ { “姓名”:{ “种类”:“名称”, “值”:“虚拟现实” }, “selectionSet”:空 } ] } } ] } } 我想知道如何为selectionSet和selections定义类型 似乎在定义selections时,我应该定义selectionSet,因为它有一个类型为sele

我从js端得到一个数据,看起来像这样

{
“选择集”:{
“类型”:1,
“选择”:[
{
“姓名”:{
“种类”:“名称”,
“值”:“查看器”
},
“选择集”:{
“类型”:1,
“选择”:[
{
“姓名”:{
“种类”:“名称”,
“值”:“虚拟现实”
},
“selectionSet”:空
}
]
}
}
]
}
}
我想知道如何为
selectionSet
selections
定义类型

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


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

要为此定义相互递归的类型或函数,您可以使用关键字
。在您的情况下,您的记录将如下所示:

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

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

我们鼓励您将代码发布为文本,而不是图像。这有助于人们阅读和操作它。