Max算法haskell

fla*_*nka 2 haskell functional-programming list

以下算法有一些错误,我不知道如何解决它,我尝试但我无法解决它.

该算法从列表中返回第1和第2个最大值.

感谢帮助.

maxmimum [] = []  
maxmimum [head] = [head] 
maxmimum [head1 : head2 : maradek] 
  | head1 > head2 = maxmimum2 maradek head1 head2 
  | otherwise = maxmimum2 maradek head2 head1

--maxmimum2 :: [Int] Int Int -> [Int]

maxmimum2 [] head1 head2 = [head1, head2] 
maxmimum2 [head : maradek] head1 head2    
  | head > head1 = maxmimum2 maradek head head1
  | head > head2 = maxmimum2 maradek head1 head
  | otherwise = maxmimum2 maradek head1 head2
Run Code Online (Sandbox Code Playgroud)

模式中的解析错误:maxmimum

Tho*_*son 6

首先,您可能想要提供明确的类型签名,因为这并不是说您可能认为它的含义.

maxmimum [head1 : head2 : maradek] 
Run Code Online (Sandbox Code Playgroud)

那说你有一份清单清单.outter列表有一个元素,它本身就是一个长度至少为2的列表.类型是[[a]].我希望你想要的是maximum (head1 : head2 : restOfList) = ....

同样的问题出现在maximum2([head : maradek]应该(head : maradek)).注释掉的maximum2类型签名几乎是正确的(一旦你使用了此修复程序),你只需要在箭头添加(功能是咖喱)maximum2 :: [Int] -> Int -> Int -> [Int].