合并中的编译错误在Haskell中排序

时间:2013-08-11 14:11:38

标签: haskell mergesort

我在Haskell中编写Merge Sort并且它给出了一个奇怪的错误:

Couldn't match expected type '[a0] -> Int' with actual type '[Int]'

代码是:

f :: [Int] -> [Int] 
f l 
  |length l == 1 = l    
  |length l == 2 = if head l > last l then reverse l else l
  |otherwise = myappend ( take ( div length l 2 )  l )  ( drop ( div length l 2 ) l )

myappend  :: [Int] -> [Int] -> [Int]
myappend l [] = l
myappend [] l = l
myappend ( x : xs ) (y : ys) = if x > y then y : x : myappend xs ys else x : y : myappend ys xs 

1 个答案:

答案 0 :(得分:3)

您的问题出在div length l 2部分。在这里,您要提供div 3个参数:lengthl和2.相反,您应该写div (length l) 2