data Foo = Foo

instance Semigroup Foo where
  (<>) _ _ = Foo


data Bar = Bar Foo Foo

instance Semigroup Bar where
  (Bar foo foo') <> (Bar foo2 foo3)
    = Bar (foo <> foo2) (foo' <> foo3)