新列表数据类型

时间:2010-12-16 18:56:27

标签: sml smlnj

如何在ML中定义新数据类型,让我们假设newList,使得它可以包含元素'a(int,real等),嵌套列表的列表,例如: 如果我的类型'a是int,则值可以是:[1],[1,[4]],[1,[5],[[5]]]等。 提前感谢您的帮助

EDITED 对不起,在示例中没有1,不同的int列表,我删除了它

2 个答案:

答案 0 :(得分:1)

你做不到。列表中的所有元素必须属于同一类型。在您的示例中,某些元素属于int类型,有些元素为int list

您可以创建类似这个树的东西,但语法不太好用: - )

datatype 'a multiList = Empty
                      | List of 'a multiList list
                      | E of 'a;

val x = List [E 1, List [E 1, List [E 4]], List [E 1, List [E 5]]];

答案 1 :(得分:1)

datatype 'a multiList = E of 'a
                      | List of 'a multiList list

你的例子是:

List [E 1]

List [E 1, List [E 4]]

List [E 1, List [E 5], List [List [E 5]]]