-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A type class for interchangeable data. -- -- Library to use class Interchangeable for interchangeable data. @package interchangeable @version 0.2.0.0 module Control.Interchangeable -- | Minimal definition is (interchange, interchange') and -- (applyI, applyI') or (modifyI, modifyI'). class Interchangeable a b where applyI a b = modifyI' b (const a) applyI' b a = modifyI a (const b) modifyI a f = applyI' (f (interchange a)) a modifyI' b f = applyI (f (interchange' b)) b -- | Interchange a with b interchange :: Interchangeable a b => a -> b -- | Interchange b with a interchange' :: Interchangeable a b => b -> a -- | Append a to b applyI :: Interchangeable a b => a -> b -> b -- | Append b to a applyI' :: Interchangeable a b => b -> a -> a -- | Modify a with an operation to b modifyI :: Interchangeable a b => a -> (b -> b) -> a -- | Modify a with an operation to b modifyI' :: Interchangeable a b => b -> (a -> a) -> b instance Control.Interchangeable.Interchangeable a b => Control.Interchangeable.Interchangeable b a instance GHC.Classes.Ord a => Control.Interchangeable.Interchangeable [a] (Data.Set.Base.Set a) instance GHC.Classes.Ord k => Control.Interchangeable.Interchangeable [(k, a)] (Data.Map.Base.Map k a)