raine
raine

Reputation: 29

How to recurse through a list of tuples?

I am attempting to make a very simple program that finds the average distance a group of points is from 0. The input will be a group of tuples (i.e. (1,2) and (2,3)), it should calculate each points distance from 0 and then find the average.

I understand the logic and the general formula (again, it's very simple), which I have here:

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

I just don't understand the syntax for lists when using tuples. As you can see, I tried (x,y):xs and while it compiles, ghci thinks that all values are different types. How can I fix this program so I can iterate and apply the formula to each tuple?

I'm totally new to Haskell and I appreciate any and all help.

Thanks

Upvotes: 0

Views: 591

Answers (1)

ErikR
ErikR

Reputation: 52039

First write an average function:

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

and a distance function:

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

Then you can use these functions together with map:

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

Upvotes: 2

Related Questions