我正在编写一个使用特定公式来计算 2 个列表的递归函数。但我会简化函数,以便您了解我遇到的问题,因为这里的重点是检测列表的 []。
所以我有以下代码:
listSum::([Integer],[Integer])->Double
listSum ((x:xs),(y:ys))
| ((x:xs),(y:ys))==(x:[],y:[])=0.0
| otherwise = (((fromIntegral x)::Double)+((fromIntegral y)::Double)) + listSum ((xs),(ys))
我现在的输出
listSum([1,2],[1,2])
2.0
listSum([1],[1])
0.0
listSum([],[])
*** Exception: file.hs: .....: Non-exhaustive patterns in function ListSum
以及我希望拥有的输出
listSum([1,2],[1,2])
6.0
listSum([1],[1])
2.0
listSum([],[])
0.0
我错过了什么?还是我写的太多了?