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
首先,您可能想要提供明确的类型签名,因为这并不是说您可能认为它的含义.
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].