在SML中从set abstype创建列表时键入clash

时间:2012-11-08 00:07:39

标签: sml ml

我觉得这应该比我做的更容易,但我在使用这个功能时会遇到一些麻烦,应该将一个集合更改为一个列表。

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

我遇到了类型冲突,说我正试图从''a list list转到''a list。任何帮助将不胜感激。

编辑:说''列表 - > ''列表... oops。

1 个答案:

答案 0 :(得分:4)

::运算符的左操作数应该是一个元素,右操作数应该是一个列表。您正在使用它,列表作为左操作数,元素作为右操作数。那是类型错误。

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