0

我刚开始学习 SML 并遇到问题。我想为一个非同质的列表定义一个数据类型。
举个例子

val a = [1,[2,4,3],5,[2,6]] 

我做了这个数据类型

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

但我收到以下错误

/tmp/emacs-region29207RwC:8.34-8.43 Error: unbound type constructor: multiList

uncaught exception Error
  raised at: ../compiler/TopLevel/interact/evalloop.sml:66.19-66.27
             ../compiler/TopLevel/interact/evalloop.sml:44.55
             ../compiler/TopLevel/interact/evalloop.sml:296.17-296.20
4

1 回答 1

1

您的数据类型声明有一些错误。首先,将值构造函数的第一个字母大写是一种很好的做法(就像您所做的那样),但是将类型构造函数全部小写也是一种很好的做法。您遇到的真正错误是您在定义值构造函数时
引用了您的mullist类型。multiListList

修复后,您可以创建多列表:

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

val a = [E 1, List [E 2, E 4, E 3], E 5, List [E 2, E 6]]
于 2013-04-03T13:20:30.447 回答