0

所以,我正在研究一个函数,它已经按照从小到大的顺序获取两个列表,并以它们都被排序的方式合并它们。我的想法是将第二个列表分成头部和尾部,使用插入将头部排序到第一个列表中,然后再次运行该函数。但是在运行时我得到:

Couldn't match expected type `[t0]' with actual type `[a0] -> [a0]'
    In the return type of a call of `List.insert'
    Probable cause: `List.insert' is applied to too few arguments

我对如何解决这个问题有点困惑,这里是代码:

combsort((x:xs):(y:ys)) = combsort(List.insert(y (x:xs)) : ys)
combsort((x:xs):[]) = []
4

1 回答 1

1

你有太多的一组括号,

combsort((x:xs):(y:ys)) = combsort(List.insert(y (x:xs)) : ys)

应该

combsort ((x:xs):(y:ys)) = combsort (List.insert y (x:xs) : ys)

请注意,函数应用程序不需要括号。

在您的原始文件中,List.insert(y (x:xs))被解析为List.insert应用于应用于ylist的结果(x:xs),例如

List.insert foo
  where
    foo = y (x:xs)
于 2012-10-08T21:26:13.823 回答