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)