úÎ! 0 ,     ((C) 2014-2015 Edward Kmett, Eric Mertens BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisionalportableSafe>UV  semigroupsGenerically generate a   (') operation for any type implementing . This operation will append two values by point-wise appending their component fields. It is only defined for product types.  a ( b c) =  ( a b) c  semigroupsGenerically generate a  ) for any product-like type implementing .%It is only defined for product types.   a = a =  a       &semigroups-0.19-ES1JBKxQgwYJnk5n3QV0IlData.Semigroup.GenericGMonoid GSemigroupgmappendgmempty$fGSemigroup:*:$fGSemigroupM1$fGSemigroupK1$fGSemigroupV1$fGSemigroupU1 $fGMonoid:*: $fGMonoidM1 $fGMonoidK1 $fGMonoidU1baseGHC.Base Semigroup<> GHC.GenericsGenericMonoidmempty