| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Data.Map.MultiKey
Description
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
Documentation
class MultiKeyable a where Source
fromList :: MultiKeyable a => [a] -> MultiKey a Source
insertList :: MultiKeyable a => [a] -> MultiKey a -> MultiKey a Source