我正在尝试为SML中的唯一大数字创建排序函数,但编译器会将我的函数类型设置为int而不是'a。如何明确告诉编译器使用IntInf?
这是我的代码:
fun selectsort([a]) = [a]
| selectsort(h::t) =
if (hd(selectsort(t))) < h then hd(selectsort(t))::h::tl(selectsort(t))
else h::selectsort(t);
当我尝试
时fun selectsort([a]) = [a]
| selectsort(l : IntInf list) =
if (hd(selectsort(tl(l)))) < hd(l) then hd(selectsort(tl(l)))::h::tl(selectsort(tl(l)))
else hd(l)::selectsort(tl(l));
它一直给我“错误:未绑定的类型构造函数:IntInf”
答案 0 :(得分:1)
IntInf
是模块的名称,类型名为IntInf.int
。唉,你的代码有些简化了:
fun selectsort([a]) = [a]
| selectsort(x::y::t : IntInf.int list) =
if y < x then y::x::selectsort(t) else x::selectsort(y::t)
但请注意IntInf
是一个可选模块,并非在所有实现中都可用。 (另外,您应该为空列表添加一个案例。)