parameterized-0.1.0.0: src/Parameterized/Data/Monoid.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
module Parameterized.Data.Monoid
( module Parameterized.TypeLevel
, module Parameterized.Data.Semigroup
, PMempty(..)
, PMonoid
) where
import Data.Kind
import Parameterized.TypeLevel
import Parameterized.Data.Semigroup
-- | Parameterized version of mempty in Monoid.
class PMempty (n :: k -> Type) (id :: k) where
pmempty :: n id
-- | Parameterized version of Monoid.
type PMonoid n id t u v = (PMempty n id, PSemigroup n t u v)