Parameterized.Data.Semigroup

type family PNullary (n :: k -> Type) (t :: k) = (r :: Type) | r -> n t

class PSemigroup n t u v

(&<>)