是否可以定义一个引用自身的元组(递归)

时间:2018-01-21 12:49:51

标签: rascal

我正在尝试创建一个元组,它可以选择具有相同类型的元组列表。

alias MyTuple = tuple[str name, list[MyTuple] children];

代码失败,因为此时不知道MyTuple。

这是可能的,还是我们需要使用Node或Construct来获得这种结构?

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试定义递归数据类型。类似于你写的东西是这样的:

data MyTuple = myTuple(str name, list[MyTuple] children);

使用此功能,您可以构造MyTuple类型的任意嵌套值。

别名只是另一种类型的简写符号,不能用于递归定义,因为您所引用的类型必须事先定义。