SOE ex.5.7


addPairsPointwise :: Num a => [(a,a)] -> (a,a)
addPairsPointwise [] = (0,0)
addPairsPointwise ((x,y):ps) = (x+xs, y+ys)
  where (xs,ys) = addPairsPointwise ps

addPairsPointwise' :: Num a => [(a,a)] -> (a,a)
addPairsPointwise' = foldl (\(x1,y1) (x2,y2) -> (x1+x2, y1+y2)) (0,0)

Leave a Reply