我刚开始学习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
答案 0 :(得分:1)
您的数据类型声明有一些错误。首先,优先实践(如你所示)将值构造函数的第一个字母大写,但是在所有小写字母中都有一个类型构造函数也是一种好习惯。
您遇到的真正错误是,在定义值构造函数mullist
时,您将multiList
类型引用为List
。
修复后,您可以创建多列表:
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]]