所以,我正在开发一个函数,它从最小到最大按顺序获取两个列表,并以它们都被排序的方式合并它们。我的想法是将第二个列表拆分为头部和尾部,使用insert将头部排序到第一个列表中,然后再次运行该函数。但是在跑步时我得到:
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):[]) = []
答案 0 :(得分: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
应用于将y
应用于列表(x:xs)
的结果,例如
List.insert foo
where
foo = y (x:xs)