{-# LANGUAGE UndecidableInstances #-} data Semi = Semi [String] Int instance Semigroup Int => Semigroup Semi where (Semi ss n) <> (Semi strs i) = Semi (ss <> strs) (n <> i)