SML匹配冗余错误

时间:2017-07-07 04:01:48

标签: sml smlnj redundancy

我在SML中为插入排序编写了一些代码。在这里。

counterfile

无论出于何种原因,我都会遇到这个错误

fun compare(x:real, y:real, F) = F(x, y);
fun isEqual(x:real, y:real) = ((x <= y) andalso (x >= y));

fun rinsert(x: real, L: real list, F) = [x]
    |rinsert(x, (y::ys), F) =
    if isEqual(x, y) then rinsert (x, ys, F)
    else if compare(x, y, F) then x::y::ys
            else y::(rinsert (x, ys, F));

fun rinsort(L : real list, F) = []
    |rinsort(x::xs, F) = rinsert(x, (rinsort (xs, F), F);

我理解它的含义,我在某个地方有重复的行,但我不确定问题出在哪里。

1 个答案:

答案 0 :(得分:3)

rinsert的第一行有每个参数的普通变量,因此匹配所有内容。因此,永远不会达到第二种情况。与rinsort相同。

要解决此问题,您需要将L参数替换为空列表的模式[]