darcs-2.8.0: src/Darcs/Patch/Invert.hs
module Darcs.Patch.Invert
( Invert(..), invertFL, invertRL
)
where
import Darcs.Witnesses.Ordered ( FL(..), RL(..) )
#include "gadts.h"
class Invert p where
invert :: p C(x y) -> p C(y x)
invertFL :: Invert p => FL p C(x y) -> RL p C(y x)
invertFL NilFL = NilRL
invertFL (x:>:xs) = invert x :<: invertFL xs
invertRL :: Invert p => RL p C(x y) -> FL p C(y x)
invertRL NilRL = NilFL
invertRL (x:<:xs) = invert x :>: invertRL xs