1

我觉得这应该比我做的更容易,但是我在使用这个函数时遇到了一些问题,应该将集合更改为列表。

fun explode(st(x, xs)) =
    let
        val listTemp = []
    in
        if isEmpty(xs) then listTemp::x else explode(xs)::x
    end
  | explode(nilset) = [];

我遇到类型冲突,说我正在尝试从''a list listto ''a list。任何帮助将非常感激。

编辑:说''a list -> ''a list list...哎呀。

4

1 回答 1

4

运算符的左操作数::应该是一个元素,右操作数应该是一个列表。您将列表用作左操作数,将元素用作右操作数。这就是类型错误。

假设生成列表的顺序无关紧要,您可以简单地切换操作数。如果确实重要,您仍然可以切换操作数,然后List.rev在构建完整列表后使用来反转结果列表。

于 2012-11-08T00:16:33.027 回答