-- 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.1.0.0
module Control.Interchangeable
-- | Minimal definition is (interchange, interchange') and
-- (appendI, appendI') or (modifyI,
-- modifyI').
class Interchangeable a b where appendI a b = modifyI' b (const a) appendI' b a = modifyI a (const b) modifyI a f = appendI' (f (interchange a)) a modifyI' b f = appendI (f (interchange' b)) b
interchange :: Interchangeable a b => a -> b
interchange' :: Interchangeable a b => b -> a
appendI :: Interchangeable a b => a -> b -> b
appendI' :: Interchangeable a b => b -> a -> a
modifyI :: Interchangeable a b => a -> (b -> b) -> a
modifyI' :: Interchangeable a b => b -> (a -> a) -> b
instance [incoherent] Ord k => Interchangeable [(k, a)] (Map k a)
instance [incoherent] Ord a => Interchangeable [a] (Set a)
instance [incoherent] Interchangeable a b => Interchangeable b a