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