-- 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)