darcs-2.16.1: src/Darcs/Patch/Effect.hs
{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
module Darcs.Patch.Effect ( Effect(..) ) where
import Darcs.Prelude
import Darcs.Patch.FromPrim ( PrimOf )
import Darcs.Patch.Witnesses.Ordered
( FL(..), RL(..), reverseRL
, concatFL, mapFL_FL
)
-- | Patches whose concrete effect can be expressed as a list of
-- primitive patches.
--
-- A minimal definition would be either of @effect@ or @effectRL@.
class Effect p where
effect :: p wX wY -> FL (PrimOf p) wX wY
instance Effect p => Effect (FL p) where
effect = concatFL . mapFL_FL effect
instance Effect p => Effect (RL p) where
effect = effect . reverseRL