Implement set and mapi on OrderedMap for convenience and to write a Box instance over OrderedMap like the one over Map
This commit is contained in:
parent
b6c1f670ef
commit
10f8c711da
|
@ -7,11 +7,13 @@ module Data.OrderedMap (
|
|||
, get
|
||||
, keys
|
||||
, lookup
|
||||
, mapi
|
||||
, set
|
||||
, toList
|
||||
) where
|
||||
|
||||
import Data.Map (Map, (!))
|
||||
import qualified Data.Map as Map (fromList, lookup)
|
||||
import Data.Map (Map, (!), mapWithKey)
|
||||
import qualified Data.Map as Map (fromList, insert, lookup, member)
|
||||
import Prelude hiding (lookup)
|
||||
|
||||
data OrderedMap k a = OrderedMap {
|
||||
|
@ -56,6 +58,16 @@ get k = (! k) . assoc
|
|||
lookup :: Ord k => k -> OrderedMap k a -> Maybe a
|
||||
lookup k = (Map.lookup k) . assoc
|
||||
|
||||
set :: Ord k => k -> a -> OrderedMap k a -> OrderedMap k a
|
||||
set k v orderedMap@(OrderedMap {assoc})
|
||||
| Map.member k assoc = orderedMap {assoc = Map.insert k v assoc}
|
||||
| otherwise = orderedMap
|
||||
|
||||
mapi :: Ord k => (k -> a -> b) -> OrderedMap k a -> OrderedMap k b
|
||||
mapi f orderedMap = orderedMap {
|
||||
assoc = mapWithKey f $ assoc orderedMap
|
||||
}
|
||||
|
||||
{-
|
||||
cons :: Ord k => k -> a -> OrderedMap k a -> OrderedMap k a
|
||||
cons k a orderedMap =
|
||||
|
|
Loading…
Reference in New Issue