module Control.Object.Monoid (Monoid (..)) where

import Control.Object.Semigroup (Semigroup)

{- |
> When providing a new instance, you should ensure it satisfies the two law:
> * Right absorption: unit <> x ≡ x
> * Left absorption: x <> unit ≡ x
-}

class Semigroup a => Monoid a where
        {-# MINIMAL unit #-}
        unit :: a