module Util.Private where

import Prelude hiding ((.), id)
import Control.Category

newtype Endo s a = Endo { appEndo :: s a a }
instance Category s => Semigroup (Endo s a) where Endo f <> Endo g = Endo (f . g)
instance Category s => Monoid (Endo s a) where mempty = Endo id