-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Data.Map with multiple, unique keys -- @package data-map-multikey @version 0.0.1.1 -- | Data.Map with multiple, unique keys. IxSet without the Sets. -- --
-- module Main where
--
-- import Data.Map.MultiKey
-- import Data.Typeable
-- import Prelude hiding (lookup, null)
--
-- data Record = Record
-- { rIntKey :: Int
-- , rStringKey :: String
-- , rData :: String
-- } deriving (Show, Typeable)
--
-- instance MultiKeyable Record where
-- empty = MultiKey [key rIntKey, key rStringKey]
--
-- records :: [Record]
-- records =
-- [ Record 1 "key 1" "data 1"
-- , Record 20 "key 20" "data 20"
-- , Record 3 "key 3" "data 3"
-- ]
--
-- mk :: MultiKey Record
-- mk = fromList records
--
--
--
-- > lookup (1::Int) mk
-- Just (Record {rIntKey = 1, rStringKey = "key 1", rData = "data 1"})
-- it :: Maybe Record
--
--
--
-- > lookup "key 20" mk
-- Just (Record {rIntKey = 20, rStringKey = "key 20", rData = "data 20"})
-- it :: Maybe Record
--
--
-- -- > lookup 2.0 mk -- *** Exception: MultiKey: there is no key of type Double in MultiKey Record --module Data.Map.MultiKey data MultiKey a MultiKey :: [Key a] -> MultiKey a class MultiKeyable a empty :: MultiKeyable a => MultiKey a delete :: a -> MultiKey a -> MultiKey a deleteKey :: (Typeable a, Typeable k) => k -> MultiKey a -> MultiKey a fromList :: MultiKeyable a => [a] -> MultiKey a insert :: a -> MultiKey a -> MultiKey a insertList :: MultiKeyable a => [a] -> MultiKey a -> MultiKey a key :: (Typeable k, Ord k) => (a -> k) -> Key a lookup :: (Typeable a, Typeable k) => k -> MultiKey a -> Maybe a null :: MultiKey a -> Bool toList :: MultiKey a -> [a] updateKey :: (Typeable a, Typeable k) => k -> a -> MultiKey a -> MultiKey a instance Typeable Key instance Typeable MultiKey