import Data.Monoid newtype Vec a = Vec [a] deriving Show instance Monoid a => Monoid (Vec a) where mempty = Vec $ repeat mempty Vec a `mappend` Vec b = Vec $ zipWith mappend a b main = print $ Vec (map Sum [1..3]) <> Vec (map Sum [10..])