module Data.Map.Deep
(
DeepMap (..)
, onBare2
, onNest2
, empty
, singleton
, deep
, (@>)
, (@|)
, fromList
, fromListDeep
, fromList1
, fromList2
, fromList3
, fromList4
, fromList5
, fromListWith
, fromListWith1
, fromListWithKey
, fromListWithKey1
, fromListWithKey2
, fromListWithKey3
, fromListWithKey4
, fromListWithKey5
, toMap
, fromMap
, insert
, insertDeep
, insert1
, insert2
, insert3
, insert4
, insert5
, insertWith
, insertWith1
, insertWith2
, insertWith3
, insertWith4
, insertWith5
, insertWithKey
, insertWithKey1
, insertWithKey2
, insertWithKey3
, insertWithKey4
, insertWithKey5
, insertLookupWithKey
, insertLookupWithKey1
, insertLookupWithKey2
, insertLookupWithKey3
, insertLookupWithKey4
, insertLookupWithKey5
, overwrite
, overwriteDeep
, overwrite1
, overwrite2
, overwrite3
, overwrite4
, overwrite5
, overwriteLookup
, overwriteLookupDeep
, overwriteLookup1
, overwriteLookup2
, overwriteLookup3
, overwriteLookup4
, overwriteLookup5
, delete
, deleteDeep
, delete1
, delete2
, delete3
, delete4
, delete5
, adjust
, adjustDeep
, adjust1
, adjust2
, adjust3
, adjust4
, adjust5
, adjustWithKey
, adjustWithKey1
, adjustWithKey2
, adjustWithKey3
, adjustWithKey4
, adjustWithKey5
, update
, updateDeep
, update1
, update2
, update3
, update4
, update5
, updateWithKey
, updateWithKey1
, updateWithKey2
, updateWithKey3
, updateWithKey4
, updateWithKey5
, updateLookupWithKey
, updateLookupWithKey1
, updateLookupWithKey2
, updateLookupWithKey3
, updateLookupWithKey4
, updateLookupWithKey5
, alter
, alterDeep
, alter1
, alter2
, alter3
, alter4
, alter5
, alterF
, alterFDeep
, alterF1
, alterF2
, alterF3
, alterF4
, alterF5
, lookup
, lookupDeep
, (@?)
, (@?|)
, (@??)
, (@??|)
, (@!)
, (@!|)
, findWithDefault
, findWithDefault1
, findWithDefault2
, findWithDefault3
, findWithDefault4
, findWithDefault5
, member
, notMember
, lookupLT
, lookupGT
, lookupLE
, lookupGE
, null
, size
, union
, unionWith
, unionWith1
, unionWith2
, unionWith3
, unionWith4
, unionWith5
, unionWithKey
, unionWithKey1
, unionWithKey2
, unionWithKey3
, unionWithKey4
, unionWithKey5
, unions
, unionsWith
, unionsWith1
, difference
, (\\)
, differenceWith
, differenceWith1
, differenceWithKey
, differenceWithKey1
, intersection
, intersectionWith
, intersectionWith1
, intersectionWithKey
, intersectionWithKey1
, intersectionWithKey2
, intersectionWithKey3
, intersectionWithKey4
, intersectionWithKey5
, mapShallow
, mapShallowWithKey
, mapWithKey1
, mapWithKey2
, mapWithKey3
, mapWithKey4
, mapWithKey5
, traverseShallow
, traverseShallowWithKey
, traverseWithKey1
, traverseWithKey2
, traverseWithKey3
, traverseWithKey4
, traverseWithKey5
, traverseMaybeWithKey
, traverseMaybeWithKey1
, traverseMaybeWithKey2
, traverseMaybeWithKey3
, traverseMaybeWithKey4
, traverseMaybeWithKey5
, mapAccum
, mapAccum1
, mapAccumR
, mapAccumR1
, mapAccumWithKey
, mapAccumWithKey1
, mapAccumWithKey2
, mapAccumWithKey3
, mapAccumWithKey4
, mapAccumWithKey5
, mapAccumRWithKey
, mapAccumRWithKey1
, mapAccumRWithKey2
, mapAccumRWithKey3
, mapAccumRWithKey4
, mapAccumRWithKey5
, mapKeys
, mapKeysDeep
, mapKeys1
, mapKeys2
, mapKeys3
, mapKeys4
, mapKeys5
, mapKeysWith
, mapKeysWith1
, mapKeysWith2
, mapKeysWith3
, mapKeysWith4
, mapKeysWith5
, traverseKeys
, traverseKeysDeep
, traverseKeysWith
, mapKeysM
, mapKeysM1
, mapKeysM2
, mapKeysM3
, mapKeysM4
, mapKeysM5
, mapKeysMWith
, mapKeysMWith1
, mapKeysMWith2
, mapKeysMWith3
, mapKeysMWith4
, mapKeysMWith5
, foldr
, foldl
, foldShallow
, foldrWithKey
, foldrWithKey1
, foldrWithKey2
, foldrWithKey3
, foldrWithKey4
, foldrWithKey5
, foldlWithKey
, foldlWithKey1
, foldlWithKey2
, foldlWithKey3
, foldlWithKey4
, foldlWithKey5
, foldMapWithKey
, foldMapWithKey1
, foldMapWithKey2
, foldMapWithKey3
, foldMapWithKey4
, foldMapWithKey5
, foldr'
, foldl'
, foldrWithKey'
, foldrWithKey1'
, foldrWithKey2'
, foldrWithKey3'
, foldrWithKey4'
, foldrWithKey5'
, foldlWithKey'
, foldlWithKey1'
, foldlWithKey2'
, foldlWithKey3'
, foldlWithKey4'
, foldlWithKey5'
, foldMapWithKey'
, foldMapWithKey1'
, foldMapWithKey2'
, foldMapWithKey3'
, foldMapWithKey4'
, foldMapWithKey5'
, elems
, elems1
, keys
, assocs
, assocs1
, keysSet
, invertKeys
, toList
, toAscList
, toDescList
, filter
, filter1
, filter2
, filter3
, filter4
, filter5
, filterWithKey
, filterWithKey1
, filterWithKey2
, filterWithKey3
, filterWithKey4
, filterWithKey5
, restrictKeys
, restrictKeys2
, restrictKeys3
, restrictKeys4
, restrictKeys5
, withoutKeys
, withoutKeys2
, withoutKeys3
, withoutKeys4
, withoutKeys5
, partition
, partition1
, partition2
, partition3
, partition4
, partition5
, partitionWithKey
, partitionWithKey1
, partitionWithKey2
, partitionWithKey3
, partitionWithKey4
, partitionWithKey5
, takeWhileAntitone
, dropWhileAntitone
, spanAntitone
, mapMaybe
, mapShallowMaybe
, mapShallowMaybeWithKey
, mapMaybeWithKey1
, mapMaybeWithKey2
, mapMaybeWithKey3
, mapMaybeWithKey4
, mapMaybeWithKey5
, mapEither
, mapShallowEither
, mapShallowEitherWithKey
, mapEitherWithKey1
, mapEitherWithKey2
, mapEitherWithKey3
, mapEitherWithKey4
, mapEitherWithKey5
, split
, splitLookup
, splitRoot
, isSubmapOf
, isSubmapOfBy
, isProperSubmapOf
, isProperSubmapOfBy
, lookupIndex
, findIndex
, elemAt
, updateAt
, deleteAt
, take
, drop
, splitAt
, lookupMin
, lookupMax
, findMin
, findMax
, deleteMin
, deleteMax
, deleteFindMin
, deleteFindMax
, updateMin
, updateMax
, updateMinWithKey
, updateMaxWithKey
, minView
, maxView
, minViewWithKey
, maxViewWithKey
, Deep
, pattern Deep1
, pattern Deep2
, pattern Deep3
, pattern Deep4
, pattern Deep5
)
where
import Control.Arrow (Arrow ((&&&)), ArrowChoice ((+++), (|||)), (***))
import Data.Bool (bool)
import Data.Data
import Data.Either (isLeft)
import Data.Foldable (Foldable (fold, foldl', foldr', toList))
import Data.Foldable.WithIndex
import Data.Functor ((<&>))
import Data.Functor.Compose (Compose (..))
import Data.Functor.Const (Const (..))
import Data.Functor.Identity (Identity (..))
import Data.Functor.WithIndex
import Data.Kind (Type)
import Data.Map.Strict (Map)
import Data.Map.Strict qualified as Map
import Data.Maybe (fromMaybe)
import Data.Set (Set)
import Data.Set qualified as Set
import Data.Traversable.WithIndex
import GHC.Generics
import Prelude hiding
( drop
, filter
, lookup
, map
, null
, splitAt
, take
)
data DeepMap (ks :: [Type]) (v :: Type) :: Type where
Bare :: {forall v. DeepMap '[] v -> v
getBare :: v} -> DeepMap '[] v
Nest :: (Ord k) => {forall k (ks :: [*]) v. DeepMap (k : ks) v -> Map k (DeepMap ks v)
getNest :: Map k (DeepMap ks v)} -> DeepMap (k ': ks) v
instance (Eq v) => Eq (DeepMap '[] v) where
(==) :: (Eq v) => DeepMap '[] v -> DeepMap '[] v -> Bool
Bare v
v1 == :: Eq v => DeepMap '[] v -> DeepMap '[] v -> Bool
== Bare v
v2 = v
v1 v -> v -> Bool
forall a. Eq a => a -> a -> Bool
== v
v2
instance (Eq k, Eq (DeepMap ks v)) => Eq (DeepMap (k ': ks) v) where
(==) ::
(Eq k, Eq (DeepMap ks v)) =>
(DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool)
Nest Map k (DeepMap ks v)
v1 == :: (Eq k, Eq (DeepMap ks v)) =>
DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
== Nest Map k (DeepMap ks v)
v2 = Map k (DeepMap ks v)
v1 Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall a. Eq a => a -> a -> Bool
== Map k (DeepMap ks v)
Map k (DeepMap ks v)
v2
instance (Ord v) => Ord (DeepMap '[] v) where
(<=) :: (Ord v) => DeepMap '[] v -> DeepMap '[] v -> Bool
Bare v
v1 <= :: Ord v => DeepMap '[] v -> DeepMap '[] v -> Bool
<= Bare v
v2 = v
v1 v -> v -> Bool
forall a. Ord a => a -> a -> Bool
<= v
v2
instance (Ord k, Ord (DeepMap ks v)) => Ord (DeepMap (k ': ks) v) where
(<=) ::
(Ord k, Ord (DeepMap ks v)) => DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
Nest Map k (DeepMap ks v)
v1 <= :: (Ord k, Ord (DeepMap ks v)) =>
DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
<= Nest Map k (DeepMap ks v)
v2 = Map k (DeepMap ks v)
v1 Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall a. Ord a => a -> a -> Bool
<= Map k (DeepMap ks v)
Map k (DeepMap ks v)
v2
instance (Show v) => Show (DeepMap '[] v) where
show :: DeepMap '[] v -> String
show (Bare v
v) = String
"Bare " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> v -> String
forall a. Show a => a -> String
show v
v
instance (Show k, Show (DeepMap ks v)) => Show (DeepMap (k ': ks) v) where
show :: DeepMap (k : ks) v -> String
show (Nest Map k (DeepMap ks v)
v) = String
"Nest {" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> Map k (DeepMap ks v) -> String
forall a. Show a => a -> String
show Map k (DeepMap ks v)
v String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
"}"
instance (Semigroup v) => Semigroup (DeepMap '[] v) where
<> :: DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
(<>) = (v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> v -> v
forall a. Semigroup a => a -> a -> a
(<>)
instance
(Ord k, Semigroup (DeepMap ks v)) =>
Semigroup (DeepMap (k ': ks) v)
where
<> :: DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
(<>) = (Map k (DeepMap ks v)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((Map k (DeepMap ks v)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v
-> DeepMap (k : ks) v
-> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
Map.unionWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a. Semigroup a => a -> a -> a
(<>)
instance (Monoid v) => Monoid (DeepMap '[] v) where
mempty :: DeepMap '[] v
mempty = v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
forall a. Monoid a => a
mempty
instance (Ord k, Semigroup (DeepMap ks v)) => Monoid (DeepMap (k ': ks) v) where
mempty :: DeepMap (k : ks) v
mempty = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest Map k (DeepMap ks v)
forall a. Monoid a => a
mempty
deriving instance Functor (DeepMap ks)
deriving instance Foldable (DeepMap ks)
deriving instance Traversable (DeepMap ks)
type Deep :: [Type] -> Type
data Deep ks where
Deep0 :: Deep '[]
Deep1 :: (Ord k) => k -> Deep ks -> Deep (k ': ks)
deriving instance Eq (Deep '[])
deriving instance Ord (Deep '[])
deriving instance Show (Deep '[])
deriving instance (Eq k, Eq (Deep ks)) => Eq (Deep (k ': ks))
deriving instance (Ord k, Ord (Deep ks)) => Ord (Deep (k ': ks))
pattern Deep2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> Deep ks -> Deep (k0 ': k1 ': ks))
pattern $mDeep2 :: forall {r} {k0} {k1} {ks :: [*]}.
(Ord k0, Ord k1) =>
Deep (k0 : k1 : ks)
-> (k0 -> k1 -> Deep ks -> r) -> ((# #) -> r) -> r
$bDeep2 :: forall k0 k1 (ks :: [*]).
(Ord k0, Ord k1) =>
k0 -> k1 -> Deep ks -> Deep (k0 : k1 : ks)
Deep2 k0 k1 ks = Deep1 k0 (Deep1 k1 ks)
{-# COMPLETE Deep2 #-}
pattern Deep3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> Deep ks -> Deep (k0 ': k1 ': k2 ': ks))
pattern $mDeep3 :: forall {r} {k0} {k1} {k2} {ks :: [*]}.
(Ord k0, Ord k1, Ord k2) =>
Deep (k0 : k1 : k2 : ks)
-> (k0 -> k1 -> k2 -> Deep ks -> r) -> ((# #) -> r) -> r
$bDeep3 :: forall k0 k1 k2 (ks :: [*]).
(Ord k0, Ord k1, Ord k2) =>
k0 -> k1 -> k2 -> Deep ks -> Deep (k0 : k1 : k2 : ks)
Deep3 k0 k1 k2 ks = Deep1 k0 (Deep2 k1 k2 ks)
{-# COMPLETE Deep3 #-}
pattern Deep4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> Deep ks -> Deep (k0 ': k1 ': k2 ': k3 ': ks))
pattern $mDeep4 :: forall {r} {k0} {k1} {k2} {k3} {ks :: [*]}.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
Deep (k0 : k1 : k2 : k3 : ks)
-> (k0 -> k1 -> k2 -> k3 -> Deep ks -> r) -> ((# #) -> r) -> r
$bDeep4 :: forall k0 k1 k2 k3 (ks :: [*]).
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0 -> k1 -> k2 -> k3 -> Deep ks -> Deep (k0 : k1 : k2 : k3 : ks)
Deep4 k0 k1 k2 k3 ks = Deep1 k0 (Deep3 k1 k2 k3 ks)
{-# COMPLETE Deep4 #-}
pattern Deep5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
(Deep ks -> Deep (k0 ': k1 ': k2 ': k3 ': k4 ': ks))
pattern $mDeep5 :: forall {r} {k0} {k1} {k2} {k3} {k4} {ks :: [*]}.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
Deep (k0 : k1 : k2 : k3 : k4 : ks)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> Deep ks -> r)
-> ((# #) -> r)
-> r
$bDeep5 :: forall k0 k1 k2 k3 k4 (ks :: [*]).
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> Deep ks
-> Deep (k0 : k1 : k2 : k3 : k4 : ks)
Deep5 k0 k1 k2 k3 k4 ks = Deep1 k0 (Deep4 k1 k2 k3 k4 ks)
{-# COMPLETE Deep5 #-}
instance FunctorWithIndex (Deep ks) (DeepMap ks)
instance FoldableWithIndex (Deep ks) (DeepMap ks)
instance (TraversableWithIndex (Deep ks) (DeepMap ks)) where
itraverse ::
(Applicative f) =>
((Deep ks -> a -> f b) -> DeepMap ks a -> f (DeepMap ks b))
itraverse :: forall (f :: * -> *) a b.
Applicative f =>
(Deep ks -> a -> f b) -> DeepMap ks a -> f (DeepMap ks b)
itraverse Deep ks -> a -> f b
f = \case
Bare a
v -> b -> DeepMap ks b
b -> DeepMap '[] b
forall v. v -> DeepMap '[] v
Bare (b -> DeepMap ks b) -> f b -> f (DeepMap ks b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Deep ks -> a -> f b
f Deep ks
Deep '[]
Deep0 a
v
Nest Map k (DeepMap ks a)
m -> Map k (DeepMap ks b) -> DeepMap ks b
Map k (DeepMap ks b) -> DeepMap (k : ks) b
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks b) -> DeepMap ks b)
-> f (Map k (DeepMap ks b)) -> f (DeepMap ks b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks a -> f (DeepMap ks b))
-> Map k (DeepMap ks a) -> f (Map k (DeepMap ks b))
forall i (t :: * -> *) (f :: * -> *) a b.
(TraversableWithIndex i t, Applicative f) =>
(i -> a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(k -> a -> f b) -> Map k a -> f (Map k b)
itraverse ((Deep ks -> a -> f b) -> DeepMap ks a -> f (DeepMap ks b)
forall i (t :: * -> *) (f :: * -> *) a b.
(TraversableWithIndex i t, Applicative f) =>
(i -> a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(Deep ks -> a -> f b) -> DeepMap ks a -> f (DeepMap ks b)
itraverse ((Deep ks -> a -> f b) -> DeepMap ks a -> f (DeepMap ks b))
-> (k -> Deep ks -> a -> f b)
-> k
-> DeepMap ks a
-> f (DeepMap ks b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Deep ks -> a -> f b
f .) ((Deep ks -> Deep ks) -> Deep ks -> a -> f b)
-> (k -> Deep ks -> Deep ks) -> k -> Deep ks -> a -> f b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> Deep ks -> Deep ks
k -> Deep ks -> Deep (k : ks)
forall k (ks :: [*]). Ord k => k -> Deep ks -> Deep (k : ks)
Deep1) Map k (DeepMap ks a)
m
deriving instance (Typeable v) => Typeable (DeepMap '[] v)
deriving instance
(Typeable k, Typeable (DeepMap ks v)) => Typeable (DeepMap (k ': ks) v)
tyDeepMap :: DataType
tyDeepMap :: DataType
tyDeepMap = String -> [Constr] -> DataType
mkDataType String
"Data.Map.Monoidal.Deep.DeepMap" [Constr
conBare, Constr
conNest]
conBare, conNest :: Constr
conBare :: Constr
conBare = DataType -> String -> [String] -> Fixity -> Constr
mkConstr DataType
tyDeepMap String
"Bare" [] Fixity
Data.Data.Prefix
conNest :: Constr
conNest = DataType -> String -> [String] -> Fixity -> Constr
mkConstr DataType
tyDeepMap String
"Nest" [] Fixity
Data.Data.Prefix
instance (Data v) => Data (DeepMap '[] v) where
dataTypeOf :: (Data v) => DeepMap '[] v -> DataType
dataTypeOf :: Data v => DeepMap '[] v -> DataType
dataTypeOf DeepMap '[] v
_ = DataType
tyDeepMap
toConstr :: (Data v) => DeepMap '[] v -> Constr
toConstr :: Data v => DeepMap '[] v -> Constr
toConstr (Bare v
_) = Constr
conBare
gunfold ::
(Data v) =>
(forall b r. (Data b) => c (b -> r) -> c r) ->
(forall r. r -> c r) ->
Constr ->
c (DeepMap '[] v)
gunfold :: forall (c :: * -> *).
Data v =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeepMap '[] v)
gunfold forall b r. Data b => c (b -> r) -> c r
k forall r. r -> c r
z Constr
_ = c (v -> DeepMap '[] v) -> c (DeepMap '[] v)
forall b r. Data b => c (b -> r) -> c r
k ((v -> DeepMap '[] v) -> c (v -> DeepMap '[] v)
forall r. r -> c r
z v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare)
instance
( Ord k
, Data k
, Typeable ks
, Typeable v
, Data (DeepMap ks v)
) =>
Data (DeepMap (k ': ks) v)
where
dataTypeOf ::
( Ord k
, Data k
, Typeable ks
, Typeable v
, Data (DeepMap ks v)
) =>
(DeepMap (k : ks) v -> DataType)
dataTypeOf :: (Ord k, Data k, Typeable ks, Typeable v, Data (DeepMap ks v)) =>
DeepMap (k : ks) v -> DataType
dataTypeOf DeepMap (k : ks) v
_ = DataType
tyDeepMap
toConstr ::
( Ord k
, Data k
, Typeable ks
, Typeable v
, Data (DeepMap ks v)
) =>
(DeepMap (k : ks) v -> Constr)
toConstr :: (Ord k, Data k, Typeable ks, Typeable v, Data (DeepMap ks v)) =>
DeepMap (k : ks) v -> Constr
toConstr (Nest Map k (DeepMap ks v)
_) = Constr
conNest
gunfold ::
( Ord k
, Data k
, Typeable ks
, Typeable v
, Data (DeepMap ks v)
) =>
(forall b r. (Data b) => c (b -> r) -> c r) ->
(forall r. r -> c r) ->
Constr ->
c (DeepMap (k : ks) v)
gunfold :: forall (c :: * -> *).
(Ord k, Data k, Typeable ks, Typeable v, Data (DeepMap ks v)) =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (DeepMap (k : ks) v)
gunfold forall b r. Data b => c (b -> r) -> c r
k forall r. r -> c r
z Constr
_ = c (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> c (DeepMap (k : ks) v)
forall b r. Data b => c (b -> r) -> c r
k ((Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> c (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
forall r. r -> c r
z Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest)
instance (Generic v) => Generic (DeepMap '[] v) where
type Rep (DeepMap '[] v) = Const v
from :: (Generic v) => DeepMap '[] v -> Const v x
from :: forall {k} (x :: k). Generic v => DeepMap '[] v -> Const v x
from (Bare v
v) = v -> Const v x
forall {k} a (b :: k). a -> Const a b
Const v
v
to :: (Generic v) => Const v x -> DeepMap '[] v
to :: forall {k} (x :: k). Generic v => Const v x -> DeepMap '[] v
to (Const v
v) = v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v
instance
(Ord k, Generic k, Generic (DeepMap ks v)) =>
Generic (DeepMap (k ': ks) v)
where
type Rep (DeepMap (k ': ks) v) = Compose [] (Const k :*: Rep (DeepMap ks v))
from ::
(Ord k, Generic k, Generic (DeepMap ks v)) =>
(DeepMap (k : ks) v -> Rep (DeepMap (k : ks) v) x)
from :: forall x.
(Ord k, Generic k, Generic (DeepMap ks v)) =>
DeepMap (k : ks) v -> Rep (DeepMap (k : ks) v) x
from DeepMap (k : ks) v
m = [(:*:) (Const k) (Rep (DeepMap ks v)) x]
-> Compose [] (Const k :*: Rep (DeepMap ks v)) x
forall {k} {k1} (f :: k -> *) (g :: k1 -> k) (a :: k1).
f (g a) -> Compose f g a
Compose ([(:*:) (Const k) (Rep (DeepMap ks v)) x]
-> Compose [] (Const k :*: Rep (DeepMap ks v)) x)
-> [(:*:) (Const k) (Rep (DeepMap ks v)) x]
-> Compose [] (Const k :*: Rep (DeepMap ks v)) x
forall a b. (a -> b) -> a -> b
$ (\(k
k, DeepMap ks v
dm) -> k -> Const k x
forall {k} a (b :: k). a -> Const a b
Const k
k Const k x
-> Rep (DeepMap ks v) x -> (:*:) (Const k) (Rep (DeepMap ks v)) x
forall k (f :: k -> *) (g :: k -> *) (p :: k).
f p -> g p -> (:*:) f g p
:*: DeepMap ks v -> Rep (DeepMap ks v) x
forall a x. Generic a => a -> Rep a x
forall x. DeepMap ks v -> Rep (DeepMap ks v) x
from DeepMap ks v
dm) ((k, DeepMap ks v) -> (:*:) (Const k) (Rep (DeepMap ks v)) x)
-> [(k, DeepMap ks v)] -> [(:*:) (Const k) (Rep (DeepMap ks v)) x]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DeepMap (k : ks) v -> [(k, DeepMap ks v)]
forall k (ks :: [*]) v. DeepMap (k : ks) v -> [(k, DeepMap ks v)]
assocs DeepMap (k : ks) v
m
to ::
(Ord k, Generic k, Generic (DeepMap ks v)) =>
(Rep (DeepMap (k : ks) v) x -> DeepMap (k : ks) v)
to :: forall x.
(Ord k, Generic k, Generic (DeepMap ks v)) =>
Rep (DeepMap (k : ks) v) x -> DeepMap (k : ks) v
to (Compose [(:*:) (Const k) (Rep (DeepMap ks v)) x]
kvs) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> ([(k, DeepMap ks v)] -> Map k (DeepMap ks v))
-> [(k, DeepMap ks v)]
-> DeepMap (k : ks) v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(k, DeepMap ks v)] -> Map k (DeepMap ks v)
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList ([(k, DeepMap ks v)] -> DeepMap (k : ks) v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (\(Const k
k :*: Rep (DeepMap ks v) x
dm') -> (k
k, Rep (DeepMap ks v) x -> DeepMap ks v
forall a x. Generic a => Rep a x -> a
forall x. Rep (DeepMap ks v) x -> DeepMap ks v
to Rep (DeepMap ks v) x
dm')) ((:*:) (Const k) (Rep (DeepMap ks v)) x -> (k, DeepMap ks v))
-> [(:*:) (Const k) (Rep (DeepMap ks v)) x] -> [(k, DeepMap ks v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(:*:) (Const k) (Rep (DeepMap ks v)) x]
kvs
onBare2 :: (v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 :: forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> w -> x
f (Bare v
v) (Bare w
w) = x -> DeepMap '[] x
forall v. v -> DeepMap '[] v
Bare (x -> DeepMap '[] x) -> x -> DeepMap '[] x
forall a b. (a -> b) -> a -> b
$ v -> w -> x
f v
v w
w
onBare2F ::
(Functor f) =>
(v -> w -> f x) ->
DeepMap '[] v ->
DeepMap '[] w ->
f (DeepMap '[] x)
onBare2F :: forall (f :: * -> *) v w x.
Functor f =>
(v -> w -> f x)
-> DeepMap '[] v -> DeepMap '[] w -> f (DeepMap '[] x)
onBare2F v -> w -> f x
f (Bare v
v) (Bare w
w) = x -> DeepMap '[] x
forall v. v -> DeepMap '[] v
Bare (x -> DeepMap '[] x) -> f x -> f (DeepMap '[] x)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> v -> w -> f x
f v
v w
w
onNest2 ::
(Map k (DeepMap ks v) -> Map k (DeepMap ls w) -> Map k (DeepMap ms x)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w ->
DeepMap (k ': ms) x
onNest2 :: forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x)
f (Nest Map k (DeepMap ks v)
v) (Nest Map k (DeepMap ks w)
w) = Map k (DeepMap ms x) -> DeepMap (k : ms) x
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ms x) -> DeepMap (k : ms) x)
-> Map k (DeepMap ms x) -> DeepMap (k : ms) x
forall a b. (a -> b) -> a -> b
$ Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
v Map k (DeepMap ls w)
Map k (DeepMap ks w)
w
toMap :: DeepMap (k ': '[]) v -> Map k v
toMap :: forall k v. DeepMap '[k] v -> Map k v
toMap (Nest Map k (DeepMap ks v)
m) = DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare (DeepMap '[] v -> v) -> Map k (DeepMap '[] v) -> Map k v
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
fromMap :: (Ord k) => Map k v -> DeepMap '[k] v
fromMap :: forall k v. Ord k => Map k v -> DeepMap '[k] v
fromMap Map k v
m = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (v -> DeepMap '[] v) -> Map k v -> Map k (DeepMap '[] v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k v
m)
infixr 6 @>
(@>) :: (Ord k) => k -> DeepMap ks v -> DeepMap (k ': ks) v
k
k @> :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> DeepMap ks v
a = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ k -> DeepMap ks v -> Map k (DeepMap ks v)
forall k a. k -> a -> Map k a
Map.singleton k
k DeepMap ks v
a
{-# INLINE (@>) #-}
infixr 6 @|
(@|) :: (Ord k) => k -> v -> DeepMap '[k] v
k
k @| :: forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
a = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] v) -> DeepMap '[k] v)
-> (DeepMap '[] v -> Map k (DeepMap '[] v))
-> DeepMap '[] v
-> DeepMap '[k] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> DeepMap '[] v -> Map k (DeepMap '[] v)
forall k a. k -> a -> Map k a
Map.singleton k
k (DeepMap '[] v -> DeepMap '[k] v)
-> DeepMap '[] v -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
a
{-# INLINE (@|) #-}
deep :: Deep ks -> v -> DeepMap ks v
deep :: forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep Deep ks
js v
v = case Deep ks
js of
Deep ks
Deep0 -> v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v
Deep1 k
k Deep ks
ks -> k
k k -> DeepMap ks v -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep Deep ks
ks v
v
empty :: (Ord k) => DeepMap (k ': ks) v
empty :: forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest Map k (DeepMap ks v)
forall k a. Map k a
Map.empty
singleton :: (Ord k) => k -> v -> DeepMap '[k] v
singleton :: forall k v. Ord k => k -> v -> DeepMap '[k] v
singleton k
k v
v = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] v) -> DeepMap '[k] v)
-> (DeepMap '[] v -> Map k (DeepMap '[] v))
-> DeepMap '[] v
-> DeepMap '[k] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> DeepMap '[] v -> Map k (DeepMap '[] v)
forall k a. k -> a -> Map k a
Map.singleton k
k (DeepMap '[] v -> DeepMap '[k] v)
-> DeepMap '[] v -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v
elems :: DeepMap (k ': ks) v -> [DeepMap ks v]
elems :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [DeepMap ks v]
elems (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> [DeepMap ks v]
forall k a. Map k a -> [a]
Map.elems Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
elems1 :: DeepMap '[k] v -> [v]
elems1 :: forall k v. DeepMap '[k] v -> [v]
elems1 DeepMap '[k] v
m = DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare (DeepMap '[] v -> v) -> [DeepMap '[] v] -> [v]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DeepMap '[k] v -> [DeepMap '[] v]
forall k (ks :: [*]) v. DeepMap (k : ks) v -> [DeepMap ks v]
elems DeepMap '[k] v
m
keys :: DeepMap (k ': ks) v -> [k]
keys :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [k]
keys (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> [k]
forall k a. Map k a -> [k]
Map.keys Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
assocs :: DeepMap (k ': ks) v -> [(k, DeepMap ks v)]
assocs :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [(k, DeepMap ks v)]
assocs (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> [(k, DeepMap ks v)]
forall k a. Map k a -> [(k, a)]
Map.assocs Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
assocs1 :: DeepMap '[k] v -> [(k, v)]
assocs1 :: forall k v. DeepMap '[k] v -> [(k, v)]
assocs1 DeepMap '[k] v
dm = (DeepMap '[] v -> v) -> (k, DeepMap '[] v) -> (k, v)
forall a b. (a -> b) -> (k, a) -> (k, b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare ((k, DeepMap '[] v) -> (k, v)) -> [(k, DeepMap '[] v)] -> [(k, v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DeepMap '[k] v -> [(k, DeepMap '[] v)]
forall k (ks :: [*]) v. DeepMap (k : ks) v -> [(k, DeepMap ks v)]
assocs DeepMap '[k] v
dm
keysSet :: DeepMap (k ': ks) v -> Set k
keysSet :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> Set k
keysSet (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> Set k
forall k a. Map k a -> Set k
Map.keysSet Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
fromList ::
(Ord k, Semigroup (DeepMap ks v)) =>
([(k, DeepMap ks v)] -> DeepMap (k ': ks) v)
fromList :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
[(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromList [(k, DeepMap ks v)]
kvs = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWith ((DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a b c. (a -> b -> c) -> b -> a -> c
flip DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a. Semigroup a => a -> a -> a
(<>)) [(k, DeepMap ks v)]
kvs
fromListDeep ::
(Monoid (DeepMap ks v)) =>
([(Deep ks, v)] -> DeepMap ks v)
fromListDeep :: forall (ks :: [*]) v.
Monoid (DeepMap ks v) =>
[(Deep ks, v)] -> DeepMap ks v
fromListDeep = ((Deep ks, v) -> DeepMap ks v) -> [(Deep ks, v)] -> DeepMap ks v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap ((Deep ks -> v -> DeepMap ks v) -> (Deep ks, v) -> DeepMap ks v
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep)
fromList1 :: (Ord k, Semigroup v) => [(k, v)] -> DeepMap '[k] v
fromList1 :: forall k v. (Ord k, Semigroup v) => [(k, v)] -> DeepMap '[k] v
fromList1 = ((k, v) -> DeepMap '[k] v) -> [(k, v)] -> DeepMap '[k] v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap ((k -> v -> DeepMap '[k] v) -> (k, v) -> DeepMap '[k] v
forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry k -> v -> DeepMap '[k] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
(@|))
fromList2 ::
(Ord k0, Ord k1, Semigroup v) => [(k0, k1, v)] -> DeepMap '[k0, k1] v
fromList2 :: forall k0 k1 v.
(Ord k0, Ord k1, Semigroup v) =>
[(k0, k1, v)] -> DeepMap '[k0, k1] v
fromList2 = ((k0, k1, v) -> DeepMap '[k0, k1] v)
-> [(k0, k1, v)] -> DeepMap '[k0, k1] v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\(k0
k0, k1
k1, v
v) -> k0
k0 k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> v -> DeepMap '[k1] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v)
fromList3 ::
(Ord k0, Ord k1, Ord k2, Semigroup v) =>
[(k0, k1, k2, v)] ->
DeepMap '[k0, k1, k2] v
fromList3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2, Semigroup v) =>
[(k0, k1, k2, v)] -> DeepMap '[k0, k1, k2] v
fromList3 = ((k0, k1, k2, v) -> DeepMap '[k0, k1, k2] v)
-> [(k0, k1, k2, v)] -> DeepMap '[k0, k1, k2] v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\(k0
k0, k1
k1, k2
k2, v
v) -> k0
k0 k0 -> DeepMap '[k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2] v -> DeepMap '[k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> v -> DeepMap '[k2] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v)
fromList4 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup v) =>
[(k0, k1, k2, k3, v)] ->
DeepMap '[k0, k1, k2, k3] v
fromList4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup v) =>
[(k0, k1, k2, k3, v)] -> DeepMap '[k0, k1, k2, k3] v
fromList4 = ((k0, k1, k2, k3, v) -> DeepMap '[k0, k1, k2, k3] v)
-> [(k0, k1, k2, k3, v)] -> DeepMap '[k0, k1, k2, k3] v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\(k0
k0, k1
k1, k2
k2, k3
k3, v
v) -> k0
k0 k0 -> DeepMap '[k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2, k3] v -> DeepMap '[k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3] v -> DeepMap '[k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> v -> DeepMap '[k3] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v)
fromList5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup v) =>
[(k0, k1, k2, k3, k4, v)] ->
DeepMap '[k0, k1, k2, k3, k4] v
fromList5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup v) =>
[(k0, k1, k2, k3, k4, v)] -> DeepMap '[k0, k1, k2, k3, k4] v
fromList5 = ((k0, k1, k2, k3, k4, v) -> DeepMap '[k0, k1, k2, k3, k4] v)
-> [(k0, k1, k2, k3, k4, v)] -> DeepMap '[k0, k1, k2, k3, k4] v
forall m a. Monoid m => (a -> m) -> [a] -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\(k0
k0, k1
k1, k2
k2, k3
k3, k4
k4, v
v) -> k0
k0 k0
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3, k4] v -> DeepMap '[k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> DeepMap '[k4] v -> DeepMap '[k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k4
k4 k4 -> v -> DeepMap '[k4] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v)
fromListWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
[(k, DeepMap ks v)] ->
DeepMap (k ': ks) v
fromListWith :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f [(k, DeepMap ks v)]
kvs = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f [(k, DeepMap ks v)]
kvs
fromListWith1 :: (Ord k) => (v -> v -> v) -> [(k, v)] -> DeepMap '[k] v
fromListWith1 :: forall k v. Ord k => (v -> v -> v) -> [(k, v)] -> DeepMap '[k] v
fromListWith1 v -> v -> v
f [(k, v)]
kvs = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] v) -> DeepMap '[k] v)
-> Map k (DeepMap '[] v) -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (v -> DeepMap '[] v) -> Map k v -> Map k (DeepMap '[] v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (v -> v -> v) -> [(k, v)] -> Map k v
forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWith v -> v -> v
f [(k, v)]
kvs
fromListWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
[(k, DeepMap ks v)] ->
DeepMap (k ': ks) v
fromListWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f [(k, DeepMap ks v)]
kvs = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> Map k (DeepMap ks v)
forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f [(k, DeepMap ks v)]
kvs
fromListWithKey1 :: (Ord k) => (k -> v -> v -> v) -> [(k, v)] -> DeepMap '[k] v
fromListWithKey1 :: forall k v.
Ord k =>
(k -> v -> v -> v) -> [(k, v)] -> DeepMap '[k] v
fromListWithKey1 k -> v -> v -> v
f [(k, v)]
kvs = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] v) -> DeepMap '[k] v)
-> Map k (DeepMap '[] v) -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (v -> DeepMap '[] v) -> Map k v -> Map k (DeepMap '[] v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> v -> v -> v) -> [(k, v)] -> Map k v
forall k a. Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWithKey k -> v -> v -> v
f [(k, v)]
kvs
fromListWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v) ->
[(k0, k1, v)] ->
DeepMap '[k0, k1] v
fromListWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v) -> [(k0, k1, v)] -> DeepMap '[k0, k1] v
fromListWithKey2 k0 -> k1 -> v -> v -> v
f [(k0, k1, v)]
kvs =
(k0 -> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> [(k0, DeepMap '[k1] v)] -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWithKey ((k1 -> v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(k -> v -> v -> v)
-> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWithKey1 ((k1 -> v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> (k0 -> k1 -> v -> v -> v)
-> k0
-> DeepMap '[k1] v
-> DeepMap '[k1] v
-> DeepMap '[k1] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> v -> v
f)
([(k0, DeepMap '[k1] v)] -> DeepMap '[k0, k1] v)
-> [(k0, DeepMap '[k1] v)] -> DeepMap '[k0, k1] v
forall a b. (a -> b) -> a -> b
$ (\(k0
k0, k1
k1, v
v) -> (k0
k0, k1
k1 k1 -> v -> DeepMap '[k1] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v))
((k0, k1, v) -> (k0, DeepMap '[k1] v))
-> [(k0, k1, v)] -> [(k0, DeepMap '[k1] v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(k0, k1, v)]
kvs
fromListWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v) ->
[(k0, k1, k2, v)] ->
DeepMap '[k0, k1, k2] v
fromListWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> [(k0, k1, k2, v)] -> DeepMap '[k0, k1, k2] v
fromListWithKey3 k0 -> k1 -> k2 -> v -> v -> v
f [(k0, k1, k2, v)]
kvs =
(k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v)
-> [(k0, DeepMap '[k1, k2] v)] -> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWithKey ((k1 -> k2 -> v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWithKey2 ((k1 -> k2 -> v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v)
-> (k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> v -> v
f)
([(k0, DeepMap '[k1, k2] v)] -> DeepMap '[k0, k1, k2] v)
-> [(k0, DeepMap '[k1, k2] v)] -> DeepMap '[k0, k1, k2] v
forall a b. (a -> b) -> a -> b
$ (\(k0
k0, k1
k1, k2
k2, v
v) -> (k0
k0, k1
k1 k1 -> DeepMap '[k2] v -> DeepMap '[k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> v -> DeepMap '[k2] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v))
((k0, k1, k2, v) -> (k0, DeepMap '[k1, k2] v))
-> [(k0, k1, k2, v)] -> [(k0, DeepMap '[k1, k2] v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(k0, k1, k2, v)]
kvs
fromListWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v) ->
[(k0, k1, k2, k3, v)] ->
DeepMap '[k0, k1, k2, k3] v
fromListWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> [(k0, k1, k2, k3, v)] -> DeepMap '[k0, k1, k2, k3] v
fromListWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v -> v
f [(k0, k1, k2, k3, v)]
kvs =
(k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v)
-> [(k0, DeepMap '[k1, k2, k3] v)] -> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWithKey ((k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWithKey3 ((k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v)
-> (k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> v -> v
f)
([(k0, DeepMap '[k1, k2, k3] v)] -> DeepMap '[k0, k1, k2, k3] v)
-> [(k0, DeepMap '[k1, k2, k3] v)] -> DeepMap '[k0, k1, k2, k3] v
forall a b. (a -> b) -> a -> b
$ (\(k0
k0, k1
k1, k2
k2, k3
k3, v
v) -> (k0
k0, k1
k1 k1 -> DeepMap '[k2, k3] v -> DeepMap '[k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3] v -> DeepMap '[k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> v -> DeepMap '[k3] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v))
((k0, k1, k2, k3, v) -> (k0, DeepMap '[k1, k2, k3] v))
-> [(k0, k1, k2, k3, v)] -> [(k0, DeepMap '[k1, k2, k3] v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(k0, k1, k2, k3, v)]
kvs
fromListWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v) ->
[(k0, k1, k2, k3, k4, v)] ->
DeepMap '[k0, k1, k2, k3, k4] v
fromListWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> [(k0, k1, k2, k3, k4, v)] -> DeepMap '[k0, k1, k2, k3, k4] v
fromListWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f [(k0, k1, k2, k3, k4, v)]
kvs =
(k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v)
-> [(k0, DeepMap '[k1, k2, k3, k4] v)]
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> [(k, DeepMap ks v)] -> DeepMap (k : ks) v
fromListWithKey ((k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f)
([(k0, DeepMap '[k1, k2, k3, k4] v)]
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> [(k0, DeepMap '[k1, k2, k3, k4] v)]
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a b. (a -> b) -> a -> b
$ (\(k0
k0, k1
k1, k2
k2, k3
k3, k4
k4, v
v) -> (k0
k0, k1
k1 k1 -> DeepMap '[k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3, k4] v -> DeepMap '[k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> DeepMap '[k4] v -> DeepMap '[k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k4
k4 k4 -> v -> DeepMap '[k4] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v))
((k0, k1, k2, k3, k4, v) -> (k0, DeepMap '[k1, k2, k3, k4] v))
-> [(k0, k1, k2, k3, k4, v)] -> [(k0, DeepMap '[k1, k2, k3, k4] v)]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(k0, k1, k2, k3, k4, v)]
kvs
insert ::
(Ord k, Semigroup (DeepMap ks v)) =>
k ->
DeepMap ks v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
insert :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insert k
k DeepMap ks v
dm (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
Map.insertWith ((DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a b c. (a -> b -> c) -> b -> a -> c
flip DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a. Semigroup a => a -> a -> a
(<>)) k
k DeepMap ks v
dm Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
insertDeep ::
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k ': ks) ->
v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
insertDeep :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k : ks) -> v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insertDeep (Deep1 k
k0 Deep ks
ks) = k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insert k
k
k0 (DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v)
-> (v -> DeepMap ks v)
-> v
-> DeepMap (k : ks) v
-> DeepMap (k : ks) v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep Deep ks
Deep ks
ks
insert1 :: (Ord k, Semigroup v) => k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insert1 :: forall k v.
(Ord k, Semigroup v) =>
k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insert1 k
k v
v DeepMap '[k] v
m = DeepMap '[k] v
m DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
forall a. Semigroup a => a -> a -> a
<> k
k k -> v -> DeepMap '[k] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v
insert2 ::
(Ord k0, Ord k1, Semigroup v) =>
k0 ->
k1 ->
v ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
insert2 :: forall k0 k1 v.
(Ord k0, Ord k1, Semigroup v) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insert2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall a. Semigroup a => a -> a -> a
<> k0
k0 k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> v -> DeepMap '[k1] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v
insert3 ::
(Ord k0, Ord k1, Ord k2, Semigroup v) =>
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
insert3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2, Semigroup v) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insert3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m = DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall a. Semigroup a => a -> a -> a
<> k0
k0 k0 -> DeepMap '[k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2] v -> DeepMap '[k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> v -> DeepMap '[k2] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v
insert4 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup v) =>
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
insert4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup v) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insert4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall a. Semigroup a => a -> a -> a
<> k0
k0 k0 -> DeepMap '[k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2, k3] v -> DeepMap '[k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3] v -> DeepMap '[k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> v -> DeepMap '[k3] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v
insert5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup v) =>
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
insert5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup v) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
insert5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a. Semigroup a => a -> a -> a
<> k0
k0 k0
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k1
k1 k1 -> DeepMap '[k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k2
k2 k2 -> DeepMap '[k3, k4] v -> DeepMap '[k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k3
k3 k3 -> DeepMap '[k4] v -> DeepMap '[k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v
@> k4
k4 k4 -> v -> DeepMap '[k4] v
forall k v. Ord k => k -> v -> DeepMap '[k] v
@| v
v
overwrite ::
(Ord k) => k -> DeepMap ks v -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
overwrite :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k
k DeepMap ks v
v (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ k -> DeepMap ks v -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert k
k DeepMap ks v
v Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
overwriteDeep ::
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k ': ks) ->
v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
overwriteDeep :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k : ks) -> v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwriteDeep (Deep1 k
k0 Deep ks
ks) = k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k
k
k0 (DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v)
-> (v -> DeepMap ks v)
-> v
-> DeepMap (k : ks) v
-> DeepMap (k : ks) v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep Deep ks
Deep ks
ks
overwrite1 :: (Ord k) => k -> v -> DeepMap '[k] v -> DeepMap '[k] v
overwrite1 :: forall k v. Ord k => k -> v -> DeepMap '[k] v -> DeepMap '[k] v
overwrite1 k
k v
v = k -> DeepMap '[] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k
k (v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v)
overwrite2 ::
(Ord k0, Ord k1) => k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1 -> DeepMap '[] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k1
k1 (v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v) (DeepMap '[k1] v -> DeepMap '[k1] v)
-> (Maybe (DeepMap '[k1] v) -> DeepMap '[k1] v)
-> Maybe (DeepMap '[k1] v)
-> DeepMap '[k1] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[k1] v -> Maybe (DeepMap '[k1] v) -> DeepMap '[k1] v
forall a. a -> Maybe a -> a
fromMaybe DeepMap '[k1] v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty (Maybe (DeepMap '[k1] v) -> DeepMap '[k1] v)
-> Maybe (DeepMap '[k1] v) -> DeepMap '[k1] v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0) DeepMap '[k0, k1] v
m
overwrite3 ::
(Ord k0, Ord k1, Ord k2) =>
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
overwrite3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m =
k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1 -> k2 -> v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k1
k1 k2
k2 v
v (DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v)
-> (Maybe (DeepMap '[k1, k2] v) -> DeepMap '[k1, k2] v)
-> Maybe (DeepMap '[k1, k2] v)
-> DeepMap '[k1, k2] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[k1, k2] v
-> Maybe (DeepMap '[k1, k2] v) -> DeepMap '[k1, k2] v
forall a. a -> Maybe a -> a
fromMaybe DeepMap '[k1, k2] v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty (Maybe (DeepMap '[k1, k2] v) -> DeepMap '[k1, k2] v)
-> Maybe (DeepMap '[k1, k2] v) -> DeepMap '[k1, k2] v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0) DeepMap '[k0, k1, k2] v
m
overwrite4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
overwrite4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1
-> k2
-> k3
-> v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k1
k1 k2
k2 k3
k3 v
v (DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v)
-> (Maybe (DeepMap '[k1, k2, k3] v) -> DeepMap '[k1, k2, k3] v)
-> Maybe (DeepMap '[k1, k2, k3] v)
-> DeepMap '[k1, k2, k3] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[k1, k2, k3] v
-> Maybe (DeepMap '[k1, k2, k3] v) -> DeepMap '[k1, k2, k3] v
forall a. a -> Maybe a -> a
fromMaybe DeepMap '[k1, k2, k3] v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty (Maybe (DeepMap '[k1, k2, k3] v) -> DeepMap '[k1, k2, k3] v)
-> Maybe (DeepMap '[k1, k2, k3] v) -> DeepMap '[k1, k2, k3] v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0) DeepMap '[k0, k1, k2, k3] v
m
overwrite5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k1
k1 k2
k2 k3
k3 k4
k4 v
v (DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v)
-> (Maybe (DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k1, k2, k3, k4] v)
-> Maybe (DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k1, k2, k3, k4] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[k1, k2, k3, k4] v
-> Maybe (DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k1, k2, k3, k4] v
forall a. a -> Maybe a -> a
fromMaybe DeepMap '[k1, k2, k3, k4] v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty (Maybe (DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k1, k2, k3, k4] v)
-> Maybe (DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k1, k2, k3, k4] v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0) DeepMap '[k0, k1, k2, k3, k4] v
m
overwriteLookup ::
(Ord k) =>
k ->
DeepMap ks v ->
DeepMap (k ': ks) v ->
(Maybe (DeepMap ks v), DeepMap (k ': ks) v)
overwriteLookup :: forall k (ks :: [*]) v.
Ord k =>
k
-> DeepMap ks v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
overwriteLookup k
k DeepMap ks v
v (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> Map k (DeepMap ks v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
forall k a.
Ord k =>
(k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)
Map.insertLookupWithKey ((DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a b. a -> b -> a
const DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a b. a -> b -> a
const) k
k DeepMap ks v
v Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
overwriteLookupDeep ::
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k ': ks) ->
v ->
DeepMap (k ': ks) v ->
(Maybe (DeepMap ks v), DeepMap (k ': ks) v)
overwriteLookupDeep :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
Deep (k : ks)
-> v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
overwriteLookupDeep (Deep1 k
k0 Deep ks
ks) = k
-> DeepMap ks v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall k (ks :: [*]) v.
Ord k =>
k
-> DeepMap ks v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
overwriteLookup k
k
k0 (DeepMap ks v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v))
-> (v -> DeepMap ks v)
-> v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep Deep ks
Deep ks
ks
overwriteLookup1 ::
(Ord k) => k -> v -> DeepMap '[k] v -> (Maybe v, DeepMap '[k] v)
overwriteLookup1 :: forall k v.
Ord k =>
k -> v -> DeepMap '[k] v -> (Maybe v, DeepMap '[k] v)
overwriteLookup1 k
k v
v DeepMap '[k] v
m = (DeepMap '[k] v
m DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
@?| k
k, k -> v -> DeepMap '[k] v -> DeepMap '[k] v
forall k v. Ord k => k -> v -> DeepMap '[k] v -> DeepMap '[k] v
overwrite1 k
k v
v DeepMap '[k] v
m)
overwriteLookup2 ::
(Ord k0, Ord k1) =>
k0 ->
k1 ->
v ->
DeepMap '[k0, k1] v ->
(Maybe v, DeepMap '[k0, k1] v)
overwriteLookup2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
k0
-> k1 -> v -> DeepMap '[k0, k1] v -> (Maybe v, DeepMap '[k0, k1] v)
overwriteLookup2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = (DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1, k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m)
overwriteLookup3 ::
(Ord k0, Ord k1, Ord k2) =>
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
(Maybe v, DeepMap '[k0, k1, k2] v)
overwriteLookup3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> (Maybe v, DeepMap '[k0, k1, k2] v)
overwriteLookup3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m = (DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2, k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m)
overwriteLookup4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3] v)
overwriteLookup4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3] v)
overwriteLookup4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = (DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3, k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m)
overwriteLookup5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
overwriteLookup5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
overwriteLookup5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = (DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4, k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m)
insertWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
k ->
DeepMap ks v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
insertWith :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insertWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
Map.insertWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
insertWith1 ::
(Ord k) => (v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWith1 :: forall k v.
Ord k =>
(v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWith1 v -> v -> v
f k
k v
v = (DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> k -> DeepMap '[] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insertWith ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> v -> v
f) k
k (v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v)
insertWith2 ::
(Ord k0, Ord k1) =>
(v -> v -> v) ->
k0 ->
k1 ->
v ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
insertWith2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insertWith2 v -> v -> v
f k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v -> v) -> k1 -> v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWith1 v -> v -> v
f k1
k1 v
v DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
insertWith3 ::
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v) ->
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
insertWith3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insertWith3 v -> v -> v
f k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v -> v)
-> k1 -> k2 -> v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insertWith2 v -> v -> v
f k1
k1 k2
k2 v
v DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
insertWith4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
insertWith4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insertWith4 v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v -> v)
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insertWith3 v -> v -> v
f k1
k1 k2
k2 k3
k3 v
v DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
insertWith5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
insertWith5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
insertWith5 v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v -> v)
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insertWith4 v -> v -> v
f k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
insertWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
k ->
DeepMap ks v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
insertWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insertWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a.
Ord k =>
(k -> a -> a -> a) -> k -> a -> Map k a -> Map k a
Map.insertWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
insertWithKey1 ::
(Ord k) => (k -> v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWithKey1 :: forall k v.
Ord k =>
(k -> v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWithKey1 k -> v -> v -> v
f k
k v
v = (k -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> k -> DeepMap '[] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
insertWithKey ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> (k -> v -> v -> v)
-> k
-> DeepMap '[] v
-> DeepMap '[] v
-> DeepMap '[] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> v -> v
f) k
k (v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare v
v)
insertWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v) ->
k0 ->
k1 ->
v ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
insertWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insertWithKey2 k0 -> k1 -> v -> v -> v
f k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> v -> v -> v)
-> k1 -> v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(k -> v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWithKey1 (k0 -> k1 -> v -> v -> v
f k0
k0) k1
k1 v
v DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
insertWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
insertWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insertWithKey3 k0 -> k1 -> k2 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> v -> v -> v)
-> k1 -> k2 -> v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insertWithKey2 (k0 -> k1 -> k2 -> v -> v -> v
f k0
k0) k1
k1 k2
k2 v
v DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
insertWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
insertWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insertWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> v -> v -> v)
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insertWithKey3 (k0 -> k1 -> k2 -> k3 -> v -> v -> v
f k0
k0) k1
k1 k2
k2 k3
k3 v
v DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
insertWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
insertWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
insertWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insertWithKey4 (k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f k0
k0) k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
insertLookupWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
k ->
DeepMap ks v ->
DeepMap (k ': ks) v ->
(Maybe (DeepMap ks v), DeepMap (k ': ks) v)
insertLookupWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
insertLookupWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> k
-> DeepMap ks v
-> Map k (DeepMap ks v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
forall k a.
Ord k =>
(k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)
Map.insertLookupWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f k
k DeepMap ks v
v Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
insertLookupWithKey1 ::
(Ord k) =>
(k -> v -> v -> v) ->
k ->
v ->
DeepMap '[k] v ->
(Maybe v, DeepMap '[k] v)
insertLookupWithKey1 :: forall k v.
Ord k =>
(k -> v -> v -> v)
-> k -> v -> DeepMap '[k] v -> (Maybe v, DeepMap '[k] v)
insertLookupWithKey1 k -> v -> v -> v
f k
k v
v DeepMap '[k] v
m = (DeepMap '[k] v
m DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
@?| k
k, (k -> v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
forall k v.
Ord k =>
(k -> v -> v -> v) -> k -> v -> DeepMap '[k] v -> DeepMap '[k] v
insertWithKey1 k -> v -> v -> v
f k
k v
v DeepMap '[k] v
m)
insertLookupWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v) ->
k0 ->
k1 ->
v ->
DeepMap '[k0, k1] v ->
(Maybe v, DeepMap '[k0, k1] v)
insertLookupWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> k0
-> k1
-> v
-> DeepMap '[k0, k1] v
-> (Maybe v, DeepMap '[k0, k1] v)
insertLookupWithKey2 k0 -> k1 -> v -> v -> v
f k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m = (DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1, (k0 -> k1 -> v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
insertWithKey2 k0 -> k1 -> v -> v -> v
f k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m)
insertLookupWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
v ->
DeepMap '[k0, k1, k2] v ->
(Maybe v, DeepMap '[k0, k1, k2] v)
insertLookupWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> (Maybe v, DeepMap '[k0, k1, k2] v)
insertLookupWithKey3 k0 -> k1 -> k2 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m = (DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2, (k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
insertWithKey3 k0 -> k1 -> k2 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m)
insertLookupWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
v ->
DeepMap '[k0, k1, k2, k3] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3] v)
insertLookupWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3] v)
insertLookupWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m = (DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3, (k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
insertWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m)
insertLookupWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
insertLookupWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
insertLookupWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m = (DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4, (k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
insertWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m)
delete :: (Ord k) => k -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
delete :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
delete k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => k -> Map k a -> Map k a
Map.delete k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteDeep ::
(Monoid v) =>
Deep ks ->
DeepMap ks v ->
DeepMap ks v
deleteDeep :: forall v (ks :: [*]).
Monoid v =>
Deep ks -> DeepMap ks v -> DeepMap ks v
deleteDeep = \cases
Deep ks
Deep0 DeepMap ks v
_ -> DeepMap ks v
forall a. Monoid a => a
mempty
(Deep1 k
k Deep ks
ks) DeepMap ks v
m -> case DeepMap ks v
DeepMap (k : ks) v
m DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k
k of
Maybe (DeepMap ks v)
Nothing -> DeepMap ks v
m
Just DeepMap ks v
dm -> k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k
k (Deep ks -> DeepMap ks v -> DeepMap ks v
forall v (ks :: [*]).
Monoid v =>
Deep ks -> DeepMap ks v -> DeepMap ks v
deleteDeep Deep ks
ks DeepMap ks v
dm) DeepMap ks v
DeepMap (k : ks) v
m
delete1 :: (Ord k) => k -> DeepMap '[k] v -> DeepMap '[k] v
delete1 :: forall k v. Ord k => k -> DeepMap '[k] v -> DeepMap '[k] v
delete1 = k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
delete
delete2 ::
(Ord k0, Ord k1) => k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
delete2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
delete2 k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1 -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v. Ord k => k -> DeepMap '[k] v -> DeepMap '[k] v
delete1 k1
k1 DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
delete3 ::
(Ord k0, Ord k1, Ord k2) =>
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
delete3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
delete3 k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1 -> k2 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
delete2 k1
k1 k2
k2 DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
delete4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
delete4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
delete4 k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1
-> k2 -> k3 -> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
delete3 k1
k1 k2
k2 k3
k3 DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
delete5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
delete5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
delete5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 (k1
-> k2
-> k3
-> k4
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
delete4 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
adjust ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v) ->
k ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
adjust :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
adjust DeepMap ks v -> DeepMap ks v
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v)
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a
Map.adjust DeepMap ks v -> DeepMap ks v
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
adjustDeep :: (v -> v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
adjustDeep :: forall v (ks :: [*]).
(v -> v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
adjustDeep v -> v
f = \cases
Deep ks
Deep0 (Bare v
v) -> v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (v -> v
f v
v)
(Deep1 k
k Deep ks
ks) (Nest Map k (DeepMap ks v)
m) -> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v)
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a
Map.adjust ((v -> v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
forall v (ks :: [*]).
(v -> v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
adjustDeep v -> v
f Deep ks
ks) k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
adjust1 :: (Ord k) => (v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjust1 :: forall k v.
Ord k =>
(v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjust1 v -> v
f = (DeepMap '[] v -> DeepMap '[] v)
-> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
adjust ((v -> v) -> DeepMap '[] v -> DeepMap '[] v
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap v -> v
f)
adjust2 ::
(Ord k0, Ord k1) =>
(v -> v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
adjust2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v) -> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
adjust2 v -> v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v) -> k1 -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjust1 v -> v
f k1
k1 DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
adjust3 ::
(Ord k0, Ord k1, Ord k2) =>
(v -> v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
adjust3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
adjust3 v -> v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v) -> k1 -> k2 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v) -> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
adjust2 v -> v
f k1
k1 k2
k2 DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
adjust4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
adjust4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
adjust4 v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v)
-> k1
-> k2
-> k3
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
adjust3 v -> v
f k1
k1 k2
k2 k3
k3 DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
adjust5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
adjust5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
adjust5 v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> v)
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
adjust4 v -> v
f k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
adjustWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ks v) ->
k ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
adjustWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
adjustWithKey k -> DeepMap ks v -> DeepMap ks v
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> DeepMap ks v)
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (k -> a -> a) -> k -> Map k a -> Map k a
Map.adjustWithKey k -> DeepMap ks v -> DeepMap ks v
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
adjustWithKey1 ::
(Ord k) => (k -> v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjustWithKey1 :: forall k v.
Ord k =>
(k -> v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjustWithKey1 k -> v -> v
f = (k -> DeepMap '[] v -> DeepMap '[] v)
-> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v)
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
adjustWithKey ((v -> v) -> DeepMap '[] v -> DeepMap '[] v
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> v) -> DeepMap '[] v -> DeepMap '[] v)
-> (k -> v -> v) -> k -> DeepMap '[] v -> DeepMap '[] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> v
f)
adjustWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
adjustWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
adjustWithKey2 k0 -> k1 -> v -> v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> v -> v) -> k1 -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(k -> v -> v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
adjustWithKey1 (k0 -> k1 -> v -> v
f k0
k0) k1
k1 DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
adjustWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
adjustWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
adjustWithKey3 k0 -> k1 -> k2 -> v -> v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> v -> v)
-> k1 -> k2 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
adjustWithKey2 (k0 -> k1 -> k2 -> v -> v
f k0
k0) k1
k1 k2
k2 DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
adjustWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
adjustWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
adjustWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> v -> v)
-> k1
-> k2
-> k3
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
adjustWithKey3 (k0 -> k1 -> k2 -> k3 -> v -> v
f k0
k0) k1
k1 k2
k2 k3
k3 DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
adjustWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
adjustWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
adjustWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> k4 -> v -> v)
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
adjustWithKey4 (k0 -> k1 -> k2 -> k3 -> k4 -> v -> v
f k0
k0) k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
update ::
(Ord k) =>
(DeepMap ks v -> Maybe (DeepMap ks v)) ->
k ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
update :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
update DeepMap ks v -> Maybe (DeepMap ks v)
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a
Map.update DeepMap ks v -> Maybe (DeepMap ks v)
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateDeep ::
(Monoid v) =>
(v -> Maybe v) ->
Deep ks ->
DeepMap ks v ->
DeepMap ks v
updateDeep :: forall v (ks :: [*]).
Monoid v =>
(v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
updateDeep v -> Maybe v
f = \cases
Deep ks
Deep0 (Bare v
v) -> DeepMap ks v -> (v -> DeepMap ks v) -> Maybe v -> DeepMap ks v
forall b a. b -> (a -> b) -> Maybe a -> b
maybe DeepMap ks v
forall a. Monoid a => a
mempty v -> DeepMap ks v
v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (v -> Maybe v
f v
v)
(Deep1 k
k Deep ks
ks) (Nest Map k (DeepMap ks v)
m) -> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v)
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a
Map.adjust ((v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
forall v (ks :: [*]).
Monoid v =>
(v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
updateDeep v -> Maybe v
f Deep ks
ks) k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
update1 :: (Ord k) => (v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
update1 :: forall k v.
Ord k =>
(v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
update1 v -> Maybe v
f = (DeepMap '[] v -> Maybe (DeepMap '[] v))
-> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
update ((v -> Maybe v) -> DeepMap '[] v -> Maybe (DeepMap '[] v)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeepMap '[] a -> f (DeepMap '[] b)
traverse v -> Maybe v
f)
update2 ::
(Ord k0, Ord k1) =>
(v -> Maybe v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
update2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
update2 v -> Maybe v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> Maybe v) -> k1 -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
update1 v -> Maybe v
f k1
k1 DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
update3 ::
(Ord k0, Ord k1, Ord k2) =>
(v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
update3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
update3 v -> Maybe v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> Maybe v)
-> k1 -> k2 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
update2 v -> Maybe v
f k1
k1 k2
k2 DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
update4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
update4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
update4 v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> Maybe v)
-> k1
-> k2
-> k3
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
update3 v -> Maybe v
f k1
k1 k2
k2 k3
k3 DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
update5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
update5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
update5 v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((v -> Maybe v)
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
update4 v -> Maybe v
f k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
updateWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
k ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k a
Map.updateWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateWithKey1 ::
(Ord k) => (k -> v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
updateWithKey1 :: forall k v.
Ord k =>
(k -> v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
updateWithKey1 k -> v -> Maybe v
f = (k -> DeepMap '[] v -> Maybe (DeepMap '[] v))
-> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateWithKey ((v -> Maybe v) -> DeepMap '[] v -> Maybe (DeepMap '[] v)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeepMap '[] a -> f (DeepMap '[] b)
traverse ((v -> Maybe v) -> DeepMap '[] v -> Maybe (DeepMap '[] v))
-> (k -> v -> Maybe v)
-> k
-> DeepMap '[] v
-> Maybe (DeepMap '[] v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> Maybe v
f)
updateWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
updateWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
updateWithKey2 k0 -> k1 -> v -> Maybe v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1] v)
Nothing -> DeepMap '[k0, k1] v
m
Just DeepMap '[k1] v
dm -> k0 -> DeepMap '[k1] v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> v -> Maybe v) -> k1 -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(k -> v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
updateWithKey1 (k0 -> k1 -> v -> Maybe v
f k0
k0) k1
k1 DeepMap '[k1] v
dm) DeepMap '[k0, k1] v
m
updateWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
updateWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
updateWithKey3 k0 -> k1 -> k2 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2] v)
Nothing -> DeepMap '[k0, k1, k2] v
m
Just DeepMap '[k1, k2] v
dm -> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> v -> Maybe v)
-> k1 -> k2 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
updateWithKey2 (k0 -> k1 -> k2 -> v -> Maybe v
f k0
k0) k1
k1 k2
k2 DeepMap '[k1, k2] v
dm) DeepMap '[k0, k1, k2] v
m
updateWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
updateWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
updateWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3] v)
Nothing -> DeepMap '[k0, k1, k2, k3] v
m
Just DeepMap '[k1, k2, k3] v
dm -> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> v -> Maybe v)
-> k1
-> k2
-> k3
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
updateWithKey3 (k0 -> k1 -> k2 -> k3 -> v -> Maybe v
f k0
k0) k1
k1 k2
k2 k3
k3 DeepMap '[k1, k2, k3] v
dm) DeepMap '[k0, k1, k2, k3] v
m
updateWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
updateWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
updateWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 of
Maybe (DeepMap '[k1, k2, k3, k4] v)
Nothing -> DeepMap '[k0, k1, k2, k3, k4] v
m
Just DeepMap '[k1, k2, k3, k4] v
dm -> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap ks v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
overwrite k0
k0 ((k1 -> k2 -> k3 -> k4 -> v -> Maybe v)
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
updateWithKey4 (k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v
f k0
k0) k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k1, k2, k3, k4] v
dm) DeepMap '[k0, k1, k2, k3, k4] v
m
updateLookupWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
k ->
DeepMap (k ': ks) v ->
(Maybe (DeepMap ks v), DeepMap (k ': ks) v)
updateLookupWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> k
-> DeepMap (k : ks) v
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
updateLookupWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
-> (Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> k
-> Map k (DeepMap ks v)
-> (Maybe (DeepMap ks v), Map k (DeepMap ks v))
forall k a.
Ord k =>
(k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)
Map.updateLookupWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateLookupWithKey1 ::
(Ord k) =>
(k -> v -> Maybe v) ->
k ->
DeepMap '[k] v ->
(Maybe v, DeepMap '[k] v)
updateLookupWithKey1 :: forall k v.
Ord k =>
(k -> v -> Maybe v)
-> k -> DeepMap '[k] v -> (Maybe v, DeepMap '[k] v)
updateLookupWithKey1 k -> v -> Maybe v
f k
k DeepMap '[k] v
m = (DeepMap '[k] v
m DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
@?| k
k, (k -> v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k v.
Ord k =>
(k -> v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
updateWithKey1 k -> v -> Maybe v
f k
k DeepMap '[k] v
m)
updateLookupWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
(Maybe v, DeepMap '[k0, k1] v)
updateLookupWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v)
-> k0
-> k1
-> DeepMap '[k0, k1] v
-> (Maybe v, DeepMap '[k0, k1] v)
updateLookupWithKey2 k0 -> k1 -> v -> Maybe v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = (DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1, (k0 -> k1 -> v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
updateWithKey2 k0 -> k1 -> v -> Maybe v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m)
updateLookupWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
(Maybe v, DeepMap '[k0, k1, k2] v)
updateLookupWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> (Maybe v, DeepMap '[k0, k1, k2] v)
updateLookupWithKey3 k0 -> k1 -> k2 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = (DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2, (k0 -> k1 -> k2 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
updateWithKey3 k0 -> k1 -> k2 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m)
updateLookupWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3] v)
updateLookupWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3] v)
updateLookupWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = (DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3, (k0 -> k1 -> k2 -> k3 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
updateWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m)
updateLookupWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
updateLookupWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (Maybe v, DeepMap '[k0, k1, k2, k3, k4] v)
updateLookupWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = (DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4, (k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
updateWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m)
alter ::
(Ord k) =>
(Maybe (DeepMap ks v) -> Maybe (DeepMap ks v)) ->
k ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
alter :: forall k (ks :: [*]) v.
Ord k =>
(Maybe (DeepMap ks v) -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
alter Maybe (DeepMap ks v) -> Maybe (DeepMap ks v)
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (Maybe (DeepMap ks v) -> Maybe (DeepMap ks v))
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a.
Ord k =>
(Maybe a -> Maybe a) -> k -> Map k a -> Map k a
Map.alter Maybe (DeepMap ks v) -> Maybe (DeepMap ks v)
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
alterDeep ::
(Monoid v) =>
(Maybe v -> Maybe v) ->
Deep ks ->
DeepMap ks v ->
DeepMap ks v
alterDeep :: forall v (ks :: [*]).
Monoid v =>
(Maybe v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
alterDeep Maybe v -> Maybe v
f = \cases
Deep ks
Deep0 (Bare v
v) -> DeepMap ks v -> (v -> DeepMap ks v) -> Maybe v -> DeepMap ks v
forall b a. b -> (a -> b) -> Maybe a -> b
maybe DeepMap ks v
forall a. Monoid a => a
mempty v -> DeepMap ks v
v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (Maybe v -> Maybe v
f (v -> Maybe v
forall a. a -> Maybe a
Just v
v))
(Deep1 k
k Deep ks
ks) (Nest Map k (DeepMap ks v)
m) -> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v)
-> k -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a) -> k -> Map k a -> Map k a
Map.adjust ((Maybe v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
forall v (ks :: [*]).
Monoid v =>
(Maybe v -> Maybe v) -> Deep ks -> DeepMap ks v -> DeepMap ks v
alterDeep Maybe v -> Maybe v
f Deep ks
ks) k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
alter1 ::
(Ord k) => (Maybe v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
alter1 :: forall k v.
Ord k =>
(Maybe v -> Maybe v) -> k -> DeepMap '[k] v -> DeepMap '[k] v
alter1 Maybe v -> Maybe v
f = (Maybe (DeepMap '[] v) -> Maybe (DeepMap '[] v))
-> k -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
(Maybe (DeepMap ks v) -> Maybe (DeepMap ks v))
-> k -> DeepMap (k : ks) v -> DeepMap (k : ks) v
alter ((v -> DeepMap '[] v) -> Maybe v -> Maybe (DeepMap '[] v)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (Maybe v -> Maybe (DeepMap '[] v))
-> (Maybe (DeepMap '[] v) -> Maybe v)
-> Maybe (DeepMap '[] v)
-> Maybe (DeepMap '[] v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe v -> Maybe v
f (Maybe v -> Maybe v)
-> (Maybe (DeepMap '[] v) -> Maybe v)
-> Maybe (DeepMap '[] v)
-> Maybe v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DeepMap '[] v -> v) -> Maybe (DeepMap '[] v) -> Maybe v
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare)
alter2 ::
(Ord k0, Ord k1) =>
(Maybe v -> Maybe v) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
alter2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(Maybe v -> Maybe v)
-> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
alter2 Maybe v -> Maybe v
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m = case Maybe v -> Maybe v
f (Maybe v -> Maybe v) -> Maybe v -> Maybe v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1 of
Maybe v
Nothing -> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
delete2 k0
k0 k1
k1 DeepMap '[k0, k1] v
m
Just v
v -> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m
alter3 ::
(Ord k0, Ord k1, Ord k2) =>
(Maybe v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
alter3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(Maybe v -> Maybe v)
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
alter3 Maybe v -> Maybe v
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = case Maybe v -> Maybe v
f (Maybe v -> Maybe v) -> Maybe v -> Maybe v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2 of
Maybe v
Nothing -> k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
delete3 k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m
Just v
v -> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m
alter4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(Maybe v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
alter4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(Maybe v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
alter4 Maybe v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = case Maybe v -> Maybe v
f (Maybe v -> Maybe v) -> Maybe v -> Maybe v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3 of
Maybe v
Nothing -> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
delete4 k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m
Just v
v -> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m
alter5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(Maybe v -> Maybe v) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
alter5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(Maybe v -> Maybe v)
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
alter5 Maybe v -> Maybe v
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = case Maybe v -> Maybe v
f (Maybe v -> Maybe v) -> Maybe v -> Maybe v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4 of
Maybe v
Nothing -> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
delete5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m
Just v
v -> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m
alterF ::
(Functor f, Ord k) =>
(Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v))) ->
k ->
DeepMap (k ': ks) v ->
f (DeepMap (k ': ks) v)
alterF :: forall (f :: * -> *) k (ks :: [*]) v.
(Functor f, Ord k) =>
(Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v)))
-> k -> DeepMap (k : ks) v -> f (DeepMap (k : ks) v)
alterF Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v))
f k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> f (Map k (DeepMap ks v)) -> f (DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v)))
-> k -> Map k (DeepMap ks v) -> f (Map k (DeepMap ks v))
forall (f :: * -> *) k a.
(Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
Map.alterF Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v))
f k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
alterFDeep ::
(Monoid v, Applicative f) =>
(Maybe v -> f (Maybe v)) ->
Deep ks ->
DeepMap ks v ->
f (DeepMap ks v)
alterFDeep :: forall v (f :: * -> *) (ks :: [*]).
(Monoid v, Applicative f) =>
(Maybe v -> f (Maybe v))
-> Deep ks -> DeepMap ks v -> f (DeepMap ks v)
alterFDeep Maybe v -> f (Maybe v)
f = \cases
Deep ks
Deep0 (Bare v
v) -> DeepMap ks v -> (v -> DeepMap ks v) -> Maybe v -> DeepMap ks v
forall b a. b -> (a -> b) -> Maybe a -> b
maybe DeepMap ks v
forall a. Monoid a => a
mempty v -> DeepMap ks v
v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare (Maybe v -> DeepMap ks v) -> f (Maybe v) -> f (DeepMap ks v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe v -> f (Maybe v)
f (v -> Maybe v
forall a. a -> Maybe a
Just v
v)
(Deep1 k
k Deep ks
ks) (Nest Map k (DeepMap ks v)
m) -> Map k (DeepMap ks v) -> DeepMap ks v
Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap ks v)
-> f (Map k (DeepMap ks v)) -> f (DeepMap ks v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v)))
-> k -> Map k (DeepMap ks v) -> f (Map k (DeepMap ks v))
forall (f :: * -> *) k a.
(Functor f, Ord k) =>
(Maybe a -> f (Maybe a)) -> k -> Map k a -> f (Map k a)
Map.alterF ((DeepMap ks v -> f (DeepMap ks v))
-> Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Maybe a -> f (Maybe b)
traverse ((Maybe v -> f (Maybe v))
-> Deep ks -> DeepMap ks v -> f (DeepMap ks v)
forall v (f :: * -> *) (ks :: [*]).
(Monoid v, Applicative f) =>
(Maybe v -> f (Maybe v))
-> Deep ks -> DeepMap ks v -> f (DeepMap ks v)
alterFDeep Maybe v -> f (Maybe v)
f Deep ks
ks)) k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
alterF1 ::
(Functor f, Ord k) =>
(Maybe v -> f (Maybe v)) ->
k ->
DeepMap '[k] v ->
f (DeepMap '[k] v)
alterF1 :: forall (f :: * -> *) k v.
(Functor f, Ord k) =>
(Maybe v -> f (Maybe v))
-> k -> DeepMap '[k] v -> f (DeepMap '[k] v)
alterF1 Maybe v -> f (Maybe v)
f = (Maybe (DeepMap '[] v) -> f (Maybe (DeepMap '[] v)))
-> k -> DeepMap '[k] v -> f (DeepMap '[k] v)
forall (f :: * -> *) k (ks :: [*]) v.
(Functor f, Ord k) =>
(Maybe (DeepMap ks v) -> f (Maybe (DeepMap ks v)))
-> k -> DeepMap (k : ks) v -> f (DeepMap (k : ks) v)
alterF ((Maybe v -> Maybe (DeepMap '[] v))
-> f (Maybe v) -> f (Maybe (DeepMap '[] v))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> DeepMap '[] v) -> Maybe v -> Maybe (DeepMap '[] v)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap v -> DeepMap '[] v
forall v. v -> DeepMap '[] v
Bare) (f (Maybe v) -> f (Maybe (DeepMap '[] v)))
-> (Maybe (DeepMap '[] v) -> f (Maybe v))
-> Maybe (DeepMap '[] v)
-> f (Maybe (DeepMap '[] v))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe v -> f (Maybe v)
f (Maybe v -> f (Maybe v))
-> (Maybe (DeepMap '[] v) -> Maybe v)
-> Maybe (DeepMap '[] v)
-> f (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (DeepMap '[] v -> v) -> Maybe (DeepMap '[] v) -> Maybe v
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare)
alterF2 ::
(Functor f, Ord k0, Ord k1) =>
(Maybe v -> f (Maybe v)) ->
k0 ->
k1 ->
DeepMap '[k0, k1] v ->
f (DeepMap '[k0, k1] v)
alterF2 :: forall (f :: * -> *) k0 k1 v.
(Functor f, Ord k0, Ord k1) =>
(Maybe v -> f (Maybe v))
-> k0 -> k1 -> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] v)
alterF2 Maybe v -> f (Maybe v)
f k0
k0 k1
k1 DeepMap '[k0, k1] v
m =
Maybe v -> f (Maybe v)
f (DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1) f (Maybe v)
-> (Maybe v -> DeepMap '[k0, k1] v) -> f (DeepMap '[k0, k1] v)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Maybe v
Nothing -> k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
delete2 k0
k0 k1
k1 DeepMap '[k0, k1] v
m
Just v
v -> k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
k0 -> k1 -> v -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
overwrite2 k0
k0 k1
k1 v
v DeepMap '[k0, k1] v
m
alterF3 ::
(Functor f, Ord k0, Ord k1, Ord k2) =>
(Maybe v -> f (Maybe v)) ->
k0 ->
k1 ->
k2 ->
DeepMap '[k0, k1, k2] v ->
f (DeepMap '[k0, k1, k2] v)
alterF3 :: forall (f :: * -> *) k0 k1 k2 v.
(Functor f, Ord k0, Ord k1, Ord k2) =>
(Maybe v -> f (Maybe v))
-> k0
-> k1
-> k2
-> DeepMap '[k0, k1, k2] v
-> f (DeepMap '[k0, k1, k2] v)
alterF3 Maybe v -> f (Maybe v)
f k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m =
Maybe v -> f (Maybe v)
f (DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2) f (Maybe v)
-> (Maybe v -> DeepMap '[k0, k1, k2] v)
-> f (DeepMap '[k0, k1, k2] v)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Maybe v
Nothing -> k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
delete3 k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m
Just v
v -> k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
k0
-> k1
-> k2
-> v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
overwrite3 k0
k0 k1
k1 k2
k2 v
v DeepMap '[k0, k1, k2] v
m
alterF4 ::
(Functor f, Ord k0, Ord k1, Ord k2, Ord k3) =>
(Maybe v -> f (Maybe v)) ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
f (DeepMap '[k0, k1, k2, k3] v)
alterF4 :: forall (f :: * -> *) k0 k1 k2 k3 v.
(Functor f, Ord k0, Ord k1, Ord k2, Ord k3) =>
(Maybe v -> f (Maybe v))
-> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> f (DeepMap '[k0, k1, k2, k3] v)
alterF4 Maybe v -> f (Maybe v)
f k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m =
Maybe v -> f (Maybe v)
f (DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3) f (Maybe v)
-> (Maybe v -> DeepMap '[k0, k1, k2, k3] v)
-> f (DeepMap '[k0, k1, k2, k3] v)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Maybe v
Nothing -> k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
delete4 k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m
Just v
v -> k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
k0
-> k1
-> k2
-> k3
-> v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
overwrite4 k0
k0 k1
k1 k2
k2 k3
k3 v
v DeepMap '[k0, k1, k2, k3] v
m
alterF5 ::
(Functor f, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(Maybe v -> f (Maybe v)) ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
f (DeepMap '[k0, k1, k2, k3, k4] v)
alterF5 :: forall (f :: * -> *) k0 k1 k2 k3 k4 v.
(Functor f, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(Maybe v -> f (Maybe v))
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] v)
alterF5 Maybe v -> f (Maybe v)
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m =
Maybe v -> f (Maybe v)
f (DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4) f (Maybe v)
-> (Maybe v -> DeepMap '[k0, k1, k2, k3, k4] v)
-> f (DeepMap '[k0, k1, k2, k3, k4] v)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> \case
Maybe v
Nothing -> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
delete5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m
Just v
v -> k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
k0
-> k1
-> k2
-> k3
-> k4
-> v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
overwrite5 k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v DeepMap '[k0, k1, k2, k3, k4] v
m
lookup :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe (DeepMap ks v)
lookup :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v)
lookup k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe (DeepMap ks v)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupDeep :: Deep ks -> DeepMap ks v -> Maybe v
lookupDeep :: forall (ks :: [*]) v. Deep ks -> DeepMap ks v -> Maybe v
lookupDeep = \cases
Deep ks
Deep0 (Bare v
v) -> v -> Maybe v
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
pure v
v
(Deep1 k
k Deep ks
ks) DeepMap ks v
m -> Deep ks -> DeepMap ks v -> Maybe v
forall (ks :: [*]) v. Deep ks -> DeepMap ks v -> Maybe v
lookupDeep Deep ks
ks (DeepMap ks v -> Maybe v) -> Maybe (DeepMap ks v) -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< DeepMap ks v
DeepMap (k : ks) v
m DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k
k
lookup1 :: (Ord k) => k -> DeepMap '[k] v -> Maybe v
lookup1 :: forall k v. Ord k => k -> DeepMap '[k] v -> Maybe v
lookup1 k
k (Nest Map k (DeepMap ks v)
m) = DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare (DeepMap '[] v -> v) -> Maybe (DeepMap '[] v) -> Maybe v
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> k -> Map k (DeepMap '[] v) -> Maybe (DeepMap '[] v)
forall k a. Ord k => k -> Map k a -> Maybe a
Map.lookup k
k Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
(@?) :: (Ord k) => DeepMap (k ': ks) v -> k -> Maybe (DeepMap ks v)
@? :: forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
(@?) = (k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
forall a b c. (a -> b -> c) -> b -> a -> c
flip k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v)
lookup
(@?|) :: (Ord k) => DeepMap '[k] v -> k -> Maybe v
@?| :: forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
(@?|) = (k -> DeepMap '[k] v -> Maybe v) -> DeepMap '[k] v -> k -> Maybe v
forall a b c. (a -> b -> c) -> b -> a -> c
flip k -> DeepMap '[k] v -> Maybe v
forall k v. Ord k => k -> DeepMap '[k] v -> Maybe v
lookup1
(@??) :: (Ord k) => Maybe (DeepMap (k ': ks) v) -> k -> Maybe (DeepMap ks v)
Maybe (DeepMap (k : ks) v)
mm @?? :: forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k
k = Maybe (DeepMap (k : ks) v)
mm Maybe (DeepMap (k : ks) v)
-> (DeepMap (k : ks) v -> Maybe (DeepMap ks v))
-> Maybe (DeepMap ks v)
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k
k)
(@??|) :: (Ord k) => Maybe (DeepMap '[k] v) -> k -> Maybe v
Maybe (DeepMap '[k] v)
mm @??| :: forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k
k = Maybe (DeepMap '[k] v)
mm Maybe (DeepMap '[k] v) -> (DeepMap '[k] v -> Maybe v) -> Maybe v
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
@?| k
k)
(@!) ::
(Ord k, Monoid (DeepMap ks v)) => DeepMap (k ': ks) v -> k -> DeepMap ks v
@! :: forall k (ks :: [*]) v.
(Ord k, Monoid (DeepMap ks v)) =>
DeepMap (k : ks) v -> k -> DeepMap ks v
(@!) = (DeepMap ks v -> Maybe (DeepMap ks v) -> DeepMap ks v
forall a. a -> Maybe a -> a
fromMaybe DeepMap ks v
forall a. Monoid a => a
mempty .) ((k -> Maybe (DeepMap ks v)) -> k -> DeepMap ks v)
-> (DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v
-> k
-> DeepMap ks v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
(@?)
(@!|) :: (Ord k, Monoid v) => DeepMap '[k] v -> k -> v
@!| :: forall k v. (Ord k, Monoid v) => DeepMap '[k] v -> k -> v
(@!|) = (v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
forall a. Monoid a => a
mempty .) ((k -> Maybe v) -> k -> v)
-> (DeepMap '[k] v -> k -> Maybe v) -> DeepMap '[k] v -> k -> v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
(@?|)
findWithDefault ::
(Ord k) => DeepMap ks v -> k -> DeepMap (k ': ks) v -> DeepMap ks v
findWithDefault :: forall k (ks :: [*]) v.
Ord k =>
DeepMap ks v -> k -> DeepMap (k : ks) v -> DeepMap ks v
findWithDefault DeepMap ks v
a = (DeepMap ks v -> Maybe (DeepMap ks v) -> DeepMap ks v
forall a. a -> Maybe a -> a
fromMaybe DeepMap ks v
a .) ((DeepMap (k : ks) v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap ks v)
-> (k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v))
-> k
-> DeepMap (k : ks) v
-> DeepMap ks v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v)
forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (DeepMap ks v)
lookup
findWithDefault1 :: (Ord k) => v -> k -> DeepMap '[k] v -> v
findWithDefault1 :: forall k v. Ord k => v -> k -> DeepMap '[k] v -> v
findWithDefault1 v
a k
k DeepMap '[k] v
m = v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
a (Maybe v -> v) -> Maybe v -> v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k] v
m DeepMap '[k] v -> k -> Maybe v
forall k v. Ord k => DeepMap '[k] v -> k -> Maybe v
@?| k
k
findWithDefault2 ::
(Ord k0, Ord k1) => v -> k0 -> k1 -> DeepMap '[k0, k1] v -> v
findWithDefault2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
v -> k0 -> k1 -> DeepMap '[k0, k1] v -> v
findWithDefault2 v
a k0
k0 k1
k1 DeepMap '[k0, k1] v
m = v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
a (Maybe v -> v) -> Maybe v -> v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1] v
m DeepMap '[k0, k1] v -> k0 -> Maybe (DeepMap '[k1] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1] v) -> k1 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k1
k1
findWithDefault3 ::
(Ord k0, Ord k1, Ord k2) => v -> k0 -> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> v
findWithDefault3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
v -> k0 -> k1 -> k2 -> DeepMap '[k0, k1, k2] v -> v
findWithDefault3 v
a k0
k0 k1
k1 k2
k2 DeepMap '[k0, k1, k2] v
m = v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
a (Maybe v -> v) -> Maybe v -> v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2] v
m DeepMap '[k0, k1, k2] v -> k0 -> Maybe (DeepMap '[k1, k2] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2] v) -> k1 -> Maybe (DeepMap '[k2] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2] v) -> k2 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k2
k2
findWithDefault4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
v ->
k0 ->
k1 ->
k2 ->
k3 ->
DeepMap '[k0, k1, k2, k3] v ->
v
findWithDefault4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
v -> k0 -> k1 -> k2 -> k3 -> DeepMap '[k0, k1, k2, k3] v -> v
findWithDefault4 v
a k0
k0 k1
k1 k2
k2 k3
k3 DeepMap '[k0, k1, k2, k3] v
m = v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
a (Maybe v -> v) -> Maybe v -> v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3] v
m DeepMap '[k0, k1, k2, k3] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3] v)
-> k1 -> Maybe (DeepMap '[k2, k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3] v) -> k2 -> Maybe (DeepMap '[k3] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3] v) -> k3 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k3
k3
findWithDefault5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
v ->
k0 ->
k1 ->
k2 ->
k3 ->
k4 ->
DeepMap '[k0, k1, k2, k3, k4] v ->
v
findWithDefault5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
v
-> k0
-> k1
-> k2
-> k3
-> k4
-> DeepMap '[k0, k1, k2, k3, k4] v
-> v
findWithDefault5 v
a k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 DeepMap '[k0, k1, k2, k3, k4] v
m = v -> Maybe v -> v
forall a. a -> Maybe a -> a
fromMaybe v
a (Maybe v -> v) -> Maybe v -> v
forall a b. (a -> b) -> a -> b
$ DeepMap '[k0, k1, k2, k3, k4] v
m DeepMap '[k0, k1, k2, k3, k4] v
-> k0 -> Maybe (DeepMap '[k1, k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> k -> Maybe (DeepMap ks v)
@? k0
k0 Maybe (DeepMap '[k1, k2, k3, k4] v)
-> k1 -> Maybe (DeepMap '[k2, k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k1
k1 Maybe (DeepMap '[k2, k3, k4] v)
-> k2 -> Maybe (DeepMap '[k3, k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k2
k2 Maybe (DeepMap '[k3, k4] v) -> k3 -> Maybe (DeepMap '[k4] v)
forall k (ks :: [*]) v.
Ord k =>
Maybe (DeepMap (k : ks) v) -> k -> Maybe (DeepMap ks v)
@?? k3
k3 Maybe (DeepMap '[k4] v) -> k4 -> Maybe v
forall k v. Ord k => Maybe (DeepMap '[k] v) -> k -> Maybe v
@??| k4
k4
member :: (Ord k) => k -> DeepMap (k ': ks) v -> Bool
member :: forall k (ks :: [*]) v. Ord k => k -> DeepMap (k : ks) v -> Bool
member k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Bool
forall k a. Ord k => k -> Map k a -> Bool
Map.member k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
notMember :: (Ord k) => k -> DeepMap (k ': ks) v -> Bool
notMember :: forall k (ks :: [*]) v. Ord k => k -> DeepMap (k : ks) v -> Bool
notMember k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Bool
forall k a. Ord k => k -> Map k a -> Bool
Map.notMember k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupLT :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupLT :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupLT k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k v. Ord k => k -> Map k v -> Maybe (k, v)
Map.lookupLT k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupGT :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupGT :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupGT k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k v. Ord k => k -> Map k v -> Maybe (k, v)
Map.lookupGT k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupLE :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupLE :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupLE k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k v. Ord k => k -> Map k v -> Maybe (k, v)
Map.lookupLE k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupGE :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupGE :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupGE k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k v. Ord k => k -> Map k v -> Maybe (k, v)
Map.lookupGE k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
null :: DeepMap (k ': ks) v -> Bool
null :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> Bool
null (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> Bool
forall k a. Map k a -> Bool
Map.null Map k (DeepMap ks v)
m
size :: DeepMap (k ': ks) v -> Int
size :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> Int
size (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> Int
forall k a. Map k a -> Int
Map.size Map k (DeepMap ks v)
m
union ::
(Ord k, Semigroup (DeepMap ks v)) =>
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
union :: forall k (ks :: [*]) v.
(Ord k, Semigroup (DeepMap ks v)) =>
DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
union = DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall a. Semigroup a => a -> a -> a
(<>)
unionWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
unionWith :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a. Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
Map.unionWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f)
unionWith1 ::
(Ord k) => (v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 :: forall k v.
Ord k =>
(v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 v -> v -> v
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v) -> Map k (DeepMap '[] v))
-> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
forall k a. Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
Map.unionWith ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> v -> v
f))
unionWith2 ::
(Ord k0, Ord k1) =>
(v -> v -> v) ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
unionWith2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWith2 v -> v -> v
f = (DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith ((v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 v -> v -> v
f)
unionWith3 ::
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v) ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
unionWith3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWith3 v -> v -> v
f = (DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith ((v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWith2 v -> v -> v
f)
unionWith4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
unionWith4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWith4 v -> v -> v
f = (DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWith3 v -> v -> v
f)
unionWith5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
unionWith5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
unionWith5 v -> v -> v
f = (DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWith4 v -> v -> v
f)
unionWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
unionWithKey :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ks v)
forall k a.
Ord k =>
(k -> a -> a -> a) -> Map k a -> Map k a -> Map k a
Map.unionWithKey k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f)
unionWithKey1 ::
(Ord k) =>
(k -> v -> v -> v) ->
DeepMap '[k] v ->
DeepMap '[k] v ->
DeepMap '[k] v
unionWithKey1 :: forall k v.
Ord k =>
(k -> v -> v -> v)
-> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWithKey1 k -> v -> v -> v
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v) -> Map k (DeepMap '[] v))
-> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
forall k a.
Ord k =>
(k -> a -> a -> a) -> Map k a -> Map k a -> Map k a
Map.unionWithKey ((k -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v))
-> (k -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] v)
forall a b. (a -> b) -> a -> b
$ (v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> (k -> v -> v -> v)
-> k
-> DeepMap '[] v
-> DeepMap '[] v
-> DeepMap '[] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> v -> v
f)
unionWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v) ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] v
unionWithKey2 :: forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWithKey2 k0 -> k1 -> v -> v -> v
f = (k0 -> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWithKey ((k1 -> v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(k -> v -> v -> v)
-> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWithKey1 ((k1 -> v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> (k0 -> k1 -> v -> v -> v)
-> k0
-> DeepMap '[k1] v
-> DeepMap '[k1] v
-> DeepMap '[k1] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> v -> v
f)
unionWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v) ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
unionWithKey3 :: forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWithKey3 k0 -> k1 -> k2 -> v -> v -> v
f = (k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWithKey ((k1 -> k2 -> v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWithKey2 ((k1 -> k2 -> v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v)
-> (k0 -> k1 -> k2 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> v -> v
f)
unionWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
unionWithKey4 :: forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWithKey4 k0 -> k1 -> k2 -> k3 -> v -> v -> v
f = (k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWithKey ((k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWithKey3 ((k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v)
-> (k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> v -> v
f)
unionWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
unionWithKey5 :: forall k0 k1 k2 k3 k4 v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
unionWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f = (k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWithKey ((k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> v -> v
f)
unions ::
(Foldable t, Ord k, Semigroup (DeepMap ks v)) =>
t (DeepMap (k ': ks) v) ->
DeepMap (k ': ks) v
unions :: forall (t :: * -> *) k (ks :: [*]) v.
(Foldable t, Ord k, Semigroup (DeepMap ks v)) =>
t (DeepMap (k : ks) v) -> DeepMap (k : ks) v
unions = t (DeepMap (k : ks) v) -> DeepMap (k : ks) v
forall m. Monoid m => t m -> m
forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold
unionsWith ::
(Foldable t, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
t (DeepMap (k ': ks) v) ->
DeepMap (k ': ks) v
unionsWith :: forall (t :: * -> *) k (ks :: [*]) v.
(Foldable t, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> t (DeepMap (k : ks) v) -> DeepMap (k : ks) v
unionsWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f = (DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v)
-> DeepMap (k : ks) v
-> t (DeepMap (k : ks) v)
-> DeepMap (k : ks) v
forall b a. (b -> a -> b) -> b -> t a -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl ((DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> DeepMap (k : ks) v
unionWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
f) DeepMap (k : ks) v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty
unionsWith1 ::
(Foldable t, Ord k) => (v -> v -> v) -> t (DeepMap '[k] v) -> DeepMap '[k] v
unionsWith1 :: forall (t :: * -> *) k v.
(Foldable t, Ord k) =>
(v -> v -> v) -> t (DeepMap '[k] v) -> DeepMap '[k] v
unionsWith1 v -> v -> v
f = (DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v)
-> DeepMap '[k] v -> t (DeepMap '[k] v) -> DeepMap '[k] v
forall b a. (b -> a -> b) -> b -> t a -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl ((v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
forall k v.
Ord k =>
(v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 v -> v -> v
f) DeepMap '[k] v
forall k (ks :: [*]) v. Ord k => DeepMap (k : ks) v
empty
difference ::
(Ord k) => DeepMap (k ': ks) v -> DeepMap (k ': ls) w -> DeepMap (k ': ks) v
difference :: forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
difference = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v)
forall k a b. Ord k => Map k a -> Map k b -> Map k a
Map.difference
(\\) ::
(Ord k) => DeepMap (k ': ks) v -> DeepMap (k ': ls) w -> DeepMap (k ': ks) v
\\ :: forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
(\\) = DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
difference
differenceWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w ->
DeepMap (k ': ks) v
differenceWith :: forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
(DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
differenceWith DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v)
-> Map k (DeepMap ls w)
-> Map k (DeepMap ks v)
forall k a b.
Ord k =>
(a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
Map.differenceWith DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)
f)
differenceWith1 ::
(Ord k) =>
(v -> w -> Maybe v) ->
DeepMap '[k] v ->
DeepMap '[k] w ->
DeepMap '[k] v
differenceWith1 :: forall k v w.
Ord k =>
(v -> w -> Maybe v)
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] v
differenceWith1 v -> w -> Maybe v
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w) -> Map k (DeepMap '[] v))
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v)
forall k a b.
Ord k =>
(a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
Map.differenceWith ((DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v))
-> (DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v)
forall a b. (a -> b) -> a -> b
$ (v -> w -> Maybe v)
-> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v)
forall (f :: * -> *) v w x.
Functor f =>
(v -> w -> f x)
-> DeepMap '[] v -> DeepMap '[] w -> f (DeepMap '[] x)
onBare2F v -> w -> Maybe v
f)
differenceWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w ->
DeepMap (k ': ks) v
differenceWithKey :: forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
differenceWithKey k -> DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v)
-> Map k (DeepMap ls w)
-> Map k (DeepMap ks v)
forall k a b.
Ord k =>
(k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
Map.differenceWithKey k -> DeepMap ks v -> DeepMap ls w -> Maybe (DeepMap ks v)
f)
differenceWithKey1 ::
(Ord k) =>
(k -> v -> w -> Maybe v) ->
DeepMap '[k] v ->
DeepMap '[k] w ->
DeepMap '[k] v
differenceWithKey1 :: forall k v w.
Ord k =>
(k -> v -> w -> Maybe v)
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] v
differenceWithKey1 k -> v -> w -> Maybe v
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w) -> Map k (DeepMap '[] v))
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v)
forall k a b.
Ord k =>
(k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
Map.differenceWithKey ((k -> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v))
-> (k -> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] v)
forall a b. (a -> b) -> a -> b
$ (v -> w -> Maybe v)
-> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v)
forall (f :: * -> *) v w x.
Functor f =>
(v -> w -> f x)
-> DeepMap '[] v -> DeepMap '[] w -> f (DeepMap '[] x)
onBare2F ((v -> w -> Maybe v)
-> DeepMap '[] v -> DeepMap '[] w -> Maybe (DeepMap '[] v))
-> (k -> v -> w -> Maybe v)
-> k
-> DeepMap '[] v
-> DeepMap '[] w
-> Maybe (DeepMap '[] v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> w -> Maybe v
f)
intersection ::
(Ord k) => DeepMap (k ': ks) v -> DeepMap (k ': ls) w -> DeepMap (k ': ks) v
intersection :: forall k (ks :: [*]) v (ls :: [*]) w.
Ord k =>
DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
intersection = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ks) v
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ks v)
forall k a b. Ord k => Map k a -> Map k b -> Map k a
Map.intersection
intersectionWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ls w -> DeepMap ms x) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w ->
DeepMap (k ': ms) x
intersectionWith :: forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWith DeepMap ks v -> DeepMap ls w -> DeepMap ms x
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ls w)
-> Map k (DeepMap ms x)
forall k a b c.
Ord k =>
(a -> b -> c) -> Map k a -> Map k b -> Map k c
Map.intersectionWith DeepMap ks v -> DeepMap ls w -> DeepMap ms x
f)
intersectionWith1 ::
(Ord k) => (v -> w -> x) -> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
intersectionWith1 :: forall k v w x.
Ord k =>
(v -> w -> x) -> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
intersectionWith1 v -> w -> x
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w) -> Map k (DeepMap '[] x))
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x)
forall k a b c.
Ord k =>
(a -> b -> c) -> Map k a -> Map k b -> Map k c
Map.intersectionWith ((DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x))
-> (DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x)
forall a b. (a -> b) -> a -> b
$ (v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> w -> x
f)
intersectionWithKey ::
(Ord k) =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w ->
DeepMap (k ': ms) x
intersectionWithKey :: forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWithKey k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x
f = (Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> Map k (DeepMap ks v)
-> Map k (DeepMap ls w)
-> Map k (DeepMap ms x)
forall k a b c.
Ord k =>
(k -> a -> b -> c) -> Map k a -> Map k b -> Map k c
Map.intersectionWithKey k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x
f)
intersectionWithKey1 ::
(Ord k) =>
(k -> v -> w -> x) ->
DeepMap '[k] v ->
DeepMap '[k] w ->
DeepMap '[k] x
intersectionWithKey1 :: forall k v w x.
Ord k =>
(k -> v -> w -> x)
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
intersectionWithKey1 k -> v -> w -> x
f = (Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w) -> Map k (DeepMap '[] x))
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(Map k (DeepMap ks v)
-> Map k (DeepMap ls w) -> Map k (DeepMap ms x))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
onNest2 ((k -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x)
forall k a b c.
Ord k =>
(k -> a -> b -> c) -> Map k a -> Map k b -> Map k c
Map.intersectionWithKey ((k -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x))
-> (k -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> Map k (DeepMap '[] v)
-> Map k (DeepMap '[] w)
-> Map k (DeepMap '[] x)
forall a b. (a -> b) -> a -> b
$ (v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 ((v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x)
-> (k -> v -> w -> x)
-> k
-> DeepMap '[] v
-> DeepMap '[] w
-> DeepMap '[] x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> w -> x
f)
intersectionWithKey2 ::
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> w -> x) ->
DeepMap '[k0, k1] v ->
DeepMap '[k0, k1] w ->
DeepMap '[k0, k1] x
intersectionWithKey2 :: forall k0 k1 v w x.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> w -> x)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] w
-> DeepMap '[k0, k1] x
intersectionWithKey2 k0 -> k1 -> v -> w -> x
f = (k0 -> DeepMap '[k1] v -> DeepMap '[k1] w -> DeepMap '[k1] x)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] w
-> DeepMap '[k0, k1] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWithKey ((k1 -> v -> w -> x)
-> DeepMap '[k1] v -> DeepMap '[k1] w -> DeepMap '[k1] x
forall k v w x.
Ord k =>
(k -> v -> w -> x)
-> DeepMap '[k] v -> DeepMap '[k] w -> DeepMap '[k] x
intersectionWithKey1 ((k1 -> v -> w -> x)
-> DeepMap '[k1] v -> DeepMap '[k1] w -> DeepMap '[k1] x)
-> (k0 -> k1 -> v -> w -> x)
-> k0
-> DeepMap '[k1] v
-> DeepMap '[k1] w
-> DeepMap '[k1] x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> w -> x
f)
intersectionWithKey3 ::
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> w -> x) ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] w ->
DeepMap '[k0, k1, k2] x
intersectionWithKey3 :: forall k0 k1 k2 v w x.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> w -> x)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] w
-> DeepMap '[k0, k1, k2] x
intersectionWithKey3 k0 -> k1 -> k2 -> v -> w -> x
f = (k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] w
-> DeepMap '[k1, k2] x)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] w
-> DeepMap '[k0, k1, k2] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWithKey ((k1 -> k2 -> v -> w -> x)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] w
-> DeepMap '[k1, k2] x
forall k0 k1 v w x.
(Ord k0, Ord k1) =>
(k0 -> k1 -> v -> w -> x)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] w
-> DeepMap '[k0, k1] x
intersectionWithKey2 ((k1 -> k2 -> v -> w -> x)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] w
-> DeepMap '[k1, k2] x)
-> (k0 -> k1 -> k2 -> v -> w -> x)
-> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] w
-> DeepMap '[k1, k2] x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> w -> x
f)
intersectionWithKey4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> w -> x) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] w ->
DeepMap '[k0, k1, k2, k3] x
intersectionWithKey4 :: forall k0 k1 k2 k3 v w x.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> w -> x)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] w
-> DeepMap '[k0, k1, k2, k3] x
intersectionWithKey4 k0 -> k1 -> k2 -> k3 -> v -> w -> x
f = (k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] w
-> DeepMap '[k1, k2, k3] x)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] w
-> DeepMap '[k0, k1, k2, k3] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWithKey ((k1 -> k2 -> k3 -> v -> w -> x)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] w
-> DeepMap '[k1, k2, k3] x
forall k0 k1 k2 v w x.
(Ord k0, Ord k1, Ord k2) =>
(k0 -> k1 -> k2 -> v -> w -> x)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] w
-> DeepMap '[k0, k1, k2] x
intersectionWithKey3 ((k1 -> k2 -> k3 -> v -> w -> x)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] w
-> DeepMap '[k1, k2, k3] x)
-> (k0 -> k1 -> k2 -> k3 -> v -> w -> x)
-> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] w
-> DeepMap '[k1, k2, k3] x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> w -> x
f)
intersectionWithKey5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> w -> x) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] w ->
DeepMap '[k0, k1, k2, k3, k4] x
intersectionWithKey5 :: forall k0 k1 k2 k3 k4 v w x.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> w -> x)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] w
-> DeepMap '[k0, k1, k2, k3, k4] x
intersectionWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> w -> x
f = (k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] w
-> DeepMap '[k1, k2, k3, k4] x)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] w
-> DeepMap '[k0, k1, k2, k3, k4] x
forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
Ord k =>
(k -> DeepMap ks v -> DeepMap ls w -> DeepMap ms x)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w -> DeepMap (k : ms) x
intersectionWithKey ((k1 -> k2 -> k3 -> k4 -> v -> w -> x)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] w
-> DeepMap '[k1, k2, k3, k4] x
forall k0 k1 k2 k3 v w x.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(k0 -> k1 -> k2 -> k3 -> v -> w -> x)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] w
-> DeepMap '[k0, k1, k2, k3] x
intersectionWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> w -> x)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] w
-> DeepMap '[k1, k2, k3, k4] x)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> w -> x)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] w
-> DeepMap '[k1, k2, k3, k4] x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> w -> x
f)
mapShallow ::
(DeepMap ks v -> DeepMap ls w) -> DeepMap (k ': ks) v -> DeepMap (k ': ls) w
mapShallow :: forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow DeepMap ks v -> DeepMap ls w
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ls w)
-> Map k (DeepMap ks v) -> Map k (DeepMap ls w)
forall a b. (a -> b) -> Map k a -> Map k b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap ks v -> DeepMap ls w
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapShallowWithKey ::
(k -> DeepMap ks v -> DeepMap ls w) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w
mapShallowWithKey :: forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey k -> DeepMap ks v -> DeepMap ls w
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> DeepMap ls w)
-> Map k (DeepMap ks v) -> Map k (DeepMap ls w)
forall k a b. (k -> a -> b) -> Map k a -> Map k b
Map.mapWithKey k -> DeepMap ks v -> DeepMap ls w
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapWithKey1 :: (k -> v -> w) -> DeepMap '[k] v -> DeepMap '[k] w
mapWithKey1 :: forall k v w. (k -> v -> w) -> DeepMap '[k] v -> DeepMap '[k] w
mapWithKey1 k -> v -> w
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap '[] w) -> DeepMap '[k] w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] w) -> DeepMap '[k] w)
-> Map k (DeepMap '[] w) -> DeepMap '[k] w
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap '[] v -> DeepMap '[] w)
-> Map k (DeepMap '[] v) -> Map k (DeepMap '[] w)
forall k a b. (k -> a -> b) -> Map k a -> Map k b
Map.mapWithKey ((v -> w) -> DeepMap '[] v -> DeepMap '[] w
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> w) -> DeepMap '[] v -> DeepMap '[] w)
-> (k -> v -> w) -> k -> DeepMap '[] v -> DeepMap '[] w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> w
f) Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
mapWithKey2 ::
(k0 -> k1 -> v -> w) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
mapWithKey2 :: forall k0 k1 v w.
(k0 -> k1 -> v -> w) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
mapWithKey2 k0 -> k1 -> v -> w
f = (k0 -> DeepMap '[k1] v -> DeepMap '[k1] w)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> v -> w) -> DeepMap '[k1] v -> DeepMap '[k1] w
forall k v w. (k -> v -> w) -> DeepMap '[k] v -> DeepMap '[k] w
mapWithKey1 ((k1 -> v -> w) -> DeepMap '[k1] v -> DeepMap '[k1] w)
-> (k0 -> k1 -> v -> w) -> k0 -> DeepMap '[k1] v -> DeepMap '[k1] w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> w
f)
mapWithKey3 ::
(k0 -> k1 -> k2 -> v -> w) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] w
mapWithKey3 :: forall k0 k1 k2 v w.
(k0 -> k1 -> k2 -> v -> w)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] w
mapWithKey3 k0 -> k1 -> k2 -> v -> w
f = (k0 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] w)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] w
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> k2 -> v -> w) -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] w
forall k0 k1 v w.
(k0 -> k1 -> v -> w) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
mapWithKey2 ((k1 -> k2 -> v -> w)
-> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] w)
-> (k0 -> k1 -> k2 -> v -> w)
-> k0
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> w
f)
mapWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> w) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] w
mapWithKey4 :: forall k0 k1 k2 k3 v w.
(k0 -> k1 -> k2 -> k3 -> v -> w)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] w
mapWithKey4 k0 -> k1 -> k2 -> k3 -> v -> w
f = (k0 -> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] w)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] w
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> k2 -> k3 -> v -> w)
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] w
forall k0 k1 k2 v w.
(k0 -> k1 -> k2 -> v -> w)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] w
mapWithKey3 ((k1 -> k2 -> k3 -> v -> w)
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] w)
-> (k0 -> k1 -> k2 -> k3 -> v -> w)
-> k0
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> w
f)
mapWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> w) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] w
mapWithKey5 :: forall k0 k1 k2 k3 k4 v w.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> w)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] w
mapWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> w
f = (k0 -> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] w)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] w
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> k2 -> k3 -> k4 -> v -> w)
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] w
forall k0 k1 k2 k3 v w.
(k0 -> k1 -> k2 -> k3 -> v -> w)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] w
mapWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> w)
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] w)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> w)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> w
f)
traverseShallow ::
(Applicative f) =>
(DeepMap ks v -> f (DeepMap ls w)) ->
DeepMap (k ': ks) v ->
f (DeepMap (k ': ls) w)
traverseShallow :: forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow DeepMap ks v -> f (DeepMap ls w)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> f (Map k (DeepMap ls w)) -> f (DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (DeepMap ks v -> f (DeepMap ls w))
-> Map k (DeepMap ks v) -> f (Map k (DeepMap ls w))
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Map k a -> f (Map k b)
traverse DeepMap ks v -> f (DeepMap ls w)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
traverseShallowWithKey ::
(Applicative f) =>
(k -> DeepMap ks v -> f (DeepMap ls w)) ->
DeepMap (k ': ks) v ->
f (DeepMap (k ': ls) w)
traverseShallowWithKey :: forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallowWithKey k -> DeepMap ks v -> f (DeepMap ls w)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> f (Map k (DeepMap ls w)) -> f (DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> f (DeepMap ls w))
-> Map k (DeepMap ks v) -> f (Map k (DeepMap ls w))
forall (t :: * -> *) k a b.
Applicative t =>
(k -> a -> t b) -> Map k a -> t (Map k b)
Map.traverseWithKey k -> DeepMap ks v -> f (DeepMap ls w)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
traverseWithKey1 ::
(Applicative f) => (k -> v -> f w) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseWithKey1 :: forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f w) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseWithKey1 k -> v -> f w
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap '[] w) -> DeepMap '[k] w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] w) -> DeepMap '[k] w)
-> f (Map k (DeepMap '[] w)) -> f (DeepMap '[k] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap '[] v -> f (DeepMap '[] w))
-> Map k (DeepMap '[] v) -> f (Map k (DeepMap '[] w))
forall (t :: * -> *) k a b.
Applicative t =>
(k -> a -> t b) -> Map k a -> t (Map k b)
Map.traverseWithKey ((v -> f w) -> DeepMap '[] v -> f (DeepMap '[] w)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeepMap '[] a -> f (DeepMap '[] b)
traverse ((v -> f w) -> DeepMap '[] v -> f (DeepMap '[] w))
-> (k -> v -> f w) -> k -> DeepMap '[] v -> f (DeepMap '[] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> f w
f) Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
traverseWithKey2 ::
(Applicative f) =>
(k0 -> k1 -> v -> f w) ->
DeepMap '[k0, k1] v ->
f (DeepMap '[k0, k1] w)
traverseWithKey2 :: forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f w)
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseWithKey2 k0 -> k1 -> v -> f w
f = (k0 -> DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallowWithKey ((k1 -> v -> f w) -> DeepMap '[k1] v -> f (DeepMap '[k1] w)
forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f w) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseWithKey1 ((k1 -> v -> f w) -> DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> (k0 -> k1 -> v -> f w)
-> k0
-> DeepMap '[k1] v
-> f (DeepMap '[k1] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> f w
f)
traverseWithKey3 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> v -> f w) ->
DeepMap '[k0, k1, k2] v ->
f (DeepMap '[k0, k1, k2] w)
traverseWithKey3 :: forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f w)
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseWithKey3 k0 -> k1 -> k2 -> v -> f w
f = (k0 -> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallowWithKey ((k1 -> k2 -> v -> f w)
-> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w)
forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f w)
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseWithKey2 ((k1 -> k2 -> v -> f w)
-> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> (k0 -> k1 -> k2 -> v -> f w)
-> k0
-> DeepMap '[k1, k2] v
-> f (DeepMap '[k1, k2] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> f w
f)
traverseWithKey4 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> k3 -> v -> f w) ->
DeepMap '[k0, k1, k2, k3] v ->
f (DeepMap '[k0, k1, k2, k3] w)
traverseWithKey4 :: forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f w)
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseWithKey4 k0 -> k1 -> k2 -> k3 -> v -> f w
f = (k0 -> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallowWithKey ((k1 -> k2 -> k3 -> v -> f w)
-> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w)
forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f w)
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseWithKey3 ((k1 -> k2 -> k3 -> v -> f w)
-> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> (k0 -> k1 -> k2 -> k3 -> v -> f w)
-> k0
-> DeepMap '[k1, k2, k3] v
-> f (DeepMap '[k1, k2, k3] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> f w
f)
traverseWithKey5 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> f w) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
f (DeepMap '[k0, k1, k2, k3, k4] w)
traverseWithKey5 :: forall (f :: * -> *) k0 k1 k2 k3 k4 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> f w)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] w)
traverseWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> f w
f = (k0
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallowWithKey ((k1 -> k2 -> k3 -> k4 -> v -> f w)
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w)
forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f w)
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> f w)
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> f w)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> f (DeepMap '[k1, k2, k3, k4] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> f w
f)
traverseMaybeWithKey ::
(Applicative f) =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w))) ->
DeepMap (k ': ks) v ->
f (DeepMap (k ': ls) w)
traverseMaybeWithKey :: forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey k -> DeepMap ks v -> f (Maybe (DeepMap ls w))
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> f (Map k (DeepMap ls w)) -> f (DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> Map k (DeepMap ks v) -> f (Map k (DeepMap ls w))
forall (f :: * -> *) k a b.
Applicative f =>
(k -> a -> f (Maybe b)) -> Map k a -> f (Map k b)
Map.traverseMaybeWithKey k -> DeepMap ks v -> f (Maybe (DeepMap ls w))
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
traverseMaybeWithKey1 ::
(Applicative f) =>
(k -> v -> f (Maybe w)) ->
DeepMap '[k] v ->
f (DeepMap '[k] w)
traverseMaybeWithKey1 :: forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f (Maybe w)) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseMaybeWithKey1 k -> v -> f (Maybe w)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap '[] w) -> DeepMap '[k] w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] w) -> DeepMap '[k] w)
-> f (Map k (DeepMap '[] w)) -> f (DeepMap '[k] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> f (Maybe (DeepMap '[] w)))
-> Map k (DeepMap ks v) -> f (Map k (DeepMap '[] w))
forall (f :: * -> *) k a b.
Applicative f =>
(k -> a -> f (Maybe b)) -> Map k a -> f (Map k b)
Map.traverseMaybeWithKey (\k
k (Bare v
v) -> (w -> DeepMap '[] w) -> Maybe w -> Maybe (DeepMap '[] w)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (Maybe w -> Maybe (DeepMap '[] w))
-> f (Maybe w) -> f (Maybe (DeepMap '[] w))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> k -> v -> f (Maybe w)
f k
k v
v) Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
traverseMaybeWithKey2 ::
(Applicative f) =>
(k0 -> k1 -> v -> f (Maybe w)) ->
DeepMap '[k0, k1] v ->
f (DeepMap '[k0, k1] w)
traverseMaybeWithKey2 :: forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f (Maybe w))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseMaybeWithKey2 k0 -> k1 -> v -> f (Maybe w)
f = (k0 -> DeepMap '[k1] v -> f (Maybe (DeepMap '[k1] w)))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((f (DeepMap '[k1] w) -> f (Maybe (DeepMap '[k1] w)))
-> (DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> DeepMap '[k1] v
-> f (Maybe (DeepMap '[k1] w))
forall a b.
(a -> b) -> (DeepMap '[k1] v -> a) -> DeepMap '[k1] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1] w -> Maybe (DeepMap '[k1] w))
-> f (DeepMap '[k1] w) -> f (Maybe (DeepMap '[k1] w))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1] w -> Maybe (DeepMap '[k1] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> DeepMap '[k1] v -> f (Maybe (DeepMap '[k1] w)))
-> (k0 -> DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> k0
-> DeepMap '[k1] v
-> f (Maybe (DeepMap '[k1] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> v -> f (Maybe w)) -> DeepMap '[k1] v -> f (DeepMap '[k1] w)
forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f (Maybe w)) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseMaybeWithKey1 ((k1 -> v -> f (Maybe w))
-> DeepMap '[k1] v -> f (DeepMap '[k1] w))
-> (k0 -> k1 -> v -> f (Maybe w))
-> k0
-> DeepMap '[k1] v
-> f (DeepMap '[k1] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> f (Maybe w)
f)
traverseMaybeWithKey3 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> v -> f (Maybe w)) ->
DeepMap '[k0, k1, k2] v ->
f (DeepMap '[k0, k1, k2] w)
traverseMaybeWithKey3 :: forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseMaybeWithKey3 k0 -> k1 -> k2 -> v -> f (Maybe w)
f = (k0 -> DeepMap '[k1, k2] v -> f (Maybe (DeepMap '[k1, k2] w)))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((f (DeepMap '[k1, k2] w) -> f (Maybe (DeepMap '[k1, k2] w)))
-> (DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> DeepMap '[k1, k2] v
-> f (Maybe (DeepMap '[k1, k2] w))
forall a b.
(a -> b) -> (DeepMap '[k1, k2] v -> a) -> DeepMap '[k1, k2] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2] w -> Maybe (DeepMap '[k1, k2] w))
-> f (DeepMap '[k1, k2] w) -> f (Maybe (DeepMap '[k1, k2] w))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2] w -> Maybe (DeepMap '[k1, k2] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> DeepMap '[k1, k2] v -> f (Maybe (DeepMap '[k1, k2] w)))
-> (k0 -> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> k0
-> DeepMap '[k1, k2] v
-> f (Maybe (DeepMap '[k1, k2] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w)
forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f (Maybe w))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseMaybeWithKey2 ((k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k1, k2] v -> f (DeepMap '[k1, k2] w))
-> (k0 -> k1 -> k2 -> v -> f (Maybe w))
-> k0
-> DeepMap '[k1, k2] v
-> f (DeepMap '[k1, k2] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> f (Maybe w)
f)
traverseMaybeWithKey4 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w)) ->
DeepMap '[k0, k1, k2, k3] v ->
f (DeepMap '[k0, k1, k2, k3] w)
traverseMaybeWithKey4 :: forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseMaybeWithKey4 k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w)
f = (k0
-> DeepMap '[k1, k2, k3] v -> f (Maybe (DeepMap '[k1, k2, k3] w)))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((f (DeepMap '[k1, k2, k3] w)
-> f (Maybe (DeepMap '[k1, k2, k3] w)))
-> (DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> DeepMap '[k1, k2, k3] v
-> f (Maybe (DeepMap '[k1, k2, k3] w))
forall a b.
(a -> b)
-> (DeepMap '[k1, k2, k3] v -> a) -> DeepMap '[k1, k2, k3] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2, k3] w -> Maybe (DeepMap '[k1, k2, k3] w))
-> f (DeepMap '[k1, k2, k3] w)
-> f (Maybe (DeepMap '[k1, k2, k3] w))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2, k3] w -> Maybe (DeepMap '[k1, k2, k3] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> DeepMap '[k1, k2, k3] v -> f (Maybe (DeepMap '[k1, k2, k3] w)))
-> (k0 -> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> k0
-> DeepMap '[k1, k2, k3] v
-> f (Maybe (DeepMap '[k1, k2, k3] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w)
forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseMaybeWithKey3 ((k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k1, k2, k3] v -> f (DeepMap '[k1, k2, k3] w))
-> (k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w))
-> k0
-> DeepMap '[k1, k2, k3] v
-> f (DeepMap '[k1, k2, k3] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w)
f)
traverseMaybeWithKey5 ::
(Applicative f) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w)) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
f (DeepMap '[k0, k1, k2, k3, k4] w)
traverseMaybeWithKey5 :: forall (f :: * -> *) k0 k1 k2 k3 k4 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] w)
traverseMaybeWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w)
f = (k0
-> DeepMap '[k1, k2, k3, k4] v
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((f (DeepMap '[k1, k2, k3, k4] w)
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> (DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> DeepMap '[k1, k2, k3, k4] v
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall a b.
(a -> b)
-> (DeepMap '[k1, k2, k3, k4] v -> a)
-> DeepMap '[k1, k2, k3, k4] v
-> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2, k3, k4] w
-> Maybe (DeepMap '[k1, k2, k3, k4] w))
-> f (DeepMap '[k1, k2, k3, k4] w)
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2, k3, k4] w -> Maybe (DeepMap '[k1, k2, k3, k4] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> DeepMap '[k1, k2, k3, k4] v
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> (k0
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> f (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w))
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w)
forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseMaybeWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w))
-> DeepMap '[k1, k2, k3, k4] v -> f (DeepMap '[k1, k2, k3, k4] w))
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w))
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> f (DeepMap '[k1, k2, k3, k4] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w)
f)
mapAccum ::
(acc -> DeepMap ks v -> (acc, DeepMap ls w)) ->
acc ->
DeepMap (k ': ks) v ->
(acc, DeepMap (k ': ls) w)
mapAccum :: forall acc (ks :: [*]) v (ls :: [*]) w k.
(acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccum acc -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (acc, Map k (DeepMap ls w)) -> (acc, DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> Map k (DeepMap ks v) -> (acc, Map k (DeepMap ls w))
forall a b c k. (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
Map.mapAccum acc -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapAccum1 ::
(acc -> v -> (acc, w)) -> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccum1 :: forall acc v w k.
(acc -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccum1 acc -> v -> (acc, w)
f = (acc -> DeepMap '[] v -> (acc, DeepMap '[] w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
forall acc (ks :: [*]) v (ls :: [*]) w k.
(acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccum (\acc
a (Bare v
v) -> w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (w -> DeepMap '[] w) -> (acc, w) -> (acc, DeepMap '[] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> acc -> v -> (acc, w)
f acc
a v
v)
mapAccumR ::
(acc -> DeepMap ks v -> (acc, DeepMap ls w)) ->
acc ->
DeepMap (k ': ks) v ->
(acc, DeepMap (k ': ls) w)
mapAccumR :: forall acc (ks :: [*]) v (ls :: [*]) w k.
(acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumR acc -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (acc, Map k (DeepMap ls w)) -> (acc, DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> Map k (DeepMap ks v) -> (acc, Map k (DeepMap ls w))
forall a b c k. (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
Map.mapAccum acc -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapAccumR1 ::
(acc -> v -> (acc, w)) -> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumR1 :: forall acc v w k.
(acc -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumR1 acc -> v -> (acc, w)
f = (acc -> DeepMap '[] v -> (acc, DeepMap '[] w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
forall acc (ks :: [*]) v (ls :: [*]) w k.
(acc -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumR (\acc
a (Bare v
v) -> w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (w -> DeepMap '[] w) -> (acc, w) -> (acc, DeepMap '[] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> acc -> v -> (acc, w)
f acc
a v
v)
mapAccumWithKey ::
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)) ->
acc ->
DeepMap (k ': ks) v ->
(acc, DeepMap (k ': ls) w)
mapAccumWithKey :: forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (acc, Map k (DeepMap ls w)) -> (acc, DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> Map k (DeepMap ks v) -> (acc, Map k (DeepMap ls w))
forall a k b c.
(a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
Map.mapAccumWithKey acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapAccumWithKey1 ::
(acc -> k -> v -> (acc, w)) -> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumWithKey1 :: forall acc k v w.
(acc -> k -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumWithKey1 acc -> k -> v -> (acc, w)
f = (acc -> k -> DeepMap '[] v -> (acc, DeepMap '[] w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey (\acc
k k
a (Bare v
v) -> w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (w -> DeepMap '[] w) -> (acc, w) -> (acc, DeepMap '[] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> acc -> k -> v -> (acc, w)
f acc
k k
a v
v)
mapAccumWithKey2 ::
(acc -> k0 -> k1 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1] v ->
(acc, DeepMap '[k0, k1] w)
mapAccumWithKey2 :: forall acc k0 k1 v w.
(acc -> k0 -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
mapAccumWithKey2 acc -> k0 -> k1 -> v -> (acc, w)
f = (acc -> k0 -> DeepMap '[k1] v -> (acc, DeepMap '[k1] w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey (\acc
a k0
k0 -> (acc -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k1] v -> (acc, DeepMap '[k1] w)
forall acc k v w.
(acc -> k -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumWithKey1 (acc -> k0 -> k1 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumWithKey3 ::
(acc -> k0 -> k1 -> k2 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2] v ->
(acc, DeepMap '[k0, k1, k2] w)
mapAccumWithKey3 :: forall acc k0 k1 k2 v w.
(acc -> k0 -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
mapAccumWithKey3 acc -> k0 -> k1 -> k2 -> v -> (acc, w)
f = (acc -> k0 -> DeepMap '[k1, k2] v -> (acc, DeepMap '[k1, k2] w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k1, k2] v -> (acc, DeepMap '[k1, k2] w)
forall acc k0 k1 v w.
(acc -> k0 -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
mapAccumWithKey2 (acc -> k0 -> k1 -> k2 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumWithKey4 ::
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2, k3] v ->
(acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumWithKey4 :: forall acc k0 k1 k2 k3 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumWithKey4 acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)
f = (acc
-> k0 -> DeepMap '[k1, k2, k3] v -> (acc, DeepMap '[k1, k2, k3] w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc -> DeepMap '[k1, k2, k3] v -> (acc, DeepMap '[k1, k2, k3] w)
forall acc k0 k1 k2 v w.
(acc -> k0 -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
mapAccumWithKey3 (acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumWithKey5 ::
(acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(acc, DeepMap '[k0, k1, k2, k3, k4] w)
mapAccumWithKey5 :: forall acc k0 k1 k2 k3 k4 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (acc, DeepMap '[k0, k1, k2, k3, k4] w)
mapAccumWithKey5 acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)
f = (acc
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> (acc, DeepMap '[k1, k2, k3, k4] w))
-> acc
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (acc, DeepMap '[k0, k1, k2, k3, k4] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w))
-> acc
-> DeepMap '[k1, k2, k3, k4] v
-> (acc, DeepMap '[k1, k2, k3, k4] w)
forall acc k0 k1 k2 k3 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumWithKey4 (acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumRWithKey ::
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)) ->
acc ->
DeepMap (k ': ks) v ->
(acc, DeepMap (k ': ls) w)
mapAccumRWithKey :: forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (acc, Map k (DeepMap ls w)) -> (acc, DeepMap (k : ls) w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> Map k (DeepMap ks v) -> (acc, Map k (DeepMap ls w))
forall a k b c.
(a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
Map.mapAccumRWithKey acc -> k -> DeepMap ks v -> (acc, DeepMap ls w)
f acc
acc Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapAccumRWithKey1 ::
(acc -> k -> v -> (acc, w)) -> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumRWithKey1 :: forall acc k v w.
(acc -> k -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumRWithKey1 acc -> k -> v -> (acc, w)
f = (acc -> k -> DeepMap '[] v -> (acc, DeepMap '[] w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey (\acc
k k
a (Bare v
v) -> w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (w -> DeepMap '[] w) -> (acc, w) -> (acc, DeepMap '[] w)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> acc -> k -> v -> (acc, w)
f acc
k k
a v
v)
mapAccumRWithKey2 ::
(acc -> k0 -> k1 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1] v ->
(acc, DeepMap '[k0, k1] w)
mapAccumRWithKey2 :: forall acc k0 k1 v w.
(acc -> k0 -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
mapAccumRWithKey2 acc -> k0 -> k1 -> v -> (acc, w)
f = (acc -> k0 -> DeepMap '[k1] v -> (acc, DeepMap '[k1] w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey (\acc
a k0
k0 -> (acc -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k1] v -> (acc, DeepMap '[k1] w)
forall acc k v w.
(acc -> k -> v -> (acc, w))
-> acc -> DeepMap '[k] v -> (acc, DeepMap '[k] w)
mapAccumRWithKey1 (acc -> k0 -> k1 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumRWithKey3 ::
(acc -> k0 -> k1 -> k2 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2] v ->
(acc, DeepMap '[k0, k1, k2] w)
mapAccumRWithKey3 :: forall acc k0 k1 k2 v w.
(acc -> k0 -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
mapAccumRWithKey3 acc -> k0 -> k1 -> k2 -> v -> (acc, w)
f = (acc -> k0 -> DeepMap '[k1, k2] v -> (acc, DeepMap '[k1, k2] w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k1, k2] v -> (acc, DeepMap '[k1, k2] w)
forall acc k0 k1 v w.
(acc -> k0 -> k1 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1] v -> (acc, DeepMap '[k0, k1] w)
mapAccumRWithKey2 (acc -> k0 -> k1 -> k2 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumRWithKey4 ::
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2, k3] v ->
(acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumRWithKey4 :: forall acc k0 k1 k2 k3 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumRWithKey4 acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)
f = (acc
-> k0 -> DeepMap '[k1, k2, k3] v -> (acc, DeepMap '[k1, k2, k3] w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc -> DeepMap '[k1, k2, k3] v -> (acc, DeepMap '[k1, k2, k3] w)
forall acc k0 k1 k2 v w.
(acc -> k0 -> k1 -> k2 -> v -> (acc, w))
-> acc -> DeepMap '[k0, k1, k2] v -> (acc, DeepMap '[k0, k1, k2] w)
mapAccumRWithKey3 (acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapAccumRWithKey5 ::
(acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)) ->
acc ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(acc, DeepMap '[k0, k1, k2, k3, k4] w)
mapAccumRWithKey5 :: forall acc k0 k1 k2 k3 k4 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (acc, DeepMap '[k0, k1, k2, k3, k4] w)
mapAccumRWithKey5 acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)
f = (acc
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> (acc, DeepMap '[k1, k2, k3, k4] w))
-> acc
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (acc, DeepMap '[k0, k1, k2, k3, k4] w)
forall acc k (ks :: [*]) v (ls :: [*]) w.
(acc -> k -> DeepMap ks v -> (acc, DeepMap ls w))
-> acc -> DeepMap (k : ks) v -> (acc, DeepMap (k : ls) w)
mapAccumRWithKey (\acc
a k0
k0 -> (acc -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w))
-> acc
-> DeepMap '[k1, k2, k3, k4] v
-> (acc, DeepMap '[k1, k2, k3, k4] w)
forall acc k0 k1 k2 k3 v w.
(acc -> k0 -> k1 -> k2 -> k3 -> v -> (acc, w))
-> acc
-> DeepMap '[k0, k1, k2, k3] v
-> (acc, DeepMap '[k0, k1, k2, k3] w)
mapAccumRWithKey4 (acc -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> (acc, w)
`f` k0
k0) acc
a)
mapKeys ::
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) ->
DeepMap (j ': ks) v ->
DeepMap (k ': ks) v
mapKeys :: forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j -> k
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> Map j (DeepMap ks v) -> Map k (DeepMap ks v)
forall k2 a k1.
Ord k2 =>
(a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a
Map.mapKeysWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
forall a. Semigroup a => a -> a -> a
(<>) j -> k
f Map j (DeepMap ks v)
Map k (DeepMap ks v)
m
mapKeysDeep ::
(Monoid (DeepMap ks v)) =>
((Deep js -> Deep ks) -> DeepMap js v -> DeepMap ks v)
mapKeysDeep :: forall (ks :: [*]) v (js :: [*]).
Monoid (DeepMap ks v) =>
(Deep js -> Deep ks) -> DeepMap js v -> DeepMap ks v
mapKeysDeep Deep js -> Deep ks
jk = \case
Bare v
v -> Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
deep (Deep js -> Deep ks
jk Deep js
Deep '[]
Deep0) v
v
Nest (Map k (DeepMap ks v)
m :: Map j (DeepMap js0 v)) -> (k -> DeepMap ks v -> DeepMap ks v)
-> Map k (DeepMap ks v) -> DeepMap ks v
forall m a. Monoid m => (k -> a -> m) -> Map k a -> m
forall i (f :: * -> *) m a.
(FoldableWithIndex i f, Monoid m) =>
(i -> a -> m) -> f a -> m
ifoldMap ((Deep ks -> Deep ks) -> DeepMap ks v -> DeepMap ks v
forall (ks :: [*]) v (js :: [*]).
Monoid (DeepMap ks v) =>
(Deep js -> Deep ks) -> DeepMap js v -> DeepMap ks v
mapKeysDeep ((Deep ks -> Deep ks) -> DeepMap ks v -> DeepMap ks v)
-> (k -> Deep ks -> Deep ks) -> k -> DeepMap ks v -> DeepMap ks v
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Deep js -> Deep ks
jk .) ((Deep ks -> Deep js) -> Deep ks -> Deep ks)
-> (k -> Deep ks -> Deep js) -> k -> Deep ks -> Deep ks
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> Deep ks -> Deep js
k -> Deep ks -> Deep (k : ks)
forall k (ks :: [*]). Ord k => k -> Deep ks -> Deep (k : ks)
Deep1) Map k (DeepMap ks v)
m
mapKeys1 :: (Ord k, Semigroup v) => (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
mapKeys1 :: forall k v j.
(Ord k, Semigroup v) =>
(j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
mapKeys1 = (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys
mapKeys2 ::
(Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> k0) ->
(j1 -> k1) ->
DeepMap (j0 ': j1 ': ks) v ->
DeepMap (k0 ': k1 ': ks) v
mapKeys2 :: forall k0 k1 (ks :: [*]) v j0 j1.
(Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> DeepMap (j0 : j1 : ks) v
-> DeepMap (k0 : k1 : ks) v
mapKeys2 j0 -> k0
f0 j1 -> k1
f1 DeepMap (j0 : j1 : ks) v
m = (j0 -> k0) -> DeepMap (j0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j0 -> k0
f0 (DeepMap (j0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v)
-> DeepMap (j0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap (j1 : ks) v -> DeepMap (k1 : ks) v)
-> DeepMap (j0 : j1 : ks) v -> DeepMap (j0 : k1 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((j1 -> k1) -> DeepMap (j1 : ks) v -> DeepMap (k1 : ks) v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j1 -> k1
f1) DeepMap (j0 : j1 : ks) v
m
mapKeys3 ::
(Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
DeepMap (j0 ': j1 ': j2 ': ks) v ->
DeepMap (k0 ': k1 ': k2 ': ks) v
mapKeys3 :: forall k0 k1 k2 (ks :: [*]) v j0 j1 j2.
(Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> DeepMap (j0 : j1 : j2 : ks) v
-> DeepMap (k0 : k1 : k2 : ks) v
mapKeys3 j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 DeepMap (j0 : j1 : j2 : ks) v
m = (j0 -> k0)
-> DeepMap (j0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j0 -> k0
f0 (DeepMap (j0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v)
-> DeepMap (j0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap (j1 : j2 : ks) v -> DeepMap (k1 : k2 : ks) v)
-> DeepMap (j0 : j1 : j2 : ks) v -> DeepMap (j0 : k1 : k2 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((j1 -> k1)
-> (j2 -> k2)
-> DeepMap (j1 : j2 : ks) v
-> DeepMap (k1 : k2 : ks) v
forall k0 k1 (ks :: [*]) v j0 j1.
(Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> DeepMap (j0 : j1 : ks) v
-> DeepMap (k0 : k1 : ks) v
mapKeys2 j1 -> k1
f1 j2 -> k2
f2) DeepMap (j0 : j1 : j2 : ks) v
m
mapKeys4 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup (DeepMap ks v)) =>
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
(j3 -> k3) ->
DeepMap (j0 ': j1 ': j2 ': j3 ': ks) v ->
DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v
mapKeys4 :: forall k0 k1 k2 k3 (ks :: [*]) v j0 j1 j2 j3.
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
mapKeys4 j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 DeepMap (j0 : j1 : j2 : j3 : ks) v
m = (j0 -> k0)
-> DeepMap (j0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j0 -> k0
f0 (DeepMap (j0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v)
-> DeepMap (j0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap (j1 : j2 : j3 : ks) v -> DeepMap (k1 : k2 : k3 : ks) v)
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> DeepMap (j0 : k1 : k2 : k3 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap (j1 : j2 : j3 : ks) v
-> DeepMap (k1 : k2 : k3 : ks) v
forall k0 k1 k2 (ks :: [*]) v j0 j1 j2.
(Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> DeepMap (j0 : j1 : j2 : ks) v
-> DeepMap (k0 : k1 : k2 : ks) v
mapKeys3 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3) DeepMap (j0 : j1 : j2 : j3 : ks) v
m
mapKeys5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup (DeepMap ks v)) =>
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
(j3 -> k3) ->
(j4 -> k4) ->
DeepMap (j0 ': j1 ': j2 ': j3 ': j4 ': ks) v ->
DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v
mapKeys5 :: forall k0 k1 k2 k3 k4 (ks :: [*]) v j0 j1 j2 j3 j4.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4,
Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> (j4 -> k4)
-> DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
mapKeys5 j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 j4 -> k4
f4 DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
m = (j0 -> k0)
-> DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall k (ks :: [*]) v j.
(Ord k, Semigroup (DeepMap ks v)) =>
(j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeys j0 -> k0
f0 (DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap (j1 : j2 : j3 : j4 : ks) v
-> DeepMap (k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
-> DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> (j4 -> k4)
-> DeepMap (j1 : j2 : j3 : j4 : ks) v
-> DeepMap (k1 : k2 : k3 : k4 : ks) v
forall k0 k1 k2 k3 (ks :: [*]) v j0 j1 j2 j3.
(Ord k0, Ord k1, Ord k2, Ord k3, Semigroup (DeepMap ks v)) =>
(j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
mapKeys4 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 j4 -> k4
f4) DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
m
mapKeysWith ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
(j -> k) ->
DeepMap (j ': ks) v ->
DeepMap (k ': ks) v
mapKeysWith :: forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
(~~) j -> k
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> Map j (DeepMap ks v) -> Map k (DeepMap ks v)
forall k2 a k1.
Ord k2 =>
(a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a
Map.mapKeysWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
(~~) j -> k
f Map j (DeepMap ks v)
Map k (DeepMap ks v)
m
mapKeysWith1 ::
(Ord k) => (v -> v -> v) -> (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
mapKeysWith1 :: forall k v j.
Ord k =>
(v -> v -> v) -> (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
mapKeysWith1 v -> v -> v
(~~) = (DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> v -> v
(~~))
mapKeysWith2 ::
(Ord k0, Ord k1) =>
(v -> v -> v) ->
(j0 -> k0) ->
(j1 -> k1) ->
DeepMap '[j0, j1] v ->
DeepMap '[k0, k1] v
mapKeysWith2 :: forall k0 k1 v j0 j1.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> DeepMap '[j0, j1] v
-> DeepMap '[k0, k1] v
mapKeysWith2 v -> v -> v
(~~) j0 -> k0
f0 j1 -> k1
f1 DeepMap '[j0, j1] v
m = (DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> (j0 -> k0) -> DeepMap '[j0, k1] v -> DeepMap '[k0, k1] v
forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith ((v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 v -> v -> v
(~~)) j0 -> k0
f0 (DeepMap '[j0, k1] v -> DeepMap '[k0, k1] v)
-> DeepMap '[j0, k1] v -> DeepMap '[k0, k1] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[j1] v -> DeepMap '[k1] v)
-> DeepMap '[j0, j1] v -> DeepMap '[j0, k1] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> v -> v) -> (j1 -> k1) -> DeepMap '[j1] v -> DeepMap '[k1] v
forall k v j.
Ord k =>
(v -> v -> v) -> (j -> k) -> DeepMap '[j] v -> DeepMap '[k] v
mapKeysWith1 v -> v -> v
(~~) j1 -> k1
f1) DeepMap '[j0, j1] v
m
mapKeysWith3 ::
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v) ->
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
DeepMap '[j0, j1, j2] v ->
DeepMap '[k0, k1, k2] v
mapKeysWith3 :: forall k0 k1 k2 v j0 j1 j2.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> DeepMap '[j0, j1, j2] v
-> DeepMap '[k0, k1, k2] v
mapKeysWith3 v -> v -> v
(~~) j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 DeepMap '[j0, j1, j2] v
m = (DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v)
-> (j0 -> k0) -> DeepMap '[j0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith ((v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWith2 v -> v -> v
(~~)) j0 -> k0
f0 (DeepMap '[j0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> DeepMap '[j0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[j1, j2] v -> DeepMap '[k1, k2] v)
-> DeepMap '[j0, j1, j2] v -> DeepMap '[j0, k1, k2] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> v -> v)
-> (j1 -> k1)
-> (j2 -> k2)
-> DeepMap '[j1, j2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v j0 j1.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> DeepMap '[j0, j1] v
-> DeepMap '[k0, k1] v
mapKeysWith2 v -> v -> v
(~~) j1 -> k1
f1 j2 -> k2
f2) DeepMap '[j0, j1, j2] v
m
mapKeysWith4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v) ->
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
(j3 -> k3) ->
DeepMap '[j0, j1, j2, j3] v ->
DeepMap '[k0, k1, k2, k3] v
mapKeysWith4 :: forall k0 k1 k2 k3 v j0 j1 j2 j3.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap '[j0, j1, j2, j3] v
-> DeepMap '[k0, k1, k2, k3] v
mapKeysWith4 v -> v -> v
(~~) j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 DeepMap '[j0, j1, j2, j3] v
m = (DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v)
-> (j0 -> k0)
-> DeepMap '[j0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWith3 v -> v -> v
(~~)) j0 -> k0
f0 (DeepMap '[j0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[j0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[j1, j2, j3] v -> DeepMap '[k1, k2, k3] v)
-> DeepMap '[j0, j1, j2, j3] v -> DeepMap '[j0, k1, k2, k3] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> v -> v)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap '[j1, j2, j3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v j0 j1 j2.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> DeepMap '[j0, j1, j2] v
-> DeepMap '[k0, k1, k2] v
mapKeysWith3 v -> v -> v
(~~) j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3) DeepMap '[j0, j1, j2, j3] v
m
mapKeysWith5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v) ->
(j0 -> k0) ->
(j1 -> k1) ->
(j2 -> k2) ->
(j3 -> k3) ->
(j4 -> k4) ->
DeepMap '[j0, j1, j2, j3, j4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
mapKeysWith5 :: forall k0 k1 k2 k3 k4 v j0 j1 j2 j3 j4.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> (j4 -> k4)
-> DeepMap '[j0, j1, j2, j3, j4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
mapKeysWith5 v -> v -> v
(~~) j0 -> k0
f0 j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 j4 -> k4
f4 DeepMap '[j0, j1, j2, j3, j4] v
m =
(DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v)
-> (j0 -> k0)
-> DeepMap '[j0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k (ks :: [*]) v j.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> k) -> DeepMap (j : ks) v -> DeepMap (k : ks) v
mapKeysWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWith4 v -> v -> v
(~~)) j0 -> k0
f0 (DeepMap '[j0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[j0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[j1, j2, j3, j4] v -> DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[j0, j1, j2, j3, j4] v
-> DeepMap '[j0, k1, k2, k3, k4] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> v -> v)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> (j4 -> k4)
-> DeepMap '[j1, j2, j3, j4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v j0 j1 j2 j3.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> (j0 -> k0)
-> (j1 -> k1)
-> (j2 -> k2)
-> (j3 -> k3)
-> DeepMap '[j0, j1, j2, j3] v
-> DeepMap '[k0, k1, k2, k3] v
mapKeysWith4 v -> v -> v
(~~) j1 -> k1
f1 j2 -> k2
f2 j3 -> k3
f3 j4 -> k4
f4) DeepMap '[j0, j1, j2, j3, j4] v
m
traverseKeys ::
(Applicative f, Ord k, Semigroup (DeepMap ks v)) =>
(j -> f k) ->
DeepMap (j ': ks) v ->
f (DeepMap (k ': ks) v)
traverseKeys :: forall (f :: * -> *) k (ks :: [*]) v j.
(Applicative f, Ord k, Semigroup (DeepMap ks v)) =>
(j -> f k) -> DeepMap (j : ks) v -> f (DeepMap (k : ks) v)
traverseKeys j -> f k
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> f (Map k (DeepMap ks v)) -> f (DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (j -> f k) -> Map j (DeepMap ks v) -> f (Map k (DeepMap ks v))
forall (f :: * -> *) k j a.
(Applicative f, Ord k) =>
(j -> f k) -> Map j a -> f (Map k a)
traverseKeysMap j -> f k
f Map j (DeepMap ks v)
Map k (DeepMap ks v)
m
where
traverseKeysMap ::
(Applicative f, Ord k) => (j -> f k) -> Map j a -> f (Map k a)
traverseKeysMap :: forall (f :: * -> *) k j a.
(Applicative f, Ord k) =>
(j -> f k) -> Map j a -> f (Map k a)
traverseKeysMap j -> f k
f0 = ([(k, a)] -> Map k a) -> f [(k, a)] -> f (Map k a)
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [(k, a)] -> Map k a
forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList (f [(k, a)] -> f (Map k a))
-> (Map j a -> f [(k, a)]) -> Map j a -> f (Map k a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((j, a) -> f (k, a)) -> [(j, a)] -> f [(k, a)]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> [a] -> f [b]
traverse (\(j
j, a
a) -> (,a
a) (k -> (k, a)) -> f k -> f (k, a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> j -> f k
f0 j
j) ([(j, a)] -> f [(k, a)])
-> (Map j a -> [(j, a)]) -> Map j a -> f [(k, a)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map j a -> [(j, a)]
forall k a. Map k a -> [(k, a)]
Map.assocs
traverseKeysDeep ::
forall f js ks v.
(Applicative f, Monoid (DeepMap ks v)) =>
(Deep js -> f (Deep ks)) ->
DeepMap js v ->
f (DeepMap ks v)
traverseKeysDeep :: forall (f :: * -> *) (js :: [*]) (ks :: [*]) v.
(Applicative f, Monoid (DeepMap ks v)) =>
(Deep js -> f (Deep ks)) -> DeepMap js v -> f (DeepMap ks v)
traverseKeysDeep Deep js -> f (Deep ks)
f = \case
Bare v
v -> Deep js -> f (Deep ks)
f Deep js
Deep '[]
Deep0 f (Deep ks) -> (Deep ks -> DeepMap ks v) -> f (DeepMap ks v)
forall (f :: * -> *) a b. Functor f => f a -> (a -> b) -> f b
<&> (Deep ks -> v -> DeepMap ks v
forall (ks :: [*]) v. Deep ks -> v -> DeepMap ks v
`deep` v
v)
Nest Map k (DeepMap ks v)
m -> Map k (DeepMap ks v) -> DeepMap ks v
forall m. Monoid m => Map k m -> m
forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold (Map k (DeepMap ks v) -> DeepMap ks v)
-> f (Map k (DeepMap ks v)) -> f (DeepMap ks v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (k -> DeepMap ks v -> f (DeepMap ks v))
-> Map k (DeepMap ks v) -> f (Map k (DeepMap ks v))
forall i (t :: * -> *) (f :: * -> *) a b.
(TraversableWithIndex i t, Applicative f) =>
(i -> a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(k -> a -> f b) -> Map k a -> f (Map k b)
itraverse ((Deep ks -> f (Deep ks)) -> DeepMap ks v -> f (DeepMap ks v)
forall (f :: * -> *) (js :: [*]) (ks :: [*]) v.
(Applicative f, Monoid (DeepMap ks v)) =>
(Deep js -> f (Deep ks)) -> DeepMap js v -> f (DeepMap ks v)
traverseKeysDeep ((Deep ks -> f (Deep ks)) -> DeepMap ks v -> f (DeepMap ks v))
-> (k -> Deep ks -> f (Deep ks))
-> k
-> DeepMap ks v
-> f (DeepMap ks v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Deep js -> f (Deep ks)
f .) ((Deep ks -> Deep js) -> Deep ks -> f (Deep ks))
-> (k -> Deep ks -> Deep js) -> k -> Deep ks -> f (Deep ks)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> Deep ks -> Deep js
k -> Deep ks -> Deep (k : ks)
forall k (ks :: [*]). Ord k => k -> Deep ks -> Deep (k : ks)
Deep1) Map k (DeepMap ks v)
m
traverseKeysWith ::
(Applicative f, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
(j -> f k) ->
DeepMap (j ': ks) v ->
f (DeepMap (k ': ks) v)
traverseKeysWith :: forall (f :: * -> *) k (ks :: [*]) v j.
(Applicative f, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> f k) -> DeepMap (j : ks) v -> f (DeepMap (k : ks) v)
traverseKeysWith DeepMap ks v -> DeepMap ks v -> DeepMap ks v
(~~) j -> f k
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> f (Map k (DeepMap ks v)) -> f (DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> f k) -> Map j (DeepMap ks v) -> f (Map k (DeepMap ks v))
forall (f :: * -> *) k a j.
(Applicative f, Ord k) =>
(a -> a -> a) -> (j -> f k) -> Map j a -> f (Map k a)
traverseKeysWithMap DeepMap ks v -> DeepMap ks v -> DeepMap ks v
(~~) j -> f k
f Map j (DeepMap ks v)
Map k (DeepMap ks v)
m
where
traverseKeysWithMap ::
(Applicative f, Ord k) => (a -> a -> a) -> (j -> f k) -> Map j a -> f (Map k a)
traverseKeysWithMap :: forall (f :: * -> *) k a j.
(Applicative f, Ord k) =>
(a -> a -> a) -> (j -> f k) -> Map j a -> f (Map k a)
traverseKeysWithMap a -> a -> a
c j -> f k
f0 = ([(k, a)] -> Map k a) -> f [(k, a)] -> f (Map k a)
forall a b. (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((a -> a -> a) -> [(k, a)] -> Map k a
forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
Map.fromListWith a -> a -> a
c) (f [(k, a)] -> f (Map k a))
-> (Map j a -> f [(k, a)]) -> Map j a -> f (Map k a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((j, a) -> f (k, a)) -> [(j, a)] -> f [(k, a)]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> [a] -> f [b]
traverse (\(j
j, a
a) -> (,a
a) (k -> (k, a)) -> f k -> f (k, a)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> j -> f k
f0 j
j) ([(j, a)] -> f [(k, a)])
-> (Map j a -> [(j, a)]) -> Map j a -> f [(k, a)]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map j a -> [(j, a)]
forall k a. Map k a -> [(k, a)]
Map.assocs
mapKeysM ::
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) ->
DeepMap (j ': ks) v ->
m (DeepMap (k ': ks) v)
mapKeysM :: forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM = (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
forall (f :: * -> *) k (ks :: [*]) v j.
(Applicative f, Ord k, Semigroup (DeepMap ks v)) =>
(j -> f k) -> DeepMap (j : ks) v -> f (DeepMap (k : ks) v)
traverseKeys
mapKeysM1 ::
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) ->
DeepMap (j ': ks) v ->
m (DeepMap (k ': ks) v)
mapKeysM1 :: forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM1 = (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM
mapKeysM2 ::
(Monad m, Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> m k0) ->
(j1 -> m k1) ->
DeepMap (j0 ': j1 ': ks) v ->
m (DeepMap (k0 ': k1 ': ks) v)
mapKeysM2 :: forall (m :: * -> *) k0 k1 (ks :: [*]) v j0 j1.
(Monad m, Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> DeepMap (j0 : j1 : ks) v
-> m (DeepMap (k0 : k1 : ks) v)
mapKeysM2 j0 -> m k0
f0 j1 -> m k1
f1 DeepMap (j0 : j1 : ks) v
m = (j0 -> m k0)
-> DeepMap (j0 : k1 : ks) v -> m (DeepMap (k0 : k1 : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM j0 -> m k0
f0 (DeepMap (j0 : k1 : ks) v -> m (DeepMap (k0 : k1 : ks) v))
-> m (DeepMap (j0 : k1 : ks) v) -> m (DeepMap (k0 : k1 : ks) v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap (j1 : ks) v -> m (DeepMap (k1 : ks) v))
-> DeepMap (j0 : j1 : ks) v -> m (DeepMap (j0 : k1 : ks) v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((j1 -> m k1) -> DeepMap (j1 : ks) v -> m (DeepMap (k1 : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM1 j1 -> m k1
f1) DeepMap (j0 : j1 : ks) v
m
mapKeysM3 ::
(Monad m, Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
DeepMap (j0 ': j1 ': j2 ': ks) v ->
m (DeepMap (k0 ': k1 ': k2 ': ks) v)
mapKeysM3 :: forall (m :: * -> *) k0 k1 k2 (ks :: [*]) v j0 j1 j2.
(Monad m, Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap (j0 : j1 : j2 : ks) v
-> m (DeepMap (k0 : k1 : k2 : ks) v)
mapKeysM3 j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 DeepMap (j0 : j1 : j2 : ks) v
m = (j0 -> m k0)
-> DeepMap (j0 : k1 : k2 : ks) v
-> m (DeepMap (k0 : k1 : k2 : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM j0 -> m k0
f0 (DeepMap (j0 : k1 : k2 : ks) v
-> m (DeepMap (k0 : k1 : k2 : ks) v))
-> m (DeepMap (j0 : k1 : k2 : ks) v)
-> m (DeepMap (k0 : k1 : k2 : ks) v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap (j1 : j2 : ks) v -> m (DeepMap (k1 : k2 : ks) v))
-> DeepMap (j0 : j1 : j2 : ks) v
-> m (DeepMap (j0 : k1 : k2 : ks) v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap (j1 : j2 : ks) v
-> m (DeepMap (k1 : k2 : ks) v)
forall (m :: * -> *) k0 k1 (ks :: [*]) v j0 j1.
(Monad m, Ord k0, Ord k1, Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> DeepMap (j0 : j1 : ks) v
-> m (DeepMap (k0 : k1 : ks) v)
mapKeysM2 j1 -> m k1
f1 j2 -> m k2
f2) DeepMap (j0 : j1 : j2 : ks) v
m
mapKeysM4 ::
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3, Semigroup (DeepMap ks v)) =>
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
(j3 -> m k3) ->
DeepMap (j0 ': j1 ': j2 ': j3 ': ks) v ->
m (DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v)
mapKeysM4 :: forall (m :: * -> *) k0 k1 k2 k3 (ks :: [*]) v j0 j1 j2 j3.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3,
Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : ks) v)
mapKeysM4 j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 DeepMap (j0 : j1 : j2 : j3 : ks) v
m = (j0 -> m k0)
-> DeepMap (j0 : k1 : k2 : k3 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM j0 -> m k0
f0 (DeepMap (j0 : k1 : k2 : k3 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : ks) v))
-> m (DeepMap (j0 : k1 : k2 : k3 : ks) v)
-> m (DeepMap (k0 : k1 : k2 : k3 : ks) v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap (j1 : j2 : j3 : ks) v
-> m (DeepMap (k1 : k2 : k3 : ks) v))
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> m (DeepMap (j0 : k1 : k2 : k3 : ks) v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap (j1 : j2 : j3 : ks) v
-> m (DeepMap (k1 : k2 : k3 : ks) v)
forall (m :: * -> *) k0 k1 k2 (ks :: [*]) v j0 j1 j2.
(Monad m, Ord k0, Ord k1, Ord k2, Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap (j0 : j1 : j2 : ks) v
-> m (DeepMap (k0 : k1 : k2 : ks) v)
mapKeysM3 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3) DeepMap (j0 : j1 : j2 : j3 : ks) v
m
mapKeysM5 ::
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4, Semigroup (DeepMap ks v)) =>
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
(j3 -> m k3) ->
(j4 -> m k4) ->
DeepMap (j0 ': j1 ': j2 ': j3 ': j4 ': ks) v ->
m (DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v)
mapKeysM5 :: forall (m :: * -> *) k0 k1 k2 k3 k4 (ks :: [*]) v j0 j1 j2 j3 j4.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4,
Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> (j4 -> m k4)
-> DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
mapKeysM5 j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 j4 -> m k4
f4 DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
m = (j0 -> m k0)
-> DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k, Semigroup (DeepMap ks v)) =>
(j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysM j0 -> m k0
f0 (DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v))
-> m (DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v)
-> m (DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap (j1 : j2 : j3 : j4 : ks) v
-> m (DeepMap (k1 : k2 : k3 : k4 : ks) v))
-> DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
-> m (DeepMap (j0 : k1 : k2 : k3 : k4 : ks) v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> (j4 -> m k4)
-> DeepMap (j1 : j2 : j3 : j4 : ks) v
-> m (DeepMap (k1 : k2 : k3 : k4 : ks) v)
forall (m :: * -> *) k0 k1 k2 k3 (ks :: [*]) v j0 j1 j2 j3.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3,
Semigroup (DeepMap ks v)) =>
(j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap (j0 : j1 : j2 : j3 : ks) v
-> m (DeepMap (k0 : k1 : k2 : k3 : ks) v)
mapKeysM4 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 j4 -> m k4
f4) DeepMap (j0 : j1 : j2 : j3 : j4 : ks) v
m
mapKeysMWith ::
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v) ->
(j -> m k) ->
DeepMap (j ': ks) v ->
m (DeepMap (k ': ks) v)
mapKeysMWith :: forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith = (DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
forall (f :: * -> *) k (ks :: [*]) v j.
(Applicative f, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> f k) -> DeepMap (j : ks) v -> f (DeepMap (k : ks) v)
traverseKeysWith
mapKeysMWith1 ::
(Monad m, Ord k) =>
(v -> v -> v) ->
(j -> m k) ->
DeepMap '[j] v ->
m (DeepMap '[k] v)
mapKeysMWith1 :: forall (m :: * -> *) k v j.
(Monad m, Ord k) =>
(v -> v -> v) -> (j -> m k) -> DeepMap '[j] v -> m (DeepMap '[k] v)
mapKeysMWith1 v -> v -> v
(~~) = (DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v)
-> (j -> m k) -> DeepMap '[j] v -> m (DeepMap '[k] v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith ((v -> v -> v) -> DeepMap '[] v -> DeepMap '[] v -> DeepMap '[] v
forall v w x.
(v -> w -> x) -> DeepMap '[] v -> DeepMap '[] w -> DeepMap '[] x
onBare2 v -> v -> v
(~~))
mapKeysMWith2 ::
(Monad m, Ord k0, Ord k1) =>
(v -> v -> v) ->
(j0 -> m k0) ->
(j1 -> m k1) ->
DeepMap '[j0, j1] v ->
m (DeepMap '[k0, k1] v)
mapKeysMWith2 :: forall (m :: * -> *) k0 k1 v j0 j1.
(Monad m, Ord k0, Ord k1) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> DeepMap '[j0, j1] v
-> m (DeepMap '[k0, k1] v)
mapKeysMWith2 v -> v -> v
(~~) j0 -> m k0
f0 j1 -> m k1
f1 DeepMap '[j0, j1] v
m =
(DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v)
-> (j0 -> m k0) -> DeepMap '[j0, k1] v -> m (DeepMap '[k0, k1] v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith ((v -> v -> v)
-> DeepMap '[k1] v -> DeepMap '[k1] v -> DeepMap '[k1] v
forall k v.
Ord k =>
(v -> v -> v) -> DeepMap '[k] v -> DeepMap '[k] v -> DeepMap '[k] v
unionWith1 v -> v -> v
(~~)) j0 -> m k0
f0 (DeepMap '[j0, k1] v -> m (DeepMap '[k0, k1] v))
-> m (DeepMap '[j0, k1] v) -> m (DeepMap '[k0, k1] v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap '[j1] v -> m (DeepMap '[k1] v))
-> DeepMap '[j0, j1] v -> m (DeepMap '[j0, k1] v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((v -> v -> v)
-> (j1 -> m k1) -> DeepMap '[j1] v -> m (DeepMap '[k1] v)
forall (m :: * -> *) k v j.
(Monad m, Ord k) =>
(v -> v -> v) -> (j -> m k) -> DeepMap '[j] v -> m (DeepMap '[k] v)
mapKeysMWith1 v -> v -> v
(~~) j1 -> m k1
f1) DeepMap '[j0, j1] v
m
mapKeysMWith3 ::
(Monad m, Ord k0, Ord k1, Ord k2) =>
(v -> v -> v) ->
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
DeepMap '[j0, j1, j2] v ->
m (DeepMap '[k0, k1, k2] v)
mapKeysMWith3 :: forall (m :: * -> *) k0 k1 k2 v j0 j1 j2.
(Monad m, Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap '[j0, j1, j2] v
-> m (DeepMap '[k0, k1, k2] v)
mapKeysMWith3 v -> v -> v
(~~) j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 DeepMap '[j0, j1, j2] v
m =
(DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v)
-> (j0 -> m k0)
-> DeepMap '[j0, k1, k2] v
-> m (DeepMap '[k0, k1, k2] v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith ((v -> v -> v)
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] v
forall k0 k1 v.
(Ord k0, Ord k1) =>
(v -> v -> v)
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
-> DeepMap '[k0, k1] v
unionWith2 v -> v -> v
(~~)) j0 -> m k0
f0
(DeepMap '[j0, k1, k2] v -> m (DeepMap '[k0, k1, k2] v))
-> m (DeepMap '[j0, k1, k2] v) -> m (DeepMap '[k0, k1, k2] v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap '[j1, j2] v -> m (DeepMap '[k1, k2] v))
-> DeepMap '[j0, j1, j2] v -> m (DeepMap '[j0, k1, k2] v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((v -> v -> v)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap '[j1, j2] v
-> m (DeepMap '[k1, k2] v)
forall (m :: * -> *) k0 k1 v j0 j1.
(Monad m, Ord k0, Ord k1) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> DeepMap '[j0, j1] v
-> m (DeepMap '[k0, k1] v)
mapKeysMWith2 v -> v -> v
(~~) j1 -> m k1
f1 j2 -> m k2
f2) DeepMap '[j0, j1, j2] v
m
mapKeysMWith4 ::
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v) ->
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
(j3 -> m k3) ->
DeepMap '[j0, j1, j2, j3] v ->
m (DeepMap '[k0, k1, k2, k3] v)
mapKeysMWith4 :: forall (m :: * -> *) k0 k1 k2 k3 v j0 j1 j2 j3.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap '[j0, j1, j2, j3] v
-> m (DeepMap '[k0, k1, k2, k3] v)
mapKeysMWith4 v -> v -> v
(~~) j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 DeepMap '[j0, j1, j2, j3] v
m =
(DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v)
-> (j0 -> m k0)
-> DeepMap '[j0, k1, k2, k3] v
-> m (DeepMap '[k0, k1, k2, k3] v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] v
forall k0 k1 k2 v.
(Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
-> DeepMap '[k0, k1, k2] v
unionWith3 v -> v -> v
(~~)) j0 -> m k0
f0
(DeepMap '[j0, k1, k2, k3] v -> m (DeepMap '[k0, k1, k2, k3] v))
-> m (DeepMap '[j0, k1, k2, k3] v)
-> m (DeepMap '[k0, k1, k2, k3] v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap '[j1, j2, j3] v -> m (DeepMap '[k1, k2, k3] v))
-> DeepMap '[j0, j1, j2, j3] v -> m (DeepMap '[j0, k1, k2, k3] v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((v -> v -> v)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap '[j1, j2, j3] v
-> m (DeepMap '[k1, k2, k3] v)
forall (m :: * -> *) k0 k1 k2 v j0 j1 j2.
(Monad m, Ord k0, Ord k1, Ord k2) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> DeepMap '[j0, j1, j2] v
-> m (DeepMap '[k0, k1, k2] v)
mapKeysMWith3 v -> v -> v
(~~) j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3) DeepMap '[j0, j1, j2, j3] v
m
mapKeysMWith5 ::
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v) ->
(j0 -> m k0) ->
(j1 -> m k1) ->
(j2 -> m k2) ->
(j3 -> m k3) ->
(j4 -> m k4) ->
DeepMap '[j0, j1, j2, j3, j4] v ->
m (DeepMap '[k0, k1, k2, k3, k4] v)
mapKeysMWith5 :: forall (m :: * -> *) k0 k1 k2 k3 k4 v j0 j1 j2 j3 j4.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> (j4 -> m k4)
-> DeepMap '[j0, j1, j2, j3, j4] v
-> m (DeepMap '[k0, k1, k2, k3, k4] v)
mapKeysMWith5 v -> v -> v
(~~) j0 -> m k0
f0 j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 j4 -> m k4
f4 DeepMap '[j0, j1, j2, j3, j4] v
m =
(DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v)
-> (j0 -> m k0)
-> DeepMap '[j0, k1, k2, k3, k4] v
-> m (DeepMap '[k0, k1, k2, k3, k4] v)
forall (m :: * -> *) k (ks :: [*]) v j.
(Monad m, Ord k) =>
(DeepMap ks v -> DeepMap ks v -> DeepMap ks v)
-> (j -> m k) -> DeepMap (j : ks) v -> m (DeepMap (k : ks) v)
mapKeysMWith ((v -> v -> v)
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] v
forall k0 k1 k2 k3 v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] v
unionWith4 v -> v -> v
(~~)) j0 -> m k0
f0
(DeepMap '[j0, k1, k2, k3, k4] v
-> m (DeepMap '[k0, k1, k2, k3, k4] v))
-> m (DeepMap '[j0, k1, k2, k3, k4] v)
-> m (DeepMap '[k0, k1, k2, k3, k4] v)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< (DeepMap '[j1, j2, j3, j4] v -> m (DeepMap '[k1, k2, k3, k4] v))
-> DeepMap '[j0, j1, j2, j3, j4] v
-> m (DeepMap '[j0, k1, k2, k3, k4] v)
forall (f :: * -> *) (ks :: [*]) v (ls :: [*]) w k.
Applicative f =>
(DeepMap ks v -> f (DeepMap ls w))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseShallow ((v -> v -> v)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> (j4 -> m k4)
-> DeepMap '[j1, j2, j3, j4] v
-> m (DeepMap '[k1, k2, k3, k4] v)
forall (m :: * -> *) k0 k1 k2 k3 v j0 j1 j2 j3.
(Monad m, Ord k0, Ord k1, Ord k2, Ord k3) =>
(v -> v -> v)
-> (j0 -> m k0)
-> (j1 -> m k1)
-> (j2 -> m k2)
-> (j3 -> m k3)
-> DeepMap '[j0, j1, j2, j3] v
-> m (DeepMap '[k0, k1, k2, k3] v)
mapKeysMWith4 v -> v -> v
(~~) j1 -> m k1
f1 j2 -> m k2
f2 j3 -> m k3
f3 j4 -> m k4
f4) DeepMap '[j0, j1, j2, j3, j4] v
m
foldShallow :: (Monoid (DeepMap ks v)) => DeepMap (k ': ks) v -> DeepMap ks v
foldShallow :: forall (ks :: [*]) v k.
Monoid (DeepMap ks v) =>
DeepMap (k : ks) v -> DeepMap ks v
foldShallow (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap ks v
forall m. Monoid m => Map k m -> m
forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m
fold Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldrWithKey :: (k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k ': ks) v -> b
foldrWithKey :: forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey k -> DeepMap ks v -> b -> b
f b
z (Nest Map k (DeepMap ks v)
m) = (k -> DeepMap ks v -> b -> b) -> b -> Map k (DeepMap ks v) -> b
forall k a b. (k -> a -> b -> b) -> b -> Map k a -> b
Map.foldrWithKey k -> DeepMap ks v -> b -> b
f b
z Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldrWithKey1 :: (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1 :: forall k v b. (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1 k -> v -> b -> b
f = (k -> DeepMap '[] v -> b -> b) -> b -> DeepMap '[k] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey (\k
k (Bare v
v) -> k -> v -> b -> b
f k
k v
v)
foldrWithKey2 :: (k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2 :: forall k0 k1 v b.
(k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2 k0 -> k1 -> v -> b -> b
f = (k0 -> DeepMap '[k1] v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey (\k0
k0 DeepMap '[k1] v
dm b
b -> (k1 -> v -> b -> b) -> b -> DeepMap '[k1] v -> b
forall k v b. (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1 (k0 -> k1 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1] v
dm)
foldrWithKey3 ::
(k0 -> k1 -> k2 -> v -> b -> b) -> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3 :: forall k0 k1 k2 v b.
(k0 -> k1 -> k2 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3 k0 -> k1 -> k2 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey (\k0
k0 DeepMap '[k1, k2] v
dm b
b -> (k1 -> k2 -> v -> b -> b) -> b -> DeepMap '[k1, k2] v -> b
forall k0 k1 v b.
(k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2 (k0 -> k1 -> k2 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2] v
dm)
foldrWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> b -> b) -> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4 :: forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4 k0 -> k1 -> k2 -> k3 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2, k3] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey (\k0
k0 DeepMap '[k1, k2, k3] v
dm b
b -> (k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k1, k2, k3] v -> b
forall k0 k1 k2 v b.
(k0 -> k1 -> k2 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3 (k0 -> k1 -> k2 -> k3 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2, k3] v
dm)
foldrWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b) ->
b ->
DeepMap '[k0, k1, k2, k3, k3] v ->
b
foldrWithKey5 :: forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k3] v -> b
foldrWithKey5 k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2, k3, k3] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k3] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey (\k0
k0 DeepMap '[k1, k2, k3, k3] v
dm b
b -> (k1 -> k2 -> k3 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k1, k2, k3, k3] v -> b
forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4 (k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2, k3, k3] v
dm)
foldlWithKey :: (b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k ': ks) v -> b
foldlWithKey :: forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey b -> k -> DeepMap ks v -> b
f b
z (Nest Map k (DeepMap ks v)
m) = (b -> k -> DeepMap ks v -> b) -> b -> Map k (DeepMap ks v) -> b
forall a k b. (a -> k -> b -> a) -> a -> Map k b -> a
Map.foldlWithKey b -> k -> DeepMap ks v -> b
f b
z Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldlWithKey1 :: (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1 :: forall b k v. (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1 b -> k -> v -> b
f = (b -> k -> DeepMap '[] v -> b) -> b -> DeepMap '[k] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k
k (Bare v
v) -> b -> k -> v -> b
f b
b k
k v
v)
foldlWithKey2 :: (b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2 :: forall b k0 k1 v.
(b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2 b -> k0 -> k1 -> v -> b
f = (b -> k0 -> DeepMap '[k1] v -> b) -> b -> DeepMap '[k0, k1] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k0
k0 -> (b -> k1 -> v -> b) -> b -> DeepMap '[k1] v -> b
forall b k v. (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1 (b -> k0 -> k1 -> v -> b
`f` k0
k0) b
b)
foldlWithKey3 ::
(b -> k0 -> k1 -> k2 -> v -> b) -> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3 :: forall b k0 k1 k2 v.
(b -> k0 -> k1 -> k2 -> v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3 b -> k0 -> k1 -> k2 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2] v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k0
k0 -> (b -> k1 -> k2 -> v -> b) -> b -> DeepMap '[k1, k2] v -> b
forall b k0 k1 v.
(b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2 (b -> k0 -> k1 -> k2 -> v -> b
`f` k0
k0) b
b)
foldlWithKey4 ::
(b -> k0 -> k1 -> k2 -> k3 -> v -> b) -> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4 :: forall b k0 k1 k2 k3 v.
(b -> k0 -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4 b -> k0 -> k1 -> k2 -> k3 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2, k3] v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k0
k0 -> (b -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k1, k2, k3] v -> b
forall b k0 k1 k2 v.
(b -> k0 -> k1 -> k2 -> v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3 (b -> k0 -> k1 -> k2 -> k3 -> v -> b
`f` k0
k0) b
b)
foldlWithKey5 ::
(b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b) ->
b ->
DeepMap '[k0, k1, k2, k3, k4] v ->
b
foldlWithKey5 :: forall b k0 k1 k2 k3 k4 v.
(b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k4] v -> b
foldlWithKey5 b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2, k3, k4] v -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k4] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k0
k0 -> (b -> k1 -> k2 -> k3 -> k4 -> v -> b)
-> b -> DeepMap '[k1, k2, k3, k4] v -> b
forall b k0 k1 k2 k3 v.
(b -> k0 -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4 (b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b
`f` k0
k0) b
b)
foldrWithKey' :: (k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k ': ks) v -> b
foldrWithKey' :: forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' k -> DeepMap ks v -> b -> b
f b
z (Nest Map k (DeepMap ks v)
m) = (k -> DeepMap ks v -> b -> b) -> b -> Map k (DeepMap ks v) -> b
forall k a b. (k -> a -> b -> b) -> b -> Map k a -> b
Map.foldrWithKey' k -> DeepMap ks v -> b -> b
f b
z Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldrWithKey1' :: (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1' :: forall k v b. (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1' k -> v -> b -> b
f = (k -> DeepMap '[] v -> b -> b) -> b -> DeepMap '[k] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' (\k
k (Bare v
v) -> k -> v -> b -> b
f k
k v
v)
foldrWithKey2' :: (k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2' :: forall k0 k1 v b.
(k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2' k0 -> k1 -> v -> b -> b
f = (k0 -> DeepMap '[k1] v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' (\k0
k0 DeepMap '[k1] v
dm b
b -> (k1 -> v -> b -> b) -> b -> DeepMap '[k1] v -> b
forall k v b. (k -> v -> b -> b) -> b -> DeepMap '[k] v -> b
foldrWithKey1' (k0 -> k1 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1] v
dm)
foldrWithKey3' ::
(k0 -> k1 -> k2 -> v -> b -> b) -> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3' :: forall k0 k1 k2 v b.
(k0 -> k1 -> k2 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3' k0 -> k1 -> k2 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' (\k0
k0 DeepMap '[k1, k2] v
dm b
b -> (k1 -> k2 -> v -> b -> b) -> b -> DeepMap '[k1, k2] v -> b
forall k0 k1 v b.
(k0 -> k1 -> v -> b -> b) -> b -> DeepMap '[k0, k1] v -> b
foldrWithKey2' (k0 -> k1 -> k2 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2] v
dm)
foldrWithKey4' ::
(k0 -> k1 -> k2 -> k3 -> v -> b -> b) -> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4' :: forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4' k0 -> k1 -> k2 -> k3 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2, k3] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' (\k0
k0 DeepMap '[k1, k2, k3] v
dm b
b -> (k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k1, k2, k3] v -> b
forall k0 k1 k2 v b.
(k0 -> k1 -> k2 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldrWithKey3' (k0 -> k1 -> k2 -> k3 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2, k3] v
dm)
foldrWithKey5' ::
(k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b) ->
b ->
DeepMap '[k0, k1, k2, k3, k3] v ->
b
foldrWithKey5' :: forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k3] v -> b
foldrWithKey5' k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b
f = (k0 -> DeepMap '[k1, k2, k3, k3] v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k3] v -> b
forall k (ks :: [*]) v b.
(k -> DeepMap ks v -> b -> b) -> b -> DeepMap (k : ks) v -> b
foldrWithKey' (\k0
k0 DeepMap '[k1, k2, k3, k3] v
dm b
b -> (k1 -> k2 -> k3 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k1, k2, k3, k3] v -> b
forall k0 k1 k2 k3 v b.
(k0 -> k1 -> k2 -> k3 -> v -> b -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldrWithKey4' (k0 -> k1 -> k2 -> k3 -> k3 -> v -> b -> b
f k0
k0) b
b DeepMap '[k1, k2, k3, k3] v
dm)
foldlWithKey' :: (b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k ': ks) v -> b
foldlWithKey' :: forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey' b -> k -> DeepMap ks v -> b
f b
z (Nest Map k (DeepMap ks v)
m) = (b -> k -> DeepMap ks v -> b) -> b -> Map k (DeepMap ks v) -> b
forall a k b. (a -> k -> b -> a) -> a -> Map k b -> a
Map.foldlWithKey' b -> k -> DeepMap ks v -> b
f b
z Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldlWithKey1' :: (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1' :: forall b k v. (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1' b -> k -> v -> b
f = (b -> k -> DeepMap '[] v -> b) -> b -> DeepMap '[k] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey' (\b
b k
k (Bare v
v) -> b -> k -> v -> b
f b
b k
k v
v)
foldlWithKey2' :: (b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2' :: forall b k0 k1 v.
(b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2' b -> k0 -> k1 -> v -> b
f = (b -> k0 -> DeepMap '[k1] v -> b) -> b -> DeepMap '[k0, k1] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey' (\b
b k0
k0 -> (b -> k1 -> v -> b) -> b -> DeepMap '[k1] v -> b
forall b k v. (b -> k -> v -> b) -> b -> DeepMap '[k] v -> b
foldlWithKey1' (b -> k0 -> k1 -> v -> b
`f` k0
k0) b
b)
foldlWithKey3' ::
(b -> k0 -> k1 -> k2 -> v -> b) -> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3' :: forall b k0 k1 k2 v.
(b -> k0 -> k1 -> k2 -> v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3' b -> k0 -> k1 -> k2 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2] v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey (\b
b k0
k0 -> (b -> k1 -> k2 -> v -> b) -> b -> DeepMap '[k1, k2] v -> b
forall b k0 k1 v.
(b -> k0 -> k1 -> v -> b) -> b -> DeepMap '[k0, k1] v -> b
foldlWithKey2' (b -> k0 -> k1 -> k2 -> v -> b
`f` k0
k0) b
b)
foldlWithKey4' ::
(b -> k0 -> k1 -> k2 -> k3 -> v -> b) -> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4' :: forall b k0 k1 k2 k3 v.
(b -> k0 -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4' b -> k0 -> k1 -> k2 -> k3 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2, k3] v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey' (\b
b k0
k0 -> (b -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k1, k2, k3] v -> b
forall b k0 k1 k2 v.
(b -> k0 -> k1 -> k2 -> v -> b)
-> b -> DeepMap '[k0, k1, k2] v -> b
foldlWithKey3' (b -> k0 -> k1 -> k2 -> k3 -> v -> b
`f` k0
k0) b
b)
foldlWithKey5' ::
(b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b) ->
b ->
DeepMap '[k0, k1, k2, k3, k4] v ->
b
foldlWithKey5' :: forall b k0 k1 k2 k3 k4 v.
(b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k4] v -> b
foldlWithKey5' b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b
f = (b -> k0 -> DeepMap '[k1, k2, k3, k4] v -> b)
-> b -> DeepMap '[k0, k1, k2, k3, k4] v -> b
forall b k (ks :: [*]) v.
(b -> k -> DeepMap ks v -> b) -> b -> DeepMap (k : ks) v -> b
foldlWithKey' (\b
b k0
k0 -> (b -> k1 -> k2 -> k3 -> k4 -> v -> b)
-> b -> DeepMap '[k1, k2, k3, k4] v -> b
forall b k0 k1 k2 k3 v.
(b -> k0 -> k1 -> k2 -> k3 -> v -> b)
-> b -> DeepMap '[k0, k1, k2, k3] v -> b
foldlWithKey4' (b -> k0 -> k1 -> k2 -> k3 -> k4 -> v -> b
`f` k0
k0) b
b)
foldMapWithKey ::
(Monoid m) => (k -> DeepMap ks v -> m) -> DeepMap (k ': ks) v -> m
foldMapWithKey :: forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey k -> DeepMap ks v -> m
f (Nest Map k (DeepMap ks v)
m) = (k -> DeepMap ks v -> m) -> Map k (DeepMap ks v) -> m
forall m k a. Monoid m => (k -> a -> m) -> Map k a -> m
Map.foldMapWithKey k -> DeepMap ks v -> m
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldMapWithKey1 :: (Monoid m) => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1 :: forall m k v. Monoid m => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1 k -> v -> m
f = (k -> DeepMap '[] v -> m) -> DeepMap '[k] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey (\k
k (Bare v
v) -> k -> v -> m
f k
k v
v)
foldMapWithKey2 ::
(Monoid m) => (k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2 :: forall m k0 k1 v.
Monoid m =>
(k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2 k0 -> k1 -> v -> m
f = (k0 -> DeepMap '[k1] v -> m) -> DeepMap '[k0, k1] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey ((k1 -> v -> m) -> DeepMap '[k1] v -> m
forall m k v. Monoid m => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1 ((k1 -> v -> m) -> DeepMap '[k1] v -> m)
-> (k0 -> k1 -> v -> m) -> k0 -> DeepMap '[k1] v -> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> m
f)
foldMapWithKey3 ::
(Monoid m) => (k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3 :: forall m k0 k1 k2 v.
Monoid m =>
(k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3 k0 -> k1 -> k2 -> v -> m
f = (k0 -> DeepMap '[k1, k2] v -> m) -> DeepMap '[k0, k1, k2] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey ((k1 -> k2 -> v -> m) -> DeepMap '[k1, k2] v -> m
forall m k0 k1 v.
Monoid m =>
(k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2 ((k1 -> k2 -> v -> m) -> DeepMap '[k1, k2] v -> m)
-> (k0 -> k1 -> k2 -> v -> m) -> k0 -> DeepMap '[k1, k2] v -> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> m
f)
foldMapWithKey4 ::
(Monoid m) =>
(k0 -> k1 -> k2 -> k3 -> v -> m) ->
DeepMap '[k0, k1, k2, k3] v ->
m
foldMapWithKey4 :: forall m k0 k1 k2 k3 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
foldMapWithKey4 k0 -> k1 -> k2 -> k3 -> v -> m
f = (k0 -> DeepMap '[k1, k2, k3] v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey ((k1 -> k2 -> k3 -> v -> m) -> DeepMap '[k1, k2, k3] v -> m
forall m k0 k1 k2 v.
Monoid m =>
(k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3 ((k1 -> k2 -> k3 -> v -> m) -> DeepMap '[k1, k2, k3] v -> m)
-> (k0 -> k1 -> k2 -> k3 -> v -> m)
-> k0
-> DeepMap '[k1, k2, k3] v
-> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> m
f)
foldMapWithKey5 ::
(Monoid m) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> m) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
m
foldMapWithKey5 :: forall m k0 k1 k2 k3 k4 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k0, k1, k2, k3, k4] v -> m
foldMapWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> m
f = (k0 -> DeepMap '[k1, k2, k3, k4] v -> m)
-> DeepMap '[k0, k1, k2, k3, k4] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey ((k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k1, k2, k3, k4] v -> m
forall m k0 k1 k2 k3 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
foldMapWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k1, k2, k3, k4] v -> m)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> m)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> m
f)
foldMapWithKey' ::
(Monoid m) => (k -> DeepMap ks v -> m) -> DeepMap (k ': ks) v -> m
foldMapWithKey' :: forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' k -> DeepMap ks v -> m
f (Nest Map k (DeepMap ks v)
m) = (m -> k -> DeepMap ks v -> m) -> m -> Map k (DeepMap ks v) -> m
forall a k b. (a -> k -> b -> a) -> a -> Map k b -> a
Map.foldlWithKey' (\m
acc k
k DeepMap ks v
v -> m
acc m -> m -> m
forall a. Semigroup a => a -> a -> a
<> k -> DeepMap ks v -> m
f k
k DeepMap ks v
v) m
forall a. Monoid a => a
mempty Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
foldMapWithKey1' :: (Monoid m) => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1' :: forall m k v. Monoid m => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1' k -> v -> m
f = (k -> DeepMap '[] v -> m) -> DeepMap '[k] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' (\k
k (Bare v
v) -> k -> v -> m
f k
k v
v)
foldMapWithKey2' ::
(Monoid m) => (k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2' :: forall m k0 k1 v.
Monoid m =>
(k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2' k0 -> k1 -> v -> m
f = (k0 -> DeepMap '[k1] v -> m) -> DeepMap '[k0, k1] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' ((k1 -> v -> m) -> DeepMap '[k1] v -> m
forall m k v. Monoid m => (k -> v -> m) -> DeepMap '[k] v -> m
foldMapWithKey1' ((k1 -> v -> m) -> DeepMap '[k1] v -> m)
-> (k0 -> k1 -> v -> m) -> k0 -> DeepMap '[k1] v -> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> m
f)
foldMapWithKey3' ::
(Monoid m) => (k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3' :: forall m k0 k1 k2 v.
Monoid m =>
(k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3' k0 -> k1 -> k2 -> v -> m
f = (k0 -> DeepMap '[k1, k2] v -> m) -> DeepMap '[k0, k1, k2] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' ((k1 -> k2 -> v -> m) -> DeepMap '[k1, k2] v -> m
forall m k0 k1 v.
Monoid m =>
(k0 -> k1 -> v -> m) -> DeepMap '[k0, k1] v -> m
foldMapWithKey2' ((k1 -> k2 -> v -> m) -> DeepMap '[k1, k2] v -> m)
-> (k0 -> k1 -> k2 -> v -> m) -> k0 -> DeepMap '[k1, k2] v -> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> m
f)
foldMapWithKey4' ::
(Monoid m) =>
(k0 -> k1 -> k2 -> k3 -> v -> m) ->
DeepMap '[k0, k1, k2, k3] v ->
m
foldMapWithKey4' :: forall m k0 k1 k2 k3 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
foldMapWithKey4' k0 -> k1 -> k2 -> k3 -> v -> m
f = (k0 -> DeepMap '[k1, k2, k3] v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' ((k1 -> k2 -> k3 -> v -> m) -> DeepMap '[k1, k2, k3] v -> m
forall m k0 k1 k2 v.
Monoid m =>
(k0 -> k1 -> k2 -> v -> m) -> DeepMap '[k0, k1, k2] v -> m
foldMapWithKey3' ((k1 -> k2 -> k3 -> v -> m) -> DeepMap '[k1, k2, k3] v -> m)
-> (k0 -> k1 -> k2 -> k3 -> v -> m)
-> k0
-> DeepMap '[k1, k2, k3] v
-> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> m
f)
foldMapWithKey5' ::
(Monoid m) =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> m) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
m
foldMapWithKey5' :: forall m k0 k1 k2 k3 k4 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k0, k1, k2, k3, k4] v -> m
foldMapWithKey5' k0 -> k1 -> k2 -> k3 -> k4 -> v -> m
f = (k0 -> DeepMap '[k1, k2, k3, k4] v -> m)
-> DeepMap '[k0, k1, k2, k3, k4] v -> m
forall m k (ks :: [*]) v.
Monoid m =>
(k -> DeepMap ks v -> m) -> DeepMap (k : ks) v -> m
foldMapWithKey' ((k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k1, k2, k3, k4] v -> m
forall m k0 k1 k2 k3 v.
Monoid m =>
(k0 -> k1 -> k2 -> k3 -> v -> m)
-> DeepMap '[k0, k1, k2, k3] v -> m
foldMapWithKey4' ((k1 -> k2 -> k3 -> k4 -> v -> m)
-> DeepMap '[k1, k2, k3, k4] v -> m)
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> m)
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> m
f)
toAscList :: DeepMap (k ': ks) v -> [(k, DeepMap ks v)]
toAscList :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [(k, DeepMap ks v)]
toAscList (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> [(k, DeepMap ks v)]
forall k a. Map k a -> [(k, a)]
Map.toAscList Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
toDescList :: DeepMap (k ': ks) v -> [(k, DeepMap ks v)]
toDescList :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [(k, DeepMap ks v)]
toDescList (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> [(k, DeepMap ks v)]
forall k a. Map k a -> [(k, a)]
Map.toDescList Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
filter :: (DeepMap ks v -> Bool) -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
filter :: forall (ks :: [*]) v k.
(DeepMap ks v -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
filter DeepMap ks v -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Bool)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall a k. (a -> Bool) -> Map k a -> Map k a
Map.filter DeepMap ks v -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
filter1 :: (v -> Bool) -> DeepMap '[k] v -> DeepMap '[k] v
filter1 :: forall v k. (v -> Bool) -> DeepMap '[k] v -> DeepMap '[k] v
filter1 v -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap '[] v) -> DeepMap '[k] v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] v) -> DeepMap '[k] v)
-> Map k (DeepMap '[] v) -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[] v -> Bool)
-> Map k (DeepMap '[] v) -> Map k (DeepMap '[] v)
forall a k. (a -> Bool) -> Map k a -> Map k a
Map.filter (v -> Bool
p (v -> Bool) -> (DeepMap '[] v -> v) -> DeepMap '[] v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare) Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
filter2 :: (v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filter2 :: forall v k0 k1.
(v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filter2 v -> Bool
p DeepMap '[k0, k1] v
m = (DeepMap '[k1] v -> DeepMap '[k1] v)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> Bool) -> DeepMap '[k1] v -> DeepMap '[k1] v
forall v k. (v -> Bool) -> DeepMap '[k] v -> DeepMap '[k] v
filter1 v -> Bool
p) (DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[k1] v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall (ks :: [*]) v k.
(DeepMap ks v -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
filter ((v -> Bool) -> DeepMap '[k1] v -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any v -> Bool
p) DeepMap '[k0, k1] v
m
filter3 :: (v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filter3 :: forall v k0 k1 k2.
(v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filter3 v -> Bool
p DeepMap '[k0, k1, k2] v
m = (DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> Bool) -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] v
forall v k0 k1.
(v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filter2 v -> Bool
p) (DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[k1, k2] v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall (ks :: [*]) v k.
(DeepMap ks v -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
filter ((v -> Bool) -> DeepMap '[k1, k2] v -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any v -> Bool
p) DeepMap '[k0, k1, k2] v
m
filter4 ::
(v -> Bool) -> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filter4 :: forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filter4 v -> Bool
p DeepMap '[k0, k1, k2, k3] v
m = (DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> Bool) -> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] v
forall v k0 k1 k2.
(v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filter3 v -> Bool
p) (DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[k1, k2, k3] v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall (ks :: [*]) v k.
(DeepMap ks v -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
filter ((v -> Bool) -> DeepMap '[k1, k2, k3] v -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any v -> Bool
p) DeepMap '[k0, k1, k2, k3] v
m
filter5 ::
(v -> Bool) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
filter5 :: forall v k0 k1 k2 k3 k4.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filter5 v -> Bool
p DeepMap '[k0, k1, k2, k3, k4] v
m = (DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow ((v -> Bool)
-> DeepMap '[k1, k2, k3, k4] v -> DeepMap '[k1, k2, k3, k4] v
forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filter4 v -> Bool
p) (DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a b. (a -> b) -> a -> b
$ (DeepMap '[k1, k2, k3, k4] v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall (ks :: [*]) v k.
(DeepMap ks v -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
filter ((v -> Bool) -> DeepMap '[k1, k2, k3, k4] v -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any v -> Bool
p) DeepMap '[k0, k1, k2, k3, k4] v
m
filterWithKey ::
(k -> DeepMap ks v -> Bool) -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
filterWithKey :: forall k (ks :: [*]) v.
(k -> DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v
filterWithKey k -> DeepMap ks v -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Bool)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> a -> Bool) -> Map k a -> Map k a
Map.filterWithKey k -> DeepMap ks v -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
filterWithKey1 :: (k -> v -> Bool) -> DeepMap '[k] v -> DeepMap '[k] v
filterWithKey1 :: forall k v. (k -> v -> Bool) -> DeepMap '[k] v -> DeepMap '[k] v
filterWithKey1 k -> v -> Bool
p DeepMap '[k] v
m =
Identity (DeepMap '[k] v) -> DeepMap '[k] v
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k] v) -> DeepMap '[k] v)
-> Identity (DeepMap '[k] v) -> DeepMap '[k] v
forall a b. (a -> b) -> a -> b
$ (k -> v -> Identity (Maybe v))
-> DeepMap '[k] v -> Identity (DeepMap '[k] v)
forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f (Maybe w)) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseMaybeWithKey1 (\k
k0 -> Maybe v -> Identity (Maybe v)
forall a. a -> Identity a
Identity (Maybe v -> Identity (Maybe v))
-> (v -> Maybe v) -> v -> Identity (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((v -> Maybe v) -> (v -> Maybe v) -> Bool -> v -> Maybe v
forall a. a -> a -> Bool -> a
bool (Maybe v -> v -> Maybe v
forall a b. a -> b -> a
const Maybe v
forall a. Maybe a
Nothing) v -> Maybe v
forall a. a -> Maybe a
Just (Bool -> v -> Maybe v) -> (v -> Bool) -> v -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< k -> v -> Bool
p k
k0)) DeepMap '[k] v
m
filterWithKey2 ::
(k0 -> k1 -> v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filterWithKey2 :: forall k0 k1 v.
(k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filterWithKey2 k0 -> k1 -> v -> Bool
p DeepMap '[k0, k1] v
m =
Identity (DeepMap '[k0, k1] v) -> DeepMap '[k0, k1] v
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1] v) -> DeepMap '[k0, k1] v)
-> Identity (DeepMap '[k0, k1] v) -> DeepMap '[k0, k1] v
forall a b. (a -> b) -> a -> b
$ (k0 -> k1 -> v -> Identity (Maybe v))
-> DeepMap '[k0, k1] v -> Identity (DeepMap '[k0, k1] v)
forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f (Maybe w))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseMaybeWithKey2
(\k0
k0 k1
k1 -> Maybe v -> Identity (Maybe v)
forall a. a -> Identity a
Identity (Maybe v -> Identity (Maybe v))
-> (v -> Maybe v) -> v -> Identity (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((v -> Maybe v) -> (v -> Maybe v) -> Bool -> v -> Maybe v
forall a. a -> a -> Bool -> a
bool (Maybe v -> v -> Maybe v
forall a b. a -> b -> a
const Maybe v
forall a. Maybe a
Nothing) v -> Maybe v
forall a. a -> Maybe a
Just (Bool -> v -> Maybe v) -> (v -> Bool) -> v -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< k0 -> k1 -> v -> Bool
p k0
k0 k1
k1))
DeepMap '[k0, k1] v
m
filterWithKey3 ::
(k0 -> k1 -> k2 -> v -> Bool) ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] v
filterWithKey3 :: forall k0 k1 k2 v.
(k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filterWithKey3 k0 -> k1 -> k2 -> v -> Bool
p DeepMap '[k0, k1, k2] v
m =
Identity (DeepMap '[k0, k1, k2] v) -> DeepMap '[k0, k1, k2] v
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2] v) -> DeepMap '[k0, k1, k2] v)
-> Identity (DeepMap '[k0, k1, k2] v) -> DeepMap '[k0, k1, k2] v
forall a b. (a -> b) -> a -> b
$ (k0 -> k1 -> k2 -> v -> Identity (Maybe v))
-> DeepMap '[k0, k1, k2] v -> Identity (DeepMap '[k0, k1, k2] v)
forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseMaybeWithKey3
(\k0
k0 k1
k1 k2
k2 -> Maybe v -> Identity (Maybe v)
forall a. a -> Identity a
Identity (Maybe v -> Identity (Maybe v))
-> (v -> Maybe v) -> v -> Identity (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((v -> Maybe v) -> (v -> Maybe v) -> Bool -> v -> Maybe v
forall a. a -> a -> Bool -> a
bool (Maybe v -> v -> Maybe v
forall a b. a -> b -> a
const Maybe v
forall a. Maybe a
Nothing) v -> Maybe v
forall a. a -> Maybe a
Just (Bool -> v -> Maybe v) -> (v -> Bool) -> v -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< k0 -> k1 -> k2 -> v -> Bool
p k0
k0 k1
k1 k2
k2))
DeepMap '[k0, k1, k2] v
m
filterWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> Bool) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] v
filterWithKey4 :: forall k0 k1 k2 k3 v.
(k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filterWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Bool
p DeepMap '[k0, k1, k2, k3] v
m =
Identity (DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v)
-> Identity (DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
forall a b. (a -> b) -> a -> b
$ (k0 -> k1 -> k2 -> k3 -> v -> Identity (Maybe v))
-> DeepMap '[k0, k1, k2, k3] v
-> Identity (DeepMap '[k0, k1, k2, k3] v)
forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseMaybeWithKey4
(\k0
k0 k1
k1 k2
k2 k3
k3 -> Maybe v -> Identity (Maybe v)
forall a. a -> Identity a
Identity (Maybe v -> Identity (Maybe v))
-> (v -> Maybe v) -> v -> Identity (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((v -> Maybe v) -> (v -> Maybe v) -> Bool -> v -> Maybe v
forall a. a -> a -> Bool -> a
bool (Maybe v -> v -> Maybe v
forall a b. a -> b -> a
const Maybe v
forall a. Maybe a
Nothing) v -> Maybe v
forall a. a -> Maybe a
Just (Bool -> v -> Maybe v) -> (v -> Bool) -> v -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< k0 -> k1 -> k2 -> k3 -> v -> Bool
p k0
k0 k1
k1 k2
k2 k3
k3))
DeepMap '[k0, k1, k2, k3] v
m
filterWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] v
filterWithKey5 :: forall k0 k1 k2 k3 k4 v.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filterWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool
p DeepMap '[k0, k1, k2, k3, k4] v
m =
Identity (DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> Identity (DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
forall a b. (a -> b) -> a -> b
$ (k0 -> k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe v))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> Identity (DeepMap '[k0, k1, k2, k3, k4] v)
forall (f :: * -> *) k0 k1 k2 k3 k4 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> f (DeepMap '[k0, k1, k2, k3, k4] w)
traverseMaybeWithKey5
(\k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 -> Maybe v -> Identity (Maybe v)
forall a. a -> Identity a
Identity (Maybe v -> Identity (Maybe v))
-> (v -> Maybe v) -> v -> Identity (Maybe v)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((v -> Maybe v) -> (v -> Maybe v) -> Bool -> v -> Maybe v
forall a. a -> a -> Bool -> a
bool (Maybe v -> v -> Maybe v
forall a b. a -> b -> a
const Maybe v
forall a. Maybe a
Nothing) v -> Maybe v
forall a. a -> Maybe a
Just (Bool -> v -> Maybe v) -> (v -> Bool) -> v -> Maybe v
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool
p k0
k0 k1
k1 k2
k2 k3
k3 k4
k4))
DeepMap '[k0, k1, k2, k3, k4] v
m
restrictKeys :: (Ord k) => DeepMap (k ': ks) v -> Set k -> DeepMap (k ': ks) v
restrictKeys :: forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys (Nest Map k (DeepMap ks v)
m) Set k
s = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Map k (DeepMap ks v) -> Set k -> Map k (DeepMap ks v)
forall k a. Ord k => Map k a -> Set k -> Map k a
Map.restrictKeys Map k (DeepMap ks v)
Map k (DeepMap ks v)
m Set k
s
restrictKeys2 ::
(Ord k0, Ord k1) =>
DeepMap (k0 ': k1 ': ks) v ->
Set (k0, k1) ->
DeepMap (k0 ': k1 ': ks) v
restrictKeys2 :: forall k0 k1 (ks :: [*]) v.
(Ord k0, Ord k1) =>
DeepMap (k0 : k1 : ks) v
-> Set (k0, k1) -> DeepMap (k0 : k1 : ks) v
restrictKeys2 DeepMap (k0 : k1 : ks) v
m Set (k0, k1)
s =
(DeepMap (k1 : ks) v -> DeepMap (k1 : ks) v)
-> DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : ks) v
dm -> DeepMap (k1 : ks) v -> Set k1 -> DeepMap (k1 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys DeepMap (k1 : ks) v
dm (((k0, k1) -> k1) -> Set (k0, k1) -> Set k1
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (k0, k1) -> k1
forall a b. (a, b) -> b
snd Set (k0, k1)
s))
(DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v)
-> DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : ks) v -> Set k0 -> DeepMap (k0 : k1 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys DeepMap (k0 : k1 : ks) v
m (((k0, k1) -> k0) -> Set (k0, k1) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (k0, k1) -> k0
forall a b. (a, b) -> a
fst Set (k0, k1)
s)
restrictKeys3 ::
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 ': k1 ': k2 ': ks) v ->
Set (k0, k1, k2) ->
DeepMap (k0 ': k1 ': k2 ': ks) v
restrictKeys3 :: forall k0 k1 k2 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 : k1 : k2 : ks) v
-> Set (k0, k1, k2) -> DeepMap (k0 : k1 : k2 : ks) v
restrictKeys3 DeepMap (k0 : k1 : k2 : ks) v
m Set (k0, k1, k2)
s =
(DeepMap (k1 : k2 : ks) v -> DeepMap (k1 : k2 : ks) v)
-> DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : k2 : ks) v
dm -> DeepMap (k1 : k2 : ks) v
-> Set (k1, k2) -> DeepMap (k1 : k2 : ks) v
forall k0 k1 (ks :: [*]) v.
(Ord k0, Ord k1) =>
DeepMap (k0 : k1 : ks) v
-> Set (k0, k1) -> DeepMap (k0 : k1 : ks) v
restrictKeys2 DeepMap (k1 : k2 : ks) v
dm (((k0, k1, k2) -> (k1, k2)) -> Set (k0, k1, k2) -> Set (k1, k2)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c) -> (k1
b, k2
c)) Set (k0, k1, k2)
s))
(DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v)
-> DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys DeepMap (k0 : k1 : k2 : ks) v
m (((k0, k1, k2) -> k0) -> Set (k0, k1, k2) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_) -> k0
a) Set (k0, k1, k2)
s)
restrictKeys4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v ->
Set (k0, k1, k2, k3) ->
DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v
restrictKeys4 :: forall k0 k1 k2 k3 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set (k0, k1, k2, k3) -> DeepMap (k0 : k1 : k2 : k3 : ks) v
restrictKeys4 DeepMap (k0 : k1 : k2 : k3 : ks) v
m Set (k0, k1, k2, k3)
s =
(DeepMap (k1 : k2 : k3 : ks) v -> DeepMap (k1 : k2 : k3 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : k2 : k3 : ks) v
dm -> DeepMap (k1 : k2 : k3 : ks) v
-> Set (k1, k2, k3) -> DeepMap (k1 : k2 : k3 : ks) v
forall k0 k1 k2 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 : k1 : k2 : ks) v
-> Set (k0, k1, k2) -> DeepMap (k0 : k1 : k2 : ks) v
restrictKeys3 DeepMap (k1 : k2 : k3 : ks) v
dm (((k0, k1, k2, k3) -> (k1, k2, k3))
-> Set (k0, k1, k2, k3) -> Set (k1, k2, k3)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c, k3
d) -> (k1
b, k2
c, k3
d)) Set (k0, k1, k2, k3)
s))
(DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys DeepMap (k0 : k1 : k2 : k3 : ks) v
m (((k0, k1, k2, k3) -> k0) -> Set (k0, k1, k2, k3) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_, k3
_) -> k0
a) Set (k0, k1, k2, k3)
s)
restrictKeys5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v ->
Set (k0, k1, k2, k3, k4) ->
DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v
restrictKeys5 :: forall k0 k1 k2 k3 k4 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> Set (k0, k1, k2, k3, k4)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
restrictKeys5 DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
m Set (k0, k1, k2, k3, k4)
s =
(DeepMap (k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow
(\DeepMap (k1 : k2 : k3 : k4 : ks) v
dm -> DeepMap (k1 : k2 : k3 : k4 : ks) v
-> Set (k1, k2, k3, k4) -> DeepMap (k1 : k2 : k3 : k4 : ks) v
forall k0 k1 k2 k3 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set (k0, k1, k2, k3) -> DeepMap (k0 : k1 : k2 : k3 : ks) v
restrictKeys4 DeepMap (k1 : k2 : k3 : k4 : ks) v
dm (((k0, k1, k2, k3, k4) -> (k1, k2, k3, k4))
-> Set (k0, k1, k2, k3, k4) -> Set (k1, k2, k3, k4)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c, k3
d, k4
e) -> (k1
b, k2
c, k3
d, k4
e)) Set (k0, k1, k2, k3, k4)
s))
(DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
restrictKeys DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
m (((k0, k1, k2, k3, k4) -> k0) -> Set (k0, k1, k2, k3, k4) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_, k3
_, k4
_) -> k0
a) Set (k0, k1, k2, k3, k4)
s)
withoutKeys :: (Ord k) => DeepMap (k ': ks) v -> Set k -> DeepMap (k ': ks) v
withoutKeys :: forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys (Nest Map k (DeepMap ks v)
m) Set k
s = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Map k (DeepMap ks v) -> Set k -> Map k (DeepMap ks v)
forall k a. Ord k => Map k a -> Set k -> Map k a
Map.withoutKeys Map k (DeepMap ks v)
Map k (DeepMap ks v)
m Set k
s
withoutKeys2 ::
(Ord k0, Ord k1) =>
DeepMap (k0 ': k1 ': ks) v ->
Set (k0, k1) ->
DeepMap (k0 ': k1 ': ks) v
withoutKeys2 :: forall k0 k1 (ks :: [*]) v.
(Ord k0, Ord k1) =>
DeepMap (k0 : k1 : ks) v
-> Set (k0, k1) -> DeepMap (k0 : k1 : ks) v
withoutKeys2 DeepMap (k0 : k1 : ks) v
m Set (k0, k1)
s =
(DeepMap (k1 : ks) v -> DeepMap (k1 : ks) v)
-> DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : ks) v
dm -> DeepMap (k1 : ks) v -> Set k1 -> DeepMap (k1 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys DeepMap (k1 : ks) v
dm (((k0, k1) -> k1) -> Set (k0, k1) -> Set k1
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (k0, k1) -> k1
forall a b. (a, b) -> b
snd Set (k0, k1)
s))
(DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v)
-> DeepMap (k0 : k1 : ks) v -> DeepMap (k0 : k1 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : ks) v -> Set k0 -> DeepMap (k0 : k1 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys DeepMap (k0 : k1 : ks) v
m (((k0, k1) -> k0) -> Set (k0, k1) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (k0, k1) -> k0
forall a b. (a, b) -> a
fst Set (k0, k1)
s)
withoutKeys3 ::
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 ': k1 ': k2 ': ks) v ->
Set (k0, k1, k2) ->
DeepMap (k0 ': k1 ': k2 ': ks) v
withoutKeys3 :: forall k0 k1 k2 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 : k1 : k2 : ks) v
-> Set (k0, k1, k2) -> DeepMap (k0 : k1 : k2 : ks) v
withoutKeys3 DeepMap (k0 : k1 : k2 : ks) v
m Set (k0, k1, k2)
s =
(DeepMap (k1 : k2 : ks) v -> DeepMap (k1 : k2 : ks) v)
-> DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : k2 : ks) v
dm -> DeepMap (k1 : k2 : ks) v
-> Set (k1, k2) -> DeepMap (k1 : k2 : ks) v
forall k0 k1 (ks :: [*]) v.
(Ord k0, Ord k1) =>
DeepMap (k0 : k1 : ks) v
-> Set (k0, k1) -> DeepMap (k0 : k1 : ks) v
withoutKeys2 DeepMap (k1 : k2 : ks) v
dm (((k0, k1, k2) -> (k1, k2)) -> Set (k0, k1, k2) -> Set (k1, k2)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c) -> (k1
b, k2
c)) Set (k0, k1, k2)
s))
(DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v)
-> DeepMap (k0 : k1 : k2 : ks) v -> DeepMap (k0 : k1 : k2 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys DeepMap (k0 : k1 : k2 : ks) v
m (((k0, k1, k2) -> k0) -> Set (k0, k1, k2) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_) -> k0
a) Set (k0, k1, k2)
s)
withoutKeys4 ::
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v ->
Set (k0, k1, k2, k3) ->
DeepMap (k0 ': k1 ': k2 ': k3 ': ks) v
withoutKeys4 :: forall k0 k1 k2 k3 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set (k0, k1, k2, k3) -> DeepMap (k0 : k1 : k2 : k3 : ks) v
withoutKeys4 DeepMap (k0 : k1 : k2 : k3 : ks) v
m Set (k0, k1, k2, k3)
s =
(DeepMap (k1 : k2 : k3 : ks) v -> DeepMap (k1 : k2 : k3 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow (\DeepMap (k1 : k2 : k3 : ks) v
dm -> DeepMap (k1 : k2 : k3 : ks) v
-> Set (k1, k2, k3) -> DeepMap (k1 : k2 : k3 : ks) v
forall k0 k1 k2 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2) =>
DeepMap (k0 : k1 : k2 : ks) v
-> Set (k0, k1, k2) -> DeepMap (k0 : k1 : k2 : ks) v
withoutKeys3 DeepMap (k1 : k2 : k3 : ks) v
dm (((k0, k1, k2, k3) -> (k1, k2, k3))
-> Set (k0, k1, k2, k3) -> Set (k1, k2, k3)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c, k3
d) -> (k1
b, k2
c, k3
d)) Set (k0, k1, k2, k3)
s))
(DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : k3 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys DeepMap (k0 : k1 : k2 : k3 : ks) v
m (((k0, k1, k2, k3) -> k0) -> Set (k0, k1, k2, k3) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_, k3
_) -> k0
a) Set (k0, k1, k2, k3)
s)
withoutKeys5 ::
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v ->
Set (k0, k1, k2, k3, k4) ->
DeepMap (k0 ': k1 ': k2 ': k3 ': k4 ': ks) v
withoutKeys5 :: forall k0 k1 k2 k3 k4 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3, Ord k4) =>
DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> Set (k0, k1, k2, k3, k4)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
withoutKeys5 DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
m Set (k0, k1, k2, k3, k4)
s =
(DeepMap (k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallow
(\DeepMap (k1 : k2 : k3 : k4 : ks) v
dm -> DeepMap (k1 : k2 : k3 : k4 : ks) v
-> Set (k1, k2, k3, k4) -> DeepMap (k1 : k2 : k3 : k4 : ks) v
forall k0 k1 k2 k3 (ks :: [*]) v.
(Ord k0, Ord k1, Ord k2, Ord k3) =>
DeepMap (k0 : k1 : k2 : k3 : ks) v
-> Set (k0, k1, k2, k3) -> DeepMap (k0 : k1 : k2 : k3 : ks) v
withoutKeys4 DeepMap (k1 : k2 : k3 : k4 : ks) v
dm (((k0, k1, k2, k3, k4) -> (k1, k2, k3, k4))
-> Set (k0, k1, k2, k3, k4) -> Set (k1, k2, k3, k4)
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
_, k1
b, k2
c, k3
d, k4
e) -> (k1
b, k2
c, k3
d, k4
e)) Set (k0, k1, k2, k3, k4)
s))
(DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v)
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall a b. (a -> b) -> a -> b
$ DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
-> Set k0 -> DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
forall k (ks :: [*]) v.
Ord k =>
DeepMap (k : ks) v -> Set k -> DeepMap (k : ks) v
withoutKeys DeepMap (k0 : k1 : k2 : k3 : k4 : ks) v
m (((k0, k1, k2, k3, k4) -> k0) -> Set (k0, k1, k2, k3, k4) -> Set k0
forall b a. Ord b => (a -> b) -> Set a -> Set b
Set.map (\(k0
a, k1
_, k2
_, k3
_, k4
_) -> k0
a) Set (k0, k1, k2, k3, k4)
s)
partition ::
(DeepMap ks v -> Bool) ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ks) v, DeepMap (k ': ks) v)
partition :: forall (ks :: [*]) v k.
(DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
partition DeepMap ks v -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Bool)
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
forall a k. (a -> Bool) -> Map k a -> (Map k a, Map k a)
Map.partition DeepMap ks v -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
partition1 :: (v -> Bool) -> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
partition1 :: forall v k.
(v -> Bool) -> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
partition1 v -> Bool
p = (DeepMap '[] v -> Bool)
-> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
forall (ks :: [*]) v k.
(DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
partition (v -> Bool
p (v -> Bool) -> (DeepMap '[] v -> v) -> DeepMap '[] v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare)
partition2 ::
(v -> Bool) -> DeepMap '[k0, k1] v -> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
partition2 :: forall v k0 k1.
(v -> Bool)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
partition2 v -> Bool
p = (v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall v k0 k1.
(v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filter2 v -> Bool
p (DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v)
-> (DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall v k0 k1.
(v -> Bool) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filter2 (Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Bool
p)
partition3 ::
(v -> Bool) ->
DeepMap '[k0, k1, k2] v ->
(DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
partition3 :: forall v k0 k1 k2.
(v -> Bool)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
partition3 v -> Bool
p = (v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall v k0 k1 k2.
(v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filter3 v -> Bool
p (DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> (DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall v k0 k1 k2.
(v -> Bool) -> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filter3 (Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Bool
p)
partition4 ::
(v -> Bool) ->
DeepMap '[k0, k1, k2, k3] v ->
(DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
partition4 :: forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
partition4 v -> Bool
p = (v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filter4 v -> Bool
p (DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> (DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filter4 (Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Bool
p)
partition5 ::
(v -> Bool) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(DeepMap '[k0, k1, k2, k3, k4] v, DeepMap '[k0, k1, k2, k3, k4] v)
partition5 :: forall v k0 k1 k2 k3 k4.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] v,
DeepMap '[k0, k1, k2, k3, k4] v)
partition5 v -> Bool
p = (v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall v k0 k1 k2 k3 k4.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filter5 v -> Bool
p (DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> (DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] v,
DeepMap '[k0, k1, k2, k3, k4] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall v k0 k1 k2 k3 k4.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filter5 (Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Bool
p)
partitionWithKey ::
(k -> DeepMap ks v -> Bool) ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ks) v, DeepMap (k ': ks) v)
partitionWithKey :: forall k (ks :: [*]) v.
(k -> DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
partitionWithKey k -> DeepMap ks v -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Bool)
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
forall k a. (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)
Map.partitionWithKey k -> DeepMap ks v -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
partitionWithKey1 ::
(k -> v -> Bool) -> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
partitionWithKey1 :: forall k v.
(k -> v -> Bool)
-> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
partitionWithKey1 k -> v -> Bool
p = (k -> DeepMap '[] v -> Bool)
-> DeepMap '[k] v -> (DeepMap '[k] v, DeepMap '[k] v)
forall k (ks :: [*]) v.
(k -> DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
partitionWithKey (\k
k -> k -> v -> Bool
p k
k (v -> Bool) -> (DeepMap '[] v -> v) -> DeepMap '[] v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare)
partitionWithKey2 ::
(k0 -> k1 -> v -> Bool) ->
DeepMap '[k0, k1] v ->
(DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
partitionWithKey2 :: forall k0 k1 v.
(k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
partitionWithKey2 k0 -> k1 -> v -> Bool
p = (k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filterWithKey2 k0 -> k1 -> v -> Bool
p (DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v)
-> (DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
forall k0 k1 v.
(k0 -> k1 -> v -> Bool)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] v
filterWithKey2 (\k0
k0 k1
k1 -> Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> Bool
p k0
k0 k1
k1)
partitionWithKey3 ::
(k0 -> k1 -> k2 -> v -> Bool) ->
DeepMap '[k0, k1, k2] v ->
(DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
partitionWithKey3 :: forall k0 k1 k2 v.
(k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
partitionWithKey3 k0 -> k1 -> k2 -> v -> Bool
p = (k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filterWithKey3 k0 -> k1 -> k2 -> v -> Bool
p (DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> (DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
forall k0 k1 k2 v.
(k0 -> k1 -> k2 -> v -> Bool)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] v
filterWithKey3 (\k0
k0 k1
k1 k2
k2 -> Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> Bool
p k0
k0 k1
k1 k2
k2)
partitionWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> Bool) ->
DeepMap '[k0, k1, k2, k3] v ->
(DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
partitionWithKey4 :: forall k0 k1 k2 k3 v.
(k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
partitionWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Bool
p = (k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filterWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Bool
p (DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> (DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
forall k0 k1 k2 k3 v.
(k0 -> k1 -> k2 -> k3 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] v
filterWithKey4 (\k0
k0 k1
k1 k2
k2 k3
k3 -> Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> Bool
p k0
k0 k1
k1 k2
k2 k3
k3)
partitionWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(DeepMap '[k0, k1, k2, k3, k4] v, DeepMap '[k0, k1, k2, k3, k4] v)
partitionWithKey5 :: forall k0 k1 k2 k3 k4 v.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] v,
DeepMap '[k0, k1, k2, k3, k4] v)
partitionWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool
p =
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filterWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool
p (DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> (DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] v,
DeepMap '[k0, k1, k2, k3, k4] v)
forall b c c'. (b -> c) -> (b -> c') -> b -> (c, c')
forall (a :: * -> * -> *) b c c'.
Arrow a =>
a b c -> a b c' -> a b (c, c')
&&& (k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
forall k0 k1 k2 k3 k4 v.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] v
filterWithKey5 (\k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 -> Bool -> Bool
not (Bool -> Bool) -> (v -> Bool) -> v -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> Bool
p k0
k0 k1
k1 k2
k2 k3
k3 k4
k4)
takeWhileAntitone :: (k -> Bool) -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
takeWhileAntitone :: forall k (ks :: [*]) v.
(k -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
takeWhileAntitone k -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> Bool) -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> Bool) -> Map k a -> Map k a
Map.takeWhileAntitone k -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
dropWhileAntitone :: (k -> Bool) -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
dropWhileAntitone :: forall k (ks :: [*]) v.
(k -> Bool) -> DeepMap (k : ks) v -> DeepMap (k : ks) v
dropWhileAntitone k -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> Bool) -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> Bool) -> Map k a -> Map k a
Map.dropWhileAntitone k -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
spanAntitone ::
(k -> Bool) -> DeepMap (k ': ks) v -> (DeepMap (k ': ks) v, DeepMap (k ': ks) v)
spanAntitone :: forall k (ks :: [*]) v.
(k -> Bool)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
spanAntitone k -> Bool
p (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ (k -> Bool)
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
forall k a. (k -> Bool) -> Map k a -> (Map k a, Map k a)
Map.spanAntitone k -> Bool
p Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapMaybe :: (v -> Maybe w) -> DeepMap (k ': ks) v -> DeepMap (k ': ks) w
mapMaybe :: forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe v -> Maybe w
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks w) -> DeepMap (k : ks) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks w) -> DeepMap (k : ks) w)
-> Map k (DeepMap ks w) -> DeepMap (k : ks) w
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Maybe (DeepMap ks w))
-> Map k (DeepMap ks v) -> Map k (DeepMap ks w)
forall a b k. (a -> Maybe b) -> Map k a -> Map k b
Map.mapMaybe ((v -> Maybe w) -> DeepMap ks v -> Maybe (DeepMap ks w)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> DeepMap ks a -> f (DeepMap ks b)
traverse v -> Maybe w
f) Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapShallowMaybe ::
(DeepMap ks v -> Maybe (DeepMap ls w)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w
mapShallowMaybe :: forall (ks :: [*]) v (ls :: [*]) w k.
(DeepMap ks v -> Maybe (DeepMap ls w))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowMaybe DeepMap ks v -> Maybe (DeepMap ls w)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Maybe (DeepMap ls w))
-> Map k (DeepMap ks v) -> Map k (DeepMap ls w)
forall a b k. (a -> Maybe b) -> Map k a -> Map k b
Map.mapMaybe DeepMap ks v -> Maybe (DeepMap ls w)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapShallowMaybeWithKey ::
(k -> DeepMap ks v -> Maybe (DeepMap ls w)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ls) w
mapShallowMaybeWithKey :: forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> Maybe (DeepMap ls w))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowMaybeWithKey k -> DeepMap ks v -> Maybe (DeepMap ls w)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ls w))
-> Map k (DeepMap ks v) -> Map k (DeepMap ls w)
forall k a b. (k -> a -> Maybe b) -> Map k a -> Map k b
Map.mapMaybeWithKey k -> DeepMap ks v -> Maybe (DeepMap ls w)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapMaybeWithKey1 :: (k -> v -> Maybe w) -> DeepMap '[k] v -> DeepMap '[k] w
mapMaybeWithKey1 :: forall k v w.
(k -> v -> Maybe w) -> DeepMap '[k] v -> DeepMap '[k] w
mapMaybeWithKey1 k -> v -> Maybe w
f = (k -> DeepMap '[] v -> Maybe (DeepMap '[] w))
-> DeepMap '[k] v -> DeepMap '[k] w
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> Maybe (DeepMap ls w))
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowMaybeWithKey (\k
k -> (w -> DeepMap '[] w) -> Maybe w -> Maybe (DeepMap '[] w)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (Maybe w -> Maybe (DeepMap '[] w))
-> (DeepMap '[] v -> Maybe w)
-> DeepMap '[] v
-> Maybe (DeepMap '[] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> Maybe w
f k
k (v -> Maybe w) -> (DeepMap '[] v -> v) -> DeepMap '[] v -> Maybe w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare)
mapMaybeWithKey2 ::
(k0 -> k1 -> v -> Maybe w) -> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
mapMaybeWithKey2 :: forall k0 k1 v w.
(k0 -> k1 -> v -> Maybe w)
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] w
mapMaybeWithKey2 k0 -> k1 -> v -> Maybe w
f DeepMap '[k0, k1] v
m =
let g :: k0 -> k1 -> v -> Identity (Maybe w)
g k0
k0 k1
k1 v
v = Maybe w -> Identity (Maybe w)
forall a. a -> Identity a
Identity (Maybe w -> Identity (Maybe w)) -> Maybe w -> Identity (Maybe w)
forall a b. (a -> b) -> a -> b
$ k0 -> k1 -> v -> Maybe w
f k0
k0 k1
k1 v
v
in Identity (DeepMap '[k0, k1] w) -> DeepMap '[k0, k1] w
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1] w) -> DeepMap '[k0, k1] w)
-> Identity (DeepMap '[k0, k1] w) -> DeepMap '[k0, k1] w
forall a b. (a -> b) -> a -> b
$ (k0 -> DeepMap '[k1] v -> Identity (Maybe (DeepMap '[k1] w)))
-> DeepMap '[k0, k1] v -> Identity (DeepMap '[k0, k1] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((Identity (DeepMap '[k1] w) -> Identity (Maybe (DeepMap '[k1] w)))
-> (DeepMap '[k1] v -> Identity (DeepMap '[k1] w))
-> DeepMap '[k1] v
-> Identity (Maybe (DeepMap '[k1] w))
forall a b.
(a -> b) -> (DeepMap '[k1] v -> a) -> DeepMap '[k1] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1] w -> Maybe (DeepMap '[k1] w))
-> Identity (DeepMap '[k1] w) -> Identity (Maybe (DeepMap '[k1] w))
forall a b. (a -> b) -> Identity a -> Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1] w -> Maybe (DeepMap '[k1] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1] v -> Identity (DeepMap '[k1] w))
-> DeepMap '[k1] v -> Identity (Maybe (DeepMap '[k1] w)))
-> (k0 -> DeepMap '[k1] v -> Identity (DeepMap '[k1] w))
-> k0
-> DeepMap '[k1] v
-> Identity (Maybe (DeepMap '[k1] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> v -> Identity (Maybe w))
-> DeepMap '[k1] v -> Identity (DeepMap '[k1] w)
forall (f :: * -> *) k v w.
Applicative f =>
(k -> v -> f (Maybe w)) -> DeepMap '[k] v -> f (DeepMap '[k] w)
traverseMaybeWithKey1 ((k1 -> v -> Identity (Maybe w))
-> DeepMap '[k1] v -> Identity (DeepMap '[k1] w))
-> (k0 -> k1 -> v -> Identity (Maybe w))
-> k0
-> DeepMap '[k1] v
-> Identity (DeepMap '[k1] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> Identity (Maybe w)
g) DeepMap '[k0, k1] v
m
mapMaybeWithKey3 ::
(k0 -> k1 -> k2 -> v -> Maybe w) ->
DeepMap '[k0, k1, k2] v ->
DeepMap '[k0, k1, k2] w
mapMaybeWithKey3 :: forall k0 k1 k2 v w.
(k0 -> k1 -> k2 -> v -> Maybe w)
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] w
mapMaybeWithKey3 k0 -> k1 -> k2 -> v -> Maybe w
f DeepMap '[k0, k1, k2] v
m =
let g :: k0 -> k1 -> k2 -> v -> Identity (Maybe w)
g k0
k0 k1
k1 k2
k2 v
v = Maybe w -> Identity (Maybe w)
forall a. a -> Identity a
Identity (Maybe w -> Identity (Maybe w)) -> Maybe w -> Identity (Maybe w)
forall a b. (a -> b) -> a -> b
$ k0 -> k1 -> k2 -> v -> Maybe w
f k0
k0 k1
k1 k2
k2 v
v
in Identity (DeepMap '[k0, k1, k2] w) -> DeepMap '[k0, k1, k2] w
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2] w) -> DeepMap '[k0, k1, k2] w)
-> Identity (DeepMap '[k0, k1, k2] w) -> DeepMap '[k0, k1, k2] w
forall a b. (a -> b) -> a -> b
$ (k0
-> DeepMap '[k1, k2] v -> Identity (Maybe (DeepMap '[k1, k2] w)))
-> DeepMap '[k0, k1, k2] v -> Identity (DeepMap '[k0, k1, k2] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((Identity (DeepMap '[k1, k2] w)
-> Identity (Maybe (DeepMap '[k1, k2] w)))
-> (DeepMap '[k1, k2] v -> Identity (DeepMap '[k1, k2] w))
-> DeepMap '[k1, k2] v
-> Identity (Maybe (DeepMap '[k1, k2] w))
forall a b.
(a -> b) -> (DeepMap '[k1, k2] v -> a) -> DeepMap '[k1, k2] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2] w -> Maybe (DeepMap '[k1, k2] w))
-> Identity (DeepMap '[k1, k2] w)
-> Identity (Maybe (DeepMap '[k1, k2] w))
forall a b. (a -> b) -> Identity a -> Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2] w -> Maybe (DeepMap '[k1, k2] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2] v -> Identity (DeepMap '[k1, k2] w))
-> DeepMap '[k1, k2] v -> Identity (Maybe (DeepMap '[k1, k2] w)))
-> (k0 -> DeepMap '[k1, k2] v -> Identity (DeepMap '[k1, k2] w))
-> k0
-> DeepMap '[k1, k2] v
-> Identity (Maybe (DeepMap '[k1, k2] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2] v -> Identity (DeepMap '[k1, k2] w)
forall (f :: * -> *) k0 k1 v w.
Applicative f =>
(k0 -> k1 -> v -> f (Maybe w))
-> DeepMap '[k0, k1] v -> f (DeepMap '[k0, k1] w)
traverseMaybeWithKey2 ((k1 -> k2 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2] v -> Identity (DeepMap '[k1, k2] w))
-> (k0 -> k1 -> k2 -> v -> Identity (Maybe w))
-> k0
-> DeepMap '[k1, k2] v
-> Identity (DeepMap '[k1, k2] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> Identity (Maybe w)
g) DeepMap '[k0, k1, k2] v
m
mapMaybeWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> Maybe w) ->
DeepMap '[k0, k1, k2, k3] v ->
DeepMap '[k0, k1, k2, k3] w
mapMaybeWithKey4 :: forall k0 k1 k2 k3 v w.
(k0 -> k1 -> k2 -> k3 -> v -> Maybe w)
-> DeepMap '[k0, k1, k2, k3] v -> DeepMap '[k0, k1, k2, k3] w
mapMaybeWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Maybe w
f DeepMap '[k0, k1, k2, k3] v
m =
let g :: k0 -> k1 -> k2 -> k3 -> v -> Identity (Maybe w)
g k0
k0 k1
k1 k2
k2 k3
k3 v
v = Maybe w -> Identity (Maybe w)
forall a. a -> Identity a
Identity (Maybe w -> Identity (Maybe w)) -> Maybe w -> Identity (Maybe w)
forall a b. (a -> b) -> a -> b
$ k0 -> k1 -> k2 -> k3 -> v -> Maybe w
f k0
k0 k1
k1 k2
k2 k3
k3 v
v
in Identity (DeepMap '[k0, k1, k2, k3] w)
-> DeepMap '[k0, k1, k2, k3] w
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2, k3] w)
-> DeepMap '[k0, k1, k2, k3] w)
-> Identity (DeepMap '[k0, k1, k2, k3] w)
-> DeepMap '[k0, k1, k2, k3] w
forall a b. (a -> b) -> a -> b
$ (k0
-> DeepMap '[k1, k2, k3] v
-> Identity (Maybe (DeepMap '[k1, k2, k3] w)))
-> DeepMap '[k0, k1, k2, k3] v
-> Identity (DeepMap '[k0, k1, k2, k3] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((Identity (DeepMap '[k1, k2, k3] w)
-> Identity (Maybe (DeepMap '[k1, k2, k3] w)))
-> (DeepMap '[k1, k2, k3] v -> Identity (DeepMap '[k1, k2, k3] w))
-> DeepMap '[k1, k2, k3] v
-> Identity (Maybe (DeepMap '[k1, k2, k3] w))
forall a b.
(a -> b)
-> (DeepMap '[k1, k2, k3] v -> a) -> DeepMap '[k1, k2, k3] v -> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2, k3] w -> Maybe (DeepMap '[k1, k2, k3] w))
-> Identity (DeepMap '[k1, k2, k3] w)
-> Identity (Maybe (DeepMap '[k1, k2, k3] w))
forall a b. (a -> b) -> Identity a -> Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2, k3] w -> Maybe (DeepMap '[k1, k2, k3] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2, k3] v -> Identity (DeepMap '[k1, k2, k3] w))
-> DeepMap '[k1, k2, k3] v
-> Identity (Maybe (DeepMap '[k1, k2, k3] w)))
-> (k0
-> DeepMap '[k1, k2, k3] v -> Identity (DeepMap '[k1, k2, k3] w))
-> k0
-> DeepMap '[k1, k2, k3] v
-> Identity (Maybe (DeepMap '[k1, k2, k3] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> k3 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2, k3] v -> Identity (DeepMap '[k1, k2, k3] w)
forall (f :: * -> *) k0 k1 k2 v w.
Applicative f =>
(k0 -> k1 -> k2 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2] v -> f (DeepMap '[k0, k1, k2] w)
traverseMaybeWithKey3 ((k1 -> k2 -> k3 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2, k3] v -> Identity (DeepMap '[k1, k2, k3] w))
-> (k0 -> k1 -> k2 -> k3 -> v -> Identity (Maybe w))
-> k0
-> DeepMap '[k1, k2, k3] v
-> Identity (DeepMap '[k1, k2, k3] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> Identity (Maybe w)
g) DeepMap '[k0, k1, k2, k3] v
m
mapMaybeWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe w) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
DeepMap '[k0, k1, k2, k3, k4] w
mapMaybeWithKey5 :: forall k0 k1 k2 k3 k4 v w.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe w)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] w
mapMaybeWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe w
f DeepMap '[k0, k1, k2, k3, k4] v
m =
let g :: k0 -> k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe w)
g k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v = Maybe w -> Identity (Maybe w)
forall a. a -> Identity a
Identity (Maybe w -> Identity (Maybe w)) -> Maybe w -> Identity (Maybe w)
forall a b. (a -> b) -> a -> b
$ k0 -> k1 -> k2 -> k3 -> k4 -> v -> Maybe w
f k0
k0 k1
k1 k2
k2 k3
k3 k4
k4 v
v
in Identity (DeepMap '[k0, k1, k2, k3, k4] w)
-> DeepMap '[k0, k1, k2, k3, k4] w
forall a. Identity a -> a
runIdentity
(Identity (DeepMap '[k0, k1, k2, k3, k4] w)
-> DeepMap '[k0, k1, k2, k3, k4] w)
-> Identity (DeepMap '[k0, k1, k2, k3, k4] w)
-> DeepMap '[k0, k1, k2, k3, k4] w
forall a b. (a -> b) -> a -> b
$ (k0
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> Identity (DeepMap '[k0, k1, k2, k3, k4] w)
forall (f :: * -> *) k (ks :: [*]) v (ls :: [*]) w.
Applicative f =>
(k -> DeepMap ks v -> f (Maybe (DeepMap ls w)))
-> DeepMap (k : ks) v -> f (DeepMap (k : ls) w)
traverseMaybeWithKey ((Identity (DeepMap '[k1, k2, k3, k4] w)
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> (DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w))
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall a b.
(a -> b)
-> (DeepMap '[k1, k2, k3, k4] v -> a)
-> DeepMap '[k1, k2, k3, k4] v
-> b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((DeepMap '[k1, k2, k3, k4] w
-> Maybe (DeepMap '[k1, k2, k3, k4] w))
-> Identity (DeepMap '[k1, k2, k3, k4] w)
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall a b. (a -> b) -> Identity a -> Identity b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap DeepMap '[k1, k2, k3, k4] w -> Maybe (DeepMap '[k1, k2, k3, k4] w)
forall a. a -> Maybe a
Just) ((DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w))
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w)))
-> (k0
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w))
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (Maybe (DeepMap '[k1, k2, k3, k4] w))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w)
forall (f :: * -> *) k0 k1 k2 k3 v w.
Applicative f =>
(k0 -> k1 -> k2 -> k3 -> v -> f (Maybe w))
-> DeepMap '[k0, k1, k2, k3] v -> f (DeepMap '[k0, k1, k2, k3] w)
traverseMaybeWithKey4 ((k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe w))
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w))
-> (k0 -> k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe w))
-> k0
-> DeepMap '[k1, k2, k3, k4] v
-> Identity (DeepMap '[k1, k2, k3, k4] w)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> Identity (Maybe w)
g) DeepMap '[k0, k1, k2, k3, k4] v
m
mapEither ::
(v -> Either w x) ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ks) w, DeepMap (k ': ks) x)
mapEither :: forall v w x k (ks :: [*]).
(v -> Either w x)
-> DeepMap (k : ks) v -> (DeepMap (k : ks) w, DeepMap (k : ks) x)
mapEither v -> Either w x
f DeepMap (k : ks) v
m =
( (v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe ((w -> Maybe w
forall a. a -> Maybe a
Just (w -> Maybe w) -> (x -> Maybe w) -> Either w x -> Maybe w
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| Maybe w -> x -> Maybe w
forall a b. a -> b -> a
const Maybe w
forall a. Maybe a
Nothing) (Either w x -> Maybe w) -> (v -> Either w x) -> v -> Maybe w
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Either w x
f) DeepMap (k : ks) v
m
, (v -> Maybe x) -> DeepMap (k : ks) v -> DeepMap (k : ks) x
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe ((Maybe x -> w -> Maybe x
forall a b. a -> b -> a
const Maybe x
forall a. Maybe a
Nothing (w -> Maybe x) -> (x -> Maybe x) -> Either w x -> Maybe x
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| x -> Maybe x
forall a. a -> Maybe a
Just) (Either w x -> Maybe x) -> (v -> Either w x) -> v -> Maybe x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. v -> Either w x
f) DeepMap (k : ks) v
m
)
mapShallowEither ::
(DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)) ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ls) w, DeepMap (k ': ms) x)
mapShallowEither :: forall (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x k.
(DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x))
-> DeepMap (k : ks) v -> (DeepMap (k : ls) w, DeepMap (k : ms) x)
mapShallowEither DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (Map k (DeepMap ms x) -> DeepMap (k : ms) x)
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ms x) -> DeepMap (k : ms) x
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x))
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x)
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x))
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
forall a b c k. (a -> Either b c) -> Map k a -> (Map k b, Map k c)
Map.mapEither DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapShallowEitherWithKey ::
(k -> DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)) ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ls) w, DeepMap (k ': ms) x)
mapShallowEitherWithKey :: forall k (ks :: [*]) v (ls :: [*]) w (ms :: [*]) x.
(k -> DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x))
-> DeepMap (k : ks) v -> (DeepMap (k : ls) w, DeepMap (k : ms) x)
mapShallowEitherWithKey k -> DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ls w) -> DeepMap (k : ls) w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ls w) -> DeepMap (k : ls) w)
-> (Map k (DeepMap ms x) -> DeepMap (k : ms) x)
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ms x) -> DeepMap (k : ms) x
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x))
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
-> (DeepMap (k : ls) w, DeepMap (k : ms) x)
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x))
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ls w), Map k (DeepMap ms x))
forall k a b c.
(k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)
Map.mapEitherWithKey k -> DeepMap ks v -> Either (DeepMap ls w) (DeepMap ms x)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
mapEitherWithKey1 ::
(k -> v -> Either w x) -> DeepMap '[k] v -> (DeepMap '[k] w, DeepMap '[k] x)
mapEitherWithKey1 :: forall k v w x.
(k -> v -> Either w x)
-> DeepMap '[k] v -> (DeepMap '[k] w, DeepMap '[k] x)
mapEitherWithKey1 k -> v -> Either w x
f (Nest Map k (DeepMap ks v)
m) =
Map k (DeepMap '[] w) -> DeepMap '[k] w
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap '[] w) -> DeepMap '[k] w)
-> (Map k (DeepMap '[] x) -> DeepMap '[k] x)
-> (Map k (DeepMap '[] w), Map k (DeepMap '[] x))
-> (DeepMap '[k] w, DeepMap '[k] x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap '[] x) -> DeepMap '[k] x
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap '[] w), Map k (DeepMap '[] x))
-> (DeepMap '[k] w, DeepMap '[k] x))
-> (Map k (DeepMap '[] w), Map k (DeepMap '[] x))
-> (DeepMap '[k] w, DeepMap '[k] x)
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap '[] v -> Either (DeepMap '[] w) (DeepMap '[] x))
-> Map k (DeepMap '[] v)
-> (Map k (DeepMap '[] w), Map k (DeepMap '[] x))
forall k a b c.
(k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)
Map.mapEitherWithKey (\k
k -> (w -> DeepMap '[] w
forall v. v -> DeepMap '[] v
Bare (w -> DeepMap '[] w)
-> (x -> DeepMap '[] x)
-> Either w x
-> Either (DeepMap '[] w) (DeepMap '[] x)
forall b c b' c'.
(b -> c) -> (b' -> c') -> Either b b' -> Either c c'
forall (a :: * -> * -> *) b c b' c'.
ArrowChoice a =>
a b c -> a b' c' -> a (Either b b') (Either c c')
+++ x -> DeepMap '[] x
forall v. v -> DeepMap '[] v
Bare) (Either w x -> Either (DeepMap '[] w) (DeepMap '[] x))
-> (DeepMap '[] v -> Either w x)
-> DeepMap '[] v
-> Either (DeepMap '[] w) (DeepMap '[] x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k -> v -> Either w x
f k
k (v -> Either w x)
-> (DeepMap '[] v -> v) -> DeepMap '[] v -> Either w x
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DeepMap '[] v -> v
forall v. DeepMap '[] v -> v
getBare) Map k (DeepMap '[] v)
Map k (DeepMap ks v)
m
mapEitherWithKey2 ::
(k0 -> k1 -> v -> Either w x) ->
DeepMap '[k0, k1] v ->
(DeepMap '[k0, k1] w, DeepMap '[k0, k1] x)
mapEitherWithKey2 :: forall k0 k1 v w x.
(k0 -> k1 -> v -> Either w x)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x)
mapEitherWithKey2 k0 -> k1 -> v -> Either w x
f DeepMap '[k0, k1] v
m =
((Either w x -> Maybe w)
-> DeepMap '[k0, k1] (Either w x) -> DeepMap '[k0, k1] w
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (w -> Maybe w
forall a. a -> Maybe a
Just (w -> Maybe w) -> (x -> Maybe w) -> Either w x -> Maybe w
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| Maybe w -> x -> Maybe w
forall a b. a -> b -> a
const Maybe w
forall a. Maybe a
Nothing) (DeepMap '[k0, k1] (Either w x) -> DeepMap '[k0, k1] w)
-> (DeepMap '[k0, k1] (Either w x) -> DeepMap '[k0, k1] x)
-> (DeepMap '[k0, k1] (Either w x), DeepMap '[k0, k1] (Either w x))
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** (Either w x -> Maybe x)
-> DeepMap '[k0, k1] (Either w x) -> DeepMap '[k0, k1] x
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (Maybe x -> w -> Maybe x
forall a b. a -> b -> a
const Maybe x
forall a. Maybe a
Nothing (w -> Maybe x) -> (x -> Maybe x) -> Either w x -> Maybe x
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| x -> Maybe x
forall a. a -> Maybe a
Just))
((DeepMap '[k0, k1] (Either w x), DeepMap '[k0, k1] (Either w x))
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x))
-> (DeepMap '[k0, k1] (Either w x)
-> (DeepMap '[k0, k1] (Either w x),
DeepMap '[k0, k1] (Either w x)))
-> DeepMap '[k0, k1] (Either w x)
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Either w x -> Bool)
-> DeepMap '[k0, k1] (Either w x)
-> (DeepMap '[k0, k1] (Either w x), DeepMap '[k0, k1] (Either w x))
forall v k0 k1.
(v -> Bool)
-> DeepMap '[k0, k1] v
-> (DeepMap '[k0, k1] v, DeepMap '[k0, k1] v)
partition2 Either w x -> Bool
forall a b. Either a b -> Bool
isLeft
(DeepMap '[k0, k1] (Either w x)
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x))
-> DeepMap '[k0, k1] (Either w x)
-> (DeepMap '[k0, k1] w, DeepMap '[k0, k1] x)
forall a b. (a -> b) -> a -> b
$ (k0 -> DeepMap '[k1] v -> DeepMap '[k1] (Either w x))
-> DeepMap '[k0, k1] v -> DeepMap '[k0, k1] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey (\k0
k0 -> (k1 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k1] v -> DeepMap '[k1] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k1] v -> DeepMap '[k1] (Either w x))
-> (k1 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k1] v
-> DeepMap '[k1] (Either w x)
forall a b. (a -> b) -> a -> b
$ (v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x)
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> (k1 -> v -> Either w x)
-> k1
-> DeepMap '[] v
-> DeepMap '[] (Either w x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> v -> Either w x
f k0
k0) DeepMap '[k0, k1] v
m
mapEitherWithKey3 ::
(k0 -> k1 -> k2 -> v -> Either w x) ->
DeepMap '[k0, k1, k2] v ->
(DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x)
mapEitherWithKey3 :: forall k0 k1 k2 v w x.
(k0 -> k1 -> k2 -> v -> Either w x)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x)
mapEitherWithKey3 k0 -> k1 -> k2 -> v -> Either w x
f DeepMap '[k0, k1, k2] v
m =
((Either w x -> Maybe w)
-> DeepMap '[k0, k1, k2] (Either w x) -> DeepMap '[k0, k1, k2] w
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (w -> Maybe w
forall a. a -> Maybe a
Just (w -> Maybe w) -> (x -> Maybe w) -> Either w x -> Maybe w
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| Maybe w -> x -> Maybe w
forall a b. a -> b -> a
const Maybe w
forall a. Maybe a
Nothing) (DeepMap '[k0, k1, k2] (Either w x) -> DeepMap '[k0, k1, k2] w)
-> (DeepMap '[k0, k1, k2] (Either w x) -> DeepMap '[k0, k1, k2] x)
-> (DeepMap '[k0, k1, k2] (Either w x),
DeepMap '[k0, k1, k2] (Either w x))
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** (Either w x -> Maybe x)
-> DeepMap '[k0, k1, k2] (Either w x) -> DeepMap '[k0, k1, k2] x
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (Maybe x -> w -> Maybe x
forall a b. a -> b -> a
const Maybe x
forall a. Maybe a
Nothing (w -> Maybe x) -> (x -> Maybe x) -> Either w x -> Maybe x
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| x -> Maybe x
forall a. a -> Maybe a
Just))
((DeepMap '[k0, k1, k2] (Either w x),
DeepMap '[k0, k1, k2] (Either w x))
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x))
-> (DeepMap '[k0, k1, k2] (Either w x)
-> (DeepMap '[k0, k1, k2] (Either w x),
DeepMap '[k0, k1, k2] (Either w x)))
-> DeepMap '[k0, k1, k2] (Either w x)
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Either w x -> Bool)
-> DeepMap '[k0, k1, k2] (Either w x)
-> (DeepMap '[k0, k1, k2] (Either w x),
DeepMap '[k0, k1, k2] (Either w x))
forall v k0 k1 k2.
(v -> Bool)
-> DeepMap '[k0, k1, k2] v
-> (DeepMap '[k0, k1, k2] v, DeepMap '[k0, k1, k2] v)
partition3 Either w x -> Bool
forall a b. Either a b -> Bool
isLeft
(DeepMap '[k0, k1, k2] (Either w x)
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x))
-> DeepMap '[k0, k1, k2] (Either w x)
-> (DeepMap '[k0, k1, k2] w, DeepMap '[k0, k1, k2] x)
forall a b. (a -> b) -> a -> b
$ (k0 -> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] (Either w x))
-> DeepMap '[k0, k1, k2] v -> DeepMap '[k0, k1, k2] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey
( \k0
k0 -> (k1 -> DeepMap '[k2] v -> DeepMap '[k2] (Either w x))
-> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> DeepMap '[k2] v -> DeepMap '[k2] (Either w x))
-> DeepMap '[k1, k2] v -> DeepMap '[k1, k2] (Either w x))
-> (k1 -> DeepMap '[k2] v -> DeepMap '[k2] (Either w x))
-> DeepMap '[k1, k2] v
-> DeepMap '[k1, k2] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k1
k1 ->
(k2 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k2] v -> DeepMap '[k2] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k2 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k2] v -> DeepMap '[k2] (Either w x))
-> (k2 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k2] v
-> DeepMap '[k2] (Either w x)
forall a b. (a -> b) -> a -> b
$ (v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x)
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> (k2 -> v -> Either w x)
-> k2
-> DeepMap '[] v
-> DeepMap '[] (Either w x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> v -> Either w x
f k0
k0 k1
k1
)
DeepMap '[k0, k1, k2] v
m
mapEitherWithKey4 ::
(k0 -> k1 -> k2 -> k3 -> v -> Either w x) ->
DeepMap '[k0, k1, k2, k3] v ->
(DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x)
mapEitherWithKey4 :: forall k0 k1 k2 k3 v w x.
(k0 -> k1 -> k2 -> k3 -> v -> Either w x)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x)
mapEitherWithKey4 k0 -> k1 -> k2 -> k3 -> v -> Either w x
f DeepMap '[k0, k1, k2, k3] v
m =
((Either w x -> Maybe w)
-> DeepMap '[k0, k1, k2, k3] (Either w x)
-> DeepMap '[k0, k1, k2, k3] w
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (w -> Maybe w
forall a. a -> Maybe a
Just (w -> Maybe w) -> (x -> Maybe w) -> Either w x -> Maybe w
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| Maybe w -> x -> Maybe w
forall a b. a -> b -> a
const Maybe w
forall a. Maybe a
Nothing) (DeepMap '[k0, k1, k2, k3] (Either w x)
-> DeepMap '[k0, k1, k2, k3] w)
-> (DeepMap '[k0, k1, k2, k3] (Either w x)
-> DeepMap '[k0, k1, k2, k3] x)
-> (DeepMap '[k0, k1, k2, k3] (Either w x),
DeepMap '[k0, k1, k2, k3] (Either w x))
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** (Either w x -> Maybe x)
-> DeepMap '[k0, k1, k2, k3] (Either w x)
-> DeepMap '[k0, k1, k2, k3] x
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (Maybe x -> w -> Maybe x
forall a b. a -> b -> a
const Maybe x
forall a. Maybe a
Nothing (w -> Maybe x) -> (x -> Maybe x) -> Either w x -> Maybe x
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| x -> Maybe x
forall a. a -> Maybe a
Just))
((DeepMap '[k0, k1, k2, k3] (Either w x),
DeepMap '[k0, k1, k2, k3] (Either w x))
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x))
-> (DeepMap '[k0, k1, k2, k3] (Either w x)
-> (DeepMap '[k0, k1, k2, k3] (Either w x),
DeepMap '[k0, k1, k2, k3] (Either w x)))
-> DeepMap '[k0, k1, k2, k3] (Either w x)
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Either w x -> Bool)
-> DeepMap '[k0, k1, k2, k3] (Either w x)
-> (DeepMap '[k0, k1, k2, k3] (Either w x),
DeepMap '[k0, k1, k2, k3] (Either w x))
forall v k0 k1 k2 k3.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3] v
-> (DeepMap '[k0, k1, k2, k3] v, DeepMap '[k0, k1, k2, k3] v)
partition4 Either w x -> Bool
forall a b. Either a b -> Bool
isLeft
(DeepMap '[k0, k1, k2, k3] (Either w x)
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x))
-> DeepMap '[k0, k1, k2, k3] (Either w x)
-> (DeepMap '[k0, k1, k2, k3] w, DeepMap '[k0, k1, k2, k3] x)
forall a b. (a -> b) -> a -> b
$ (k0
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] (Either w x))
-> DeepMap '[k0, k1, k2, k3] v
-> DeepMap '[k0, k1, k2, k3] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey
( \k0
k0 -> (k1 -> DeepMap '[k2, k3] v -> DeepMap '[k2, k3] (Either w x))
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1 -> DeepMap '[k2, k3] v -> DeepMap '[k2, k3] (Either w x))
-> DeepMap '[k1, k2, k3] v -> DeepMap '[k1, k2, k3] (Either w x))
-> (k1 -> DeepMap '[k2, k3] v -> DeepMap '[k2, k3] (Either w x))
-> DeepMap '[k1, k2, k3] v
-> DeepMap '[k1, k2, k3] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k1
k1 ->
(k2 -> DeepMap '[k3] v -> DeepMap '[k3] (Either w x))
-> DeepMap '[k2, k3] v -> DeepMap '[k2, k3] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k2 -> DeepMap '[k3] v -> DeepMap '[k3] (Either w x))
-> DeepMap '[k2, k3] v -> DeepMap '[k2, k3] (Either w x))
-> (k2 -> DeepMap '[k3] v -> DeepMap '[k3] (Either w x))
-> DeepMap '[k2, k3] v
-> DeepMap '[k2, k3] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k2
k2 ->
(k3 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k3] v -> DeepMap '[k3] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k3 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k3] v -> DeepMap '[k3] (Either w x))
-> (k3 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k3] v
-> DeepMap '[k3] (Either w x)
forall a b. (a -> b) -> a -> b
$ (v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x)
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> (k3 -> v -> Either w x)
-> k3
-> DeepMap '[] v
-> DeepMap '[] (Either w x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> v -> Either w x
f k0
k0 k1
k1 k2
k2
)
DeepMap '[k0, k1, k2, k3] v
m
mapEitherWithKey5 ::
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Either w x) ->
DeepMap '[k0, k1, k2, k3, k4] v ->
(DeepMap '[k0, k1, k2, k3, k4] w, DeepMap '[k0, k1, k2, k3, k4] x)
mapEitherWithKey5 :: forall k0 k1 k2 k3 k4 v w x.
(k0 -> k1 -> k2 -> k3 -> k4 -> v -> Either w x)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x)
mapEitherWithKey5 k0 -> k1 -> k2 -> k3 -> k4 -> v -> Either w x
f DeepMap '[k0, k1, k2, k3, k4] v
m =
((Either w x -> Maybe w)
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> DeepMap '[k0, k1, k2, k3, k4] w
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (w -> Maybe w
forall a. a -> Maybe a
Just (w -> Maybe w) -> (x -> Maybe w) -> Either w x -> Maybe w
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| Maybe w -> x -> Maybe w
forall a b. a -> b -> a
const Maybe w
forall a. Maybe a
Nothing) (DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> DeepMap '[k0, k1, k2, k3, k4] w)
-> (DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> DeepMap '[k0, k1, k2, k3, k4] x)
-> (DeepMap '[k0, k1, k2, k3, k4] (Either w x),
DeepMap '[k0, k1, k2, k3, k4] (Either w x))
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** (Either w x -> Maybe x)
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> DeepMap '[k0, k1, k2, k3, k4] x
forall v w k (ks :: [*]).
(v -> Maybe w) -> DeepMap (k : ks) v -> DeepMap (k : ks) w
mapMaybe (Maybe x -> w -> Maybe x
forall a b. a -> b -> a
const Maybe x
forall a. Maybe a
Nothing (w -> Maybe x) -> (x -> Maybe x) -> Either w x -> Maybe x
forall b d c. (b -> d) -> (c -> d) -> Either b c -> d
forall (a :: * -> * -> *) b d c.
ArrowChoice a =>
a b d -> a c d -> a (Either b c) d
||| x -> Maybe x
forall a. a -> Maybe a
Just))
((DeepMap '[k0, k1, k2, k3, k4] (Either w x),
DeepMap '[k0, k1, k2, k3, k4] (Either w x))
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x))
-> (DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> (DeepMap '[k0, k1, k2, k3, k4] (Either w x),
DeepMap '[k0, k1, k2, k3, k4] (Either w x)))
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Either w x -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> (DeepMap '[k0, k1, k2, k3, k4] (Either w x),
DeepMap '[k0, k1, k2, k3, k4] (Either w x))
forall v k0 k1 k2 k3 k4.
(v -> Bool)
-> DeepMap '[k0, k1, k2, k3, k4] v
-> (DeepMap '[k0, k1, k2, k3, k4] v,
DeepMap '[k0, k1, k2, k3, k4] v)
partition5 Either w x -> Bool
forall a b. Either a b -> Bool
isLeft
(DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x))
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
-> (DeepMap '[k0, k1, k2, k3, k4] w,
DeepMap '[k0, k1, k2, k3, k4] x)
forall a b. (a -> b) -> a -> b
$ (k0
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] (Either w x))
-> DeepMap '[k0, k1, k2, k3, k4] v
-> DeepMap '[k0, k1, k2, k3, k4] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey
( \k0
k0 -> (k1
-> DeepMap '[k2, k3, k4] v -> DeepMap '[k2, k3, k4] (Either w x))
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k1
-> DeepMap '[k2, k3, k4] v -> DeepMap '[k2, k3, k4] (Either w x))
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] (Either w x))
-> (k1
-> DeepMap '[k2, k3, k4] v -> DeepMap '[k2, k3, k4] (Either w x))
-> DeepMap '[k1, k2, k3, k4] v
-> DeepMap '[k1, k2, k3, k4] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k1
k1 ->
(k2 -> DeepMap '[k3, k4] v -> DeepMap '[k3, k4] (Either w x))
-> DeepMap '[k2, k3, k4] v -> DeepMap '[k2, k3, k4] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k2 -> DeepMap '[k3, k4] v -> DeepMap '[k3, k4] (Either w x))
-> DeepMap '[k2, k3, k4] v -> DeepMap '[k2, k3, k4] (Either w x))
-> (k2 -> DeepMap '[k3, k4] v -> DeepMap '[k3, k4] (Either w x))
-> DeepMap '[k2, k3, k4] v
-> DeepMap '[k2, k3, k4] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k2
k2 ->
(k3 -> DeepMap '[k4] v -> DeepMap '[k4] (Either w x))
-> DeepMap '[k3, k4] v -> DeepMap '[k3, k4] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k3 -> DeepMap '[k4] v -> DeepMap '[k4] (Either w x))
-> DeepMap '[k3, k4] v -> DeepMap '[k3, k4] (Either w x))
-> (k3 -> DeepMap '[k4] v -> DeepMap '[k4] (Either w x))
-> DeepMap '[k3, k4] v
-> DeepMap '[k3, k4] (Either w x)
forall a b. (a -> b) -> a -> b
$ \k3
k3 ->
(k4 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k4] v -> DeepMap '[k4] (Either w x)
forall k (ks :: [*]) v (ls :: [*]) w.
(k -> DeepMap ks v -> DeepMap ls w)
-> DeepMap (k : ks) v -> DeepMap (k : ls) w
mapShallowWithKey ((k4 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k4] v -> DeepMap '[k4] (Either w x))
-> (k4 -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> DeepMap '[k4] v
-> DeepMap '[k4] (Either w x)
forall a b. (a -> b) -> a -> b
$ (v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x)
forall a b. (a -> b) -> DeepMap '[] a -> DeepMap '[] b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((v -> Either w x) -> DeepMap '[] v -> DeepMap '[] (Either w x))
-> (k4 -> v -> Either w x)
-> k4
-> DeepMap '[] v
-> DeepMap '[] (Either w x)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. k0 -> k1 -> k2 -> k3 -> k4 -> v -> Either w x
f k0
k0 k1
k1 k2
k2 k3
k3
)
DeepMap '[k0, k1, k2, k3, k4] v
m
split ::
(Ord k) =>
k ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ks) v, DeepMap (k ': ks) v)
split :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
split k
k (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ k
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
forall k a. Ord k => k -> Map k a -> (Map k a, Map k a)
Map.split k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
splitLookup ::
(Ord k) =>
k ->
DeepMap (k ': ks) v ->
(DeepMap (k ': ks) v, Maybe (DeepMap ks v), DeepMap (k ': ks) v)
splitLookup :: forall k (ks :: [*]) v.
Ord k =>
k
-> DeepMap (k : ks) v
-> (DeepMap (k : ks) v, Maybe (DeepMap ks v), DeepMap (k : ks) v)
splitLookup k
k (Nest Map k (DeepMap ks v)
m) = (\(Map k (DeepMap ks v)
n, Maybe (DeepMap ks v)
y, Map k (DeepMap ks v)
p) -> (Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest Map k (DeepMap ks v)
n, Maybe (DeepMap ks v)
y, Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest Map k (DeepMap ks v)
p)) ((Map k (DeepMap ks v), Maybe (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, Maybe (DeepMap ks v), DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Maybe (DeepMap ks v),
Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, Maybe (DeepMap ks v), DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ k
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Maybe (DeepMap ks v),
Map k (DeepMap ks v))
forall k a. Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
Map.splitLookup k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
splitRoot :: DeepMap (k ': ks) v -> [DeepMap (k ': ks) v]
splitRoot :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> [DeepMap (k : ks) v]
splitRoot (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> [Map k (DeepMap ks v)] -> [DeepMap (k : ks) v]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v) -> [Map k (DeepMap ks v)]
forall k b. Map k b -> [Map k b]
Map.splitRoot Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
isSubmapOf ::
(Ord k, Eq (DeepMap ks v)) => DeepMap (k ': ks) v -> DeepMap (k ': ks) v -> Bool
isSubmapOf :: forall k (ks :: [*]) v.
(Ord k, Eq (DeepMap ks v)) =>
DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
isSubmapOf (Nest Map k (DeepMap ks v)
m) (Nest Map k (DeepMap ks v)
n) = Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall k a. (Ord k, Eq a) => Map k a -> Map k a -> Bool
Map.isSubmapOf Map k (DeepMap ks v)
m Map k (DeepMap ks v)
Map k (DeepMap ks v)
n
isSubmapOfBy ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> Bool) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v ->
Bool
isSubmapOfBy :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
isSubmapOfBy DeepMap ks v -> DeepMap ks v -> Bool
f (Nest Map k (DeepMap ks v)
m) (Nest Map k (DeepMap ks v)
n) = (DeepMap ks v -> DeepMap ks v -> Bool)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall k a b.
Ord k =>
(a -> b -> Bool) -> Map k a -> Map k b -> Bool
Map.isSubmapOfBy DeepMap ks v -> DeepMap ks v -> Bool
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m Map k (DeepMap ks v)
Map k (DeepMap ks v)
n
isProperSubmapOf ::
(Ord k, Eq (DeepMap ks v)) => DeepMap (k ': ks) v -> DeepMap (k ': ks) v -> Bool
isProperSubmapOf :: forall k (ks :: [*]) v.
(Ord k, Eq (DeepMap ks v)) =>
DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
isProperSubmapOf (Nest Map k (DeepMap ks v)
m) (Nest Map k (DeepMap ks v)
n) = Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall k a. (Ord k, Eq a) => Map k a -> Map k a -> Bool
Map.isProperSubmapOf Map k (DeepMap ks v)
m Map k (DeepMap ks v)
Map k (DeepMap ks v)
n
isProperSubmapOfBy ::
(Ord k) =>
(DeepMap ks v -> DeepMap ks v -> Bool) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v ->
Bool
isProperSubmapOfBy :: forall k (ks :: [*]) v.
Ord k =>
(DeepMap ks v -> DeepMap ks v -> Bool)
-> DeepMap (k : ks) v -> DeepMap (k : ks) v -> Bool
isProperSubmapOfBy DeepMap ks v -> DeepMap ks v -> Bool
f (Nest Map k (DeepMap ks v)
m) (Nest Map k (DeepMap ks v)
n) = (DeepMap ks v -> DeepMap ks v -> Bool)
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v) -> Bool
forall k a b.
Ord k =>
(a -> b -> Bool) -> Map k a -> Map k b -> Bool
Map.isProperSubmapOfBy DeepMap ks v -> DeepMap ks v -> Bool
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m Map k (DeepMap ks v)
Map k (DeepMap ks v)
n
lookupIndex :: (Ord k) => k -> DeepMap (k ': ks) v -> Maybe Int
lookupIndex :: forall k (ks :: [*]) v.
Ord k =>
k -> DeepMap (k : ks) v -> Maybe Int
lookupIndex k
k (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Maybe Int
forall k a. Ord k => k -> Map k a -> Maybe Int
Map.lookupIndex k
k Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
findIndex :: (Ord k) => k -> DeepMap (k ': ks) v -> Int
findIndex :: forall k (ks :: [*]) v. Ord k => k -> DeepMap (k : ks) v -> Int
findIndex k
i (Nest Map k (DeepMap ks v)
m) = k -> Map k (DeepMap ks v) -> Int
forall k a. Ord k => k -> Map k a -> Int
Map.findIndex k
i Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
elemAt :: (Ord k) => Int -> DeepMap (k ': ks) v -> (k, DeepMap ks v)
elemAt :: forall k (ks :: [*]) v.
Ord k =>
Int -> DeepMap (k : ks) v -> (k, DeepMap ks v)
elemAt Int
i (Nest Map k (DeepMap ks v)
m) = Int -> Map k (DeepMap ks v) -> (k, DeepMap ks v)
forall k a. Int -> Map k a -> (k, a)
Map.elemAt Int
i Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateAt ::
(Ord k) =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
Int ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateAt :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Int -> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateAt k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Int
i (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Int -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> a -> Maybe a) -> Int -> Map k a -> Map k a
Map.updateAt k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Int
i Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteAt ::
(Ord k) =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
Int ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
deleteAt :: forall k (ks :: [*]) v.
Ord k =>
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Int -> DeepMap (k : ks) v -> DeepMap (k : ks) v
deleteAt k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Int
i (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Int -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> a -> Maybe a) -> Int -> Map k a -> Map k a
Map.updateAt k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Int
i Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
take :: Int -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
take :: forall k (ks :: [*]) v.
Int -> DeepMap (k : ks) v -> DeepMap (k : ks) v
take Int
n (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Int -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Int -> Map k a -> Map k a
Map.take Int
n Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
drop :: Int -> DeepMap (k ': ks) v -> DeepMap (k ': ks) v
drop :: forall k (ks :: [*]) v.
Int -> DeepMap (k : ks) v -> DeepMap (k : ks) v
drop Int
n (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Int -> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Int -> Map k a -> Map k a
Map.take Int
n Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
splitAt ::
Int -> DeepMap (k ': ks) v -> (DeepMap (k ': ks) v, DeepMap (k ': ks) v)
splitAt :: forall k (ks :: [*]) v.
Int
-> DeepMap (k : ks) v -> (DeepMap (k : ks) v, DeepMap (k : ks) v)
splitAt Int
i (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall b c b' c'. (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v))
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
-> (DeepMap (k : ks) v, DeepMap (k : ks) v)
forall a b. (a -> b) -> a -> b
$ Int
-> Map k (DeepMap ks v)
-> (Map k (DeepMap ks v), Map k (DeepMap ks v))
forall k a. Int -> Map k a -> (Map k a, Map k a)
Map.splitAt Int
i Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupMin :: DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupMin :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupMin (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k a. Map k a -> Maybe (k, a)
Map.lookupMin Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
lookupMax :: DeepMap (k ': ks) v -> Maybe (k, DeepMap ks v)
lookupMax :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe (k, DeepMap ks v)
lookupMax (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> Maybe (k, DeepMap ks v)
forall k a. Map k a -> Maybe (k, a)
Map.lookupMax Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
findMin :: DeepMap (k ': ks) v -> (k, DeepMap ks v)
findMin :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> (k, DeepMap ks v)
findMin (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> (k, DeepMap ks v)
forall k a. Map k a -> (k, a)
Map.findMin Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
findMax :: DeepMap (k ': ks) v -> (k, DeepMap ks v)
findMax :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> (k, DeepMap ks v)
findMax (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> (k, DeepMap ks v)
forall k a. Map k a -> (k, a)
Map.findMax Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteMin :: DeepMap (k ': ks) v -> DeepMap (k ': ks) v
deleteMin :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> DeepMap (k : ks) v
deleteMin (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Map k a -> Map k a
Map.deleteMin Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteMax :: DeepMap (k ': ks) v -> DeepMap (k ': ks) v
deleteMax :: forall k (ks :: [*]) v. DeepMap (k : ks) v -> DeepMap (k : ks) v
deleteMax (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. Map k a -> Map k a
Map.deleteMax Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteFindMin :: DeepMap (k ': ks) v -> ((k, DeepMap ks v), DeepMap (k ': ks) v)
deleteFindMin :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> ((k, DeepMap ks v), DeepMap (k : ks) v)
deleteFindMin (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> ((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v) -> ((k, DeepMap ks v), Map k (DeepMap ks v))
forall k a. Map k a -> ((k, a), Map k a)
Map.deleteFindMin Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
deleteFindMax :: DeepMap (k ': ks) v -> ((k, DeepMap ks v), DeepMap (k ': ks) v)
deleteFindMax :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> ((k, DeepMap ks v), DeepMap (k : ks) v)
deleteFindMax (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> ((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v) -> ((k, DeepMap ks v), Map k (DeepMap ks v))
forall k a. Map k a -> ((k, a), Map k a)
Map.deleteFindMax Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateMin ::
(DeepMap ks v -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateMin :: forall (ks :: [*]) v k.
(DeepMap ks v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateMin DeepMap ks v -> Maybe (DeepMap ks v)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall a k. (a -> Maybe a) -> Map k a -> Map k a
Map.updateMin DeepMap ks v -> Maybe (DeepMap ks v)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateMax ::
(DeepMap ks v -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateMax :: forall (ks :: [*]) v k.
(DeepMap ks v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateMax DeepMap ks v -> Maybe (DeepMap ks v)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (DeepMap ks v -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall a k. (a -> Maybe a) -> Map k a -> Map k a
Map.updateMax DeepMap ks v -> Maybe (DeepMap ks v)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateMinWithKey ::
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateMinWithKey :: forall k (ks :: [*]) v.
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateMinWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> a -> Maybe a) -> Map k a -> Map k a
Map.updateMinWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
updateMaxWithKey ::
(k -> DeepMap ks v -> Maybe (DeepMap ks v)) ->
DeepMap (k ': ks) v ->
DeepMap (k ': ks) v
updateMaxWithKey :: forall k (ks :: [*]) v.
(k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> DeepMap (k : ks) v -> DeepMap (k : ks) v
updateMaxWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f (Nest Map k (DeepMap ks v)
m) = Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall a b. (a -> b) -> a -> b
$ (k -> DeepMap ks v -> Maybe (DeepMap ks v))
-> Map k (DeepMap ks v) -> Map k (DeepMap ks v)
forall k a. (k -> a -> Maybe a) -> Map k a -> Map k a
Map.updateMaxWithKey k -> DeepMap ks v -> Maybe (DeepMap ks v)
f Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
minView :: DeepMap (k ': ks) v -> Maybe (DeepMap ks v, DeepMap (k ': ks) v)
minView :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe (DeepMap ks v, DeepMap (k : ks) v)
minView (Nest Map k (DeepMap ks v)
m) = (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (DeepMap ks v, Map k (DeepMap ks v))
-> (DeepMap ks v, DeepMap (k : ks) v)
forall a b. (a -> b) -> (DeepMap ks v, a) -> (DeepMap ks v, b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((DeepMap ks v, Map k (DeepMap ks v))
-> (DeepMap ks v, DeepMap (k : ks) v))
-> Maybe (DeepMap ks v, Map k (DeepMap ks v))
-> Maybe (DeepMap ks v, DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v) -> Maybe (DeepMap ks v, Map k (DeepMap ks v))
forall k a. Map k a -> Maybe (a, Map k a)
Map.minView Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
maxView :: DeepMap (k ': ks) v -> Maybe (DeepMap ks v, DeepMap (k ': ks) v)
maxView :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe (DeepMap ks v, DeepMap (k : ks) v)
maxView (Nest Map k (DeepMap ks v)
m) = (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> (DeepMap ks v, Map k (DeepMap ks v))
-> (DeepMap ks v, DeepMap (k : ks) v)
forall a b. (a -> b) -> (DeepMap ks v, a) -> (DeepMap ks v, b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest ((DeepMap ks v, Map k (DeepMap ks v))
-> (DeepMap ks v, DeepMap (k : ks) v))
-> Maybe (DeepMap ks v, Map k (DeepMap ks v))
-> Maybe (DeepMap ks v, DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v) -> Maybe (DeepMap ks v, Map k (DeepMap ks v))
forall k a. Map k a -> Maybe (a, Map k a)
Map.maxView Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
minViewWithKey ::
DeepMap (k ': ks) v -> Maybe ((k, DeepMap ks v), DeepMap (k ': ks) v)
minViewWithKey :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe ((k, DeepMap ks v), DeepMap (k : ks) v)
minViewWithKey (Nest Map k (DeepMap ks v)
m) = (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> ((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v)
forall a b.
(a -> b) -> ((k, DeepMap ks v), a) -> ((k, DeepMap ks v), b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v))
-> Maybe ((k, DeepMap ks v), Map k (DeepMap ks v))
-> Maybe ((k, DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v)
-> Maybe ((k, DeepMap ks v), Map k (DeepMap ks v))
forall k a. Map k a -> Maybe ((k, a), Map k a)
Map.minViewWithKey Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
maxViewWithKey ::
DeepMap (k ': ks) v -> Maybe ((k, DeepMap ks v), DeepMap (k ': ks) v)
maxViewWithKey :: forall k (ks :: [*]) v.
DeepMap (k : ks) v -> Maybe ((k, DeepMap ks v), DeepMap (k : ks) v)
maxViewWithKey (Nest Map k (DeepMap ks v)
m) = (Map k (DeepMap ks v) -> DeepMap (k : ks) v)
-> ((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v)
forall a b.
(a -> b) -> ((k, DeepMap ks v), a) -> ((k, DeepMap ks v), b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Map k (DeepMap ks v) -> DeepMap (k : ks) v
forall k (ks :: [*]) v.
Ord k =>
Map k (DeepMap ks v) -> DeepMap (k : ks) v
Nest (((k, DeepMap ks v), Map k (DeepMap ks v))
-> ((k, DeepMap ks v), DeepMap (k : ks) v))
-> Maybe ((k, DeepMap ks v), Map k (DeepMap ks v))
-> Maybe ((k, DeepMap ks v), DeepMap (k : ks) v)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map k (DeepMap ks v)
-> Maybe ((k, DeepMap ks v), Map k (DeepMap ks v))
forall k a. Map k a -> Maybe ((k, a), Map k a)
Map.maxViewWithKey Map k (DeepMap ks v)
Map k (DeepMap ks v)
m
invertKeys ::
(Ord j, Ord k, Semigroup (DeepMap ks v)) =>
DeepMap (j ': k ': ks) v ->
DeepMap (k ': j ': ks) v
invertKeys :: forall j k (ks :: [*]) v.
(Ord j, Ord k, Semigroup (DeepMap ks v)) =>
DeepMap (j : k : ks) v -> DeepMap (k : j : ks) v
invertKeys = (Deep (j : k : ks) -> Deep (k : j : ks))
-> DeepMap (j : k : ks) v -> DeepMap (k : j : ks) v
forall (ks :: [*]) v (js :: [*]).
Monoid (DeepMap ks v) =>
(Deep js -> Deep ks) -> DeepMap js v -> DeepMap ks v
mapKeysDeep \(Deep2 j
j k
k Deep ks
d0) -> k -> j -> Deep ks -> Deep (k : j : ks)
forall k0 k1 (ks :: [*]).
(Ord k0, Ord k1) =>
k0 -> k1 -> Deep ks -> Deep (k0 : k1 : ks)
Deep2 k
k j
j Deep ks
d0