SML如何将函数参数类型显式设置为IntInf

时间:2014-12-07 06:03:14

标签: sorting sml largenumber selection-sort

我正在尝试为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”

1 个答案:

答案 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是一个可选模块,并非在所有实现中都可用。 (另外,您应该为空列表添加一个案例。)