Parameterized.Data.Semigroup
type family PNullary (n :: k -> Type) (t :: k) = (r :: Type) | r -> n t
class PSemigroup n t u v
(&<>)