如何通过元组列表进行递归?

时间:2014-02-08 02:19:27

标签: haskell recursion tuples

我正在尝试创建一个非常的简单程序,它找到一组点的平均距离为0.输入将是一组元组(即(1,2)和(2) ,3)),它应该从0计算每个点的距离,然后找到平均值。

我理解逻辑和通用公式(再次,它是非常简单),我在这里:

averageDist ((x,y):xs) = (sqrt((x*x)+(y*y)))/length xs

使用元组时,我只是不理解列表的语法。正如你所看到的,我尝试了(x,y):xs并且在编译时,ghci认为所有值都是不同的类型。如何修复此程序,以便我可以迭代并将公式应用于每个元组?

我对Haskell完全不熟悉,我感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

首先写一个平均函数:

average :: [Double] -> Double
average xs = ...

和距离函数:

distance :: (Double,Double) -> Double
distance (x,y) = ...

然后您可以将这些功能与map一起使用:

averageDistance :: [(Double,Double)] -> Double
averageDistance xs = average ( map distance xs )