MapExtensions Class

DECLARATION
public static class MapExtensions
NAMESPACE
LanguageExt

Methods

AddOrUpdate<A, B, C, D, E>(Map<A, Map<B, Map<C, Map<D, E>>>>, A, B, C, D, E)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, E>>>>
aKey
A
bKey
B
cKey
C
dKey
D
value
E
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, E>>>> AddOrUpdate<A, B, C, D, E>(this Map<A, Map<B, Map<C, Map<D, E>>>> self, A aKey, B bKey, C cKey, D dKey, E value)
RETURNS
Map<A, Map<B, Map<C, Map<D, E>>>>
AddOrUpdate<A, B, C, D, E>(Map<A, Map<B, Map<C, Map<D, E>>>>, A, B, C, D, Func<E, E>, Func<E>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, E>>>>
aKey
A
bKey
B
cKey
C
dKey
D
Some
Func<E, E>
None
Func<E>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, E>>>> AddOrUpdate<A, B, C, D, E>(this Map<A, Map<B, Map<C, Map<D, E>>>> self, A aKey, B bKey, C cKey, D dKey, Func<E, E> Some, Func<E> None)
RETURNS
Map<A, Map<B, Map<C, Map<D, E>>>>
AddOrUpdate<A, B, C, D>(Map<A, Map<B, Map<C, D>>>, A, B, C, D)
PARAMETERS
self
Map<A, Map<B, Map<C, D>>>
aKey
A
bKey
B
cKey
C
value
D
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, D>>> AddOrUpdate<A, B, C, D>(this Map<A, Map<B, Map<C, D>>> self, A aKey, B bKey, C cKey, D value)
RETURNS
Map<A, Map<B, Map<C, D>>>
AddOrUpdate<A, B, C, D>(Map<A, Map<B, Map<C, D>>>, A, B, C, Func<D, D>, Func<D>)
PARAMETERS
self
Map<A, Map<B, Map<C, D>>>
aKey
A
bKey
B
cKey
C
Some
Func<D, D>
None
Func<D>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, D>>> AddOrUpdate<A, B, C, D>(this Map<A, Map<B, Map<C, D>>> self, A aKey, B bKey, C cKey, Func<D, D> Some, Func<D> None)
RETURNS
Map<A, Map<B, Map<C, D>>>
AddOrUpdate<A, B, C>(Map<A, Map<B, C>>, A, B, Func<C, C>, Func<C>)
PARAMETERS
self
Map<A, Map<B, C>>
outerKey
A
innerKey
B
Some
Func<C, C>
None
Func<C>
DECLARATION
[Pure]
public static Map<A, Map<B, C>> AddOrUpdate<A, B, C>(this Map<A, Map<B, C>> self, A outerKey, B innerKey, Func<C, C> Some, Func<C> None)
RETURNS
Map<A, Map<B, C>>
AddOrUpdate<A, B, C>(Map<A, Map<B, C>>, A, B, C)
PARAMETERS
self
Map<A, Map<B, C>>
outerKey
A
innerKey
B
value
C
DECLARATION
[Pure]
public static Map<A, Map<B, C>> AddOrUpdate<A, B, C>(this Map<A, Map<B, C>> self, A outerKey, B innerKey, C value)
RETURNS
Map<A, Map<B, C>>
Count<K, V>(Map<K, V>)
SUMMARY

Number of items in the map

PARAMETERS
self
Map<K, V>
DECLARATION
[Pure]
public static int Count<K, V>(this Map<K, V> self)
RETURNS
int
CountT<A, B, C, D, V>(Map<A, Map<B, Map<C, Map<D, V>>>>)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
DECLARATION
[Pure]
public static int CountT<A, B, C, D, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map)
RETURNS
int
CountT<A, B, C, V>(Map<A, Map<B, Map<C, V>>>)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
DECLARATION
[Pure]
public static int CountT<A, B, C, V>(this Map<A, Map<B, Map<C, V>>> map)
RETURNS
int
CountT<A, B, V>(Map<A, Map<B, V>>)
PARAMETERS
map
Map<A, Map<B, V>>
DECLARATION
[Pure]
public static int CountT<A, B, V>(this Map<A, Map<B, V>> map)
RETURNS
int
Exists<A, B, C, D, T>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool Exists<A, B, C, D, T>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<T, bool> pred)
RETURNS
bool
Exists<A, B, C, T>(Map<A, Map<B, Map<C, T>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool Exists<A, B, C, T>(this Map<A, Map<B, Map<C, T>>> self, Func<T, bool> pred)
RETURNS
bool
Exists<A, B, T>(Map<A, Map<B, T>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, T>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool Exists<A, B, T>(this Map<A, Map<B, T>> self, Func<T, bool> pred)
RETURNS
bool
FilterRemoveT<A, B, C, D, T>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, T>>>> FilterRemoveT<A, B, C, D, T>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, Map<C, Map<D, T>>>>
FilterRemoveT<A, B, C, T>(Map<A, Map<B, Map<C, T>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, T>>> FilterRemoveT<A, B, C, T>(this Map<A, Map<B, Map<C, T>>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, Map<C, T>>>
FilterRemoveT<A, B, T>(Map<A, Map<B, T>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, T>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, T>> FilterRemoveT<A, B, T>(this Map<A, Map<B, T>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, T>>
FilterT<A, B, C, D, T>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, T>>>> FilterT<A, B, C, D, T>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, Map<C, Map<D, T>>>>
FilterT<A, B, C, T>(Map<A, Map<B, Map<C, T>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, T>>> FilterT<A, B, C, T>(this Map<A, Map<B, Map<C, T>>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, Map<C, T>>>
FilterT<A, B, T>(Map<A, Map<B, T>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, T>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static Map<A, Map<B, T>> FilterT<A, B, T>(this Map<A, Map<B, T>> self, Func<T, bool> pred)
RETURNS
Map<A, Map<B, T>>
Find<A, B, C, D, E, F>(Map<A, Map<B, Map<C, Map<D, E>>>>, A, B, C, D, Func<E, F>, Func<F>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, E>>>>
aKey
A
bKey
B
cKey
C
dKey
D
Some
Func<E, F>
None
Func<F>
DECLARATION
[Pure]
public static F Find<A, B, C, D, E, F>(this Map<A, Map<B, Map<C, Map<D, E>>>> self, A aKey, B bKey, C cKey, D dKey, Func<E, F> Some, Func<F> None)
RETURNS
F
Find<A, B, C, D, E>(Map<A, Map<B, Map<C, D>>>, A, B, C, Func<D, E>, Func<E>)
PARAMETERS
self
Map<A, Map<B, Map<C, D>>>
aKey
A
bKey
B
cKey
C
Some
Func<D, E>
None
Func<E>
DECLARATION
[Pure]
public static E Find<A, B, C, D, E>(this Map<A, Map<B, Map<C, D>>> self, A aKey, B bKey, C cKey, Func<D, E> Some, Func<E> None)
RETURNS
E
Find<A, B, C, D>(Map<A, Map<B, Map<C, D>>>, A, B, C)
PARAMETERS
self
Map<A, Map<B, Map<C, D>>>
aKey
A
bKey
B
cKey
C
DECLARATION
[Pure]
public static Option<D> Find<A, B, C, D>(this Map<A, Map<B, Map<C, D>>> self, A aKey, B bKey, C cKey)
RETURNS
Option<D>
Find<A, B, C, D>(Map<A, Map<B, C>>, A, B, Func<C, D>, Func<D>)
PARAMETERS
self
Map<A, Map<B, C>>
outerKey
A
innerKey
B
Some
Func<C, D>
None
Func<D>
DECLARATION
[Pure]
public static D Find<A, B, C, D>(this Map<A, Map<B, C>> self, A outerKey, B innerKey, Func<C, D> Some, Func<D> None)
RETURNS
D
Find<A, B, C>(Map<A, Map<B, C>>, A, B)
PARAMETERS
self
Map<A, Map<B, C>>
outerKey
A
innerKey
B
DECLARATION
[Pure]
public static Option<C> Find<A, B, C>(this Map<A, Map<B, C>> self, A outerKey, B innerKey)
RETURNS
Option<C>
FoldT<A, B, C, D, S, V>(Map<A, Map<B, Map<C, Map<D, V>>>>, S, Func<S, V, S>)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
state
S
folder
Func<S, V, S>
DECLARATION
[Pure]
public static S FoldT<A, B, C, D, S, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map, S state, Func<S, V, S> folder)
RETURNS
S
FoldT<A, B, C, S, V>(Map<A, Map<B, Map<C, V>>>, S, Func<S, V, S>)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
state
S
folder
Func<S, V, S>
DECLARATION
[Pure]
public static S FoldT<A, B, C, S, V>(this Map<A, Map<B, Map<C, V>>> map, S state, Func<S, V, S> folder)
RETURNS
S
FoldT<A, B, S, V>(Map<A, Map<B, V>>, S, Func<S, V, S>)
PARAMETERS
map
Map<A, Map<B, V>>
state
S
folder
Func<S, V, S>
DECLARATION
[Pure]
public static S FoldT<A, B, S, V>(this Map<A, Map<B, V>> map, S state, Func<S, V, S> folder)
RETURNS
S
ForAll<A, B, C, D, T>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool ForAll<A, B, C, D, T>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<T, bool> pred)
RETURNS
bool
ForAll<A, B, C, T>(Map<A, Map<B, Map<C, T>>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool ForAll<A, B, C, T>(this Map<A, Map<B, Map<C, T>>> self, Func<T, bool> pred)
RETURNS
bool
ForAll<A, B, T>(Map<A, Map<B, T>>, Func<T, bool>)
PARAMETERS
self
Map<A, Map<B, T>>
pred
Func<T, bool>
DECLARATION
[Pure]
public static bool ForAll<A, B, T>(this Map<A, Map<B, T>> self, Func<T, bool> pred)
RETURNS
bool
Map<K, V, U>(Map<K, V>, Func<V, U>)
SUMMARY

Atomically maps the map to a new map

PARAMETERS
self
Map<K, V>
mapper
Func<V, U>
DECLARATION
[Pure]
public static Map<K, U> Map<K, V, U>(this Map<K, V> self, Func<V, U> mapper)
RETURNS
Map<K, U>
Mapped items in a new map
Map<K, V, U>(Map<K, V>, Func<K, V, U>)
SUMMARY

Atomically maps the map to a new map

PARAMETERS
self
Map<K, V>
mapper
Func<K, V, U>
DECLARATION
[Pure]
public static Map<K, U> Map<K, V, U>(this Map<K, V> self, Func<K, V, U> mapper)
RETURNS
Map<K, U>
Mapped items in a new map
MapRemoveT<A, B, C, D, T, V>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<Map<D, T>, Map<D, V>>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
map
Func<Map<D, T>, Map<D, V>>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> MapRemoveT<A, B, C, D, T, V>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<Map<D, T>, Map<D, V>> map)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
MapRemoveT<A, B, C, T, V>(Map<A, Map<B, Map<C, T>>>, Func<Map<C, T>, Map<C, V>>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
map
Func<Map<C, T>, Map<C, V>>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> MapRemoveT<A, B, C, T, V>(this Map<A, Map<B, Map<C, T>>> self, Func<Map<C, T>, Map<C, V>> map)
RETURNS
Map<A, Map<B, Map<C, V>>>
MapRemoveT<A, B, T, V>(Map<A, Map<B, T>>, Func<Map<B, T>, Map<B, V>>)
PARAMETERS
self
Map<A, Map<B, T>>
map
Func<Map<B, T>, Map<B, V>>
DECLARATION
[Pure]
public static Map<A, Map<B, V>> MapRemoveT<A, B, T, V>(this Map<A, Map<B, T>> self, Func<Map<B, T>, Map<B, V>> map)
RETURNS
Map<A, Map<B, V>>
MapT<A, B, C, D, T, V>(Map<A, Map<B, Map<C, Map<D, T>>>>, Func<T, V>)
PARAMETERS
self
Map<A, Map<B, Map<C, Map<D, T>>>>
map
Func<T, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> MapT<A, B, C, D, T, V>(this Map<A, Map<B, Map<C, Map<D, T>>>> self, Func<T, V> map)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
MapT<A, B, C, T, V>(Map<A, Map<B, Map<C, T>>>, Func<T, V>)
PARAMETERS
self
Map<A, Map<B, Map<C, T>>>
map
Func<T, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> MapT<A, B, C, T, V>(this Map<A, Map<B, Map<C, T>>> self, Func<T, V> map)
RETURNS
Map<A, Map<B, Map<C, V>>>
MapT<A, B, T, V>(Map<A, Map<B, T>>, Func<T, V>)
PARAMETERS
self
Map<A, Map<B, T>>
map
Func<T, V>
DECLARATION
[Pure]
public static Map<A, Map<B, V>> MapT<A, B, T, V>(this Map<A, Map<B, T>> self, Func<T, V> map)
RETURNS
Map<A, Map<B, V>>
Remove<A, B, C, D>(Map<A, Map<B, Map<C, D>>>, A, B, C)
PARAMETERS
self
Map<A, Map<B, Map<C, D>>>
aKey
A
bKey
B
cKey
C
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, D>>> Remove<A, B, C, D>(this Map<A, Map<B, Map<C, D>>> self, A aKey, B bKey, C cKey)
RETURNS
Map<A, Map<B, Map<C, D>>>
Remove<A, B, C>(Map<A, Map<B, C>>, A, B)
PARAMETERS
self
Map<A, Map<B, C>>
outerKey
A
innerKey
B
DECLARATION
[Pure]
public static Map<A, Map<B, C>> Remove<A, B, C>(this Map<A, Map<B, C>> self, A outerKey, B innerKey)
RETURNS
Map<A, Map<B, C>>
SetItemT<A, B, C, D, V>(Map<A, Map<B, Map<C, Map<D, V>>>>, A, B, C, D, V)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
aKey
A
bKey
B
cKey
C
dKey
D
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> SetItemT<A, B, C, D, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map, A aKey, B bKey, C cKey, D dKey, V value)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
SetItemT<A, B, C, D, V>(Map<A, Map<B, Map<C, Map<D, V>>>>, A, B, C, D, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
aKey
A
bKey
B
cKey
C
dKey
D
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> SetItemT<A, B, C, D, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map, A aKey, B bKey, C cKey, D dKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
SetItemT<A, B, C, V>(Map<A, Map<B, Map<C, V>>>, A, B, C, V)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
aKey
A
bKey
B
cKey
C
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> SetItemT<A, B, C, V>(this Map<A, Map<B, Map<C, V>>> map, A aKey, B bKey, C cKey, V value)
RETURNS
Map<A, Map<B, Map<C, V>>>
SetItemT<A, B, C, V>(Map<A, Map<B, Map<C, V>>>, A, B, C, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
aKey
A
bKey
B
cKey
C
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> SetItemT<A, B, C, V>(this Map<A, Map<B, Map<C, V>>> map, A aKey, B bKey, C cKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, Map<C, V>>>
SetItemT<A, B, V>(Map<A, Map<B, V>>, A, B, V)
PARAMETERS
map
Map<A, Map<B, V>>
aKey
A
bKey
B
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, V>> SetItemT<A, B, V>(this Map<A, Map<B, V>> map, A aKey, B bKey, V value)
RETURNS
Map<A, Map<B, V>>
SetItemT<A, B, V>(Map<A, Map<B, V>>, A, B, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, V>>
aKey
A
bKey
B
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, V>> SetItemT<A, B, V>(this Map<A, Map<B, V>> map, A aKey, B bKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, V>>
Sum<K>(Map<K, int>)
PARAMETERS
self
Map<K, int>
DECLARATION
[Pure]
public static int Sum<K>(this Map<K, int> self)
RETURNS
int
TrySetItemT<A, B, C, D, V>(Map<A, Map<B, Map<C, Map<D, V>>>>, A, B, C, D, V)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
aKey
A
bKey
B
cKey
C
dKey
D
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> TrySetItemT<A, B, C, D, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map, A aKey, B bKey, C cKey, D dKey, V value)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
TrySetItemT<A, B, C, D, V>(Map<A, Map<B, Map<C, Map<D, V>>>>, A, B, C, D, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, Map<C, Map<D, V>>>>
aKey
A
bKey
B
cKey
C
dKey
D
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, Map<D, V>>>> TrySetItemT<A, B, C, D, V>(this Map<A, Map<B, Map<C, Map<D, V>>>> map, A aKey, B bKey, C cKey, D dKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, Map<C, Map<D, V>>>>
TrySetItemT<A, B, C, V>(Map<A, Map<B, Map<C, V>>>, A, B, C, V)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
aKey
A
bKey
B
cKey
C
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> TrySetItemT<A, B, C, V>(this Map<A, Map<B, Map<C, V>>> map, A aKey, B bKey, C cKey, V value)
RETURNS
Map<A, Map<B, Map<C, V>>>
TrySetItemT<A, B, C, V>(Map<A, Map<B, Map<C, V>>>, A, B, C, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, Map<C, V>>>
aKey
A
bKey
B
cKey
C
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, Map<C, V>>> TrySetItemT<A, B, C, V>(this Map<A, Map<B, Map<C, V>>> map, A aKey, B bKey, C cKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, Map<C, V>>>
TrySetItemT<A, B, V>(Map<A, Map<B, V>>, A, B, V)
PARAMETERS
map
Map<A, Map<B, V>>
aKey
A
bKey
B
value
V
DECLARATION
[Pure]
public static Map<A, Map<B, V>> TrySetItemT<A, B, V>(this Map<A, Map<B, V>> map, A aKey, B bKey, V value)
RETURNS
Map<A, Map<B, V>>
TrySetItemT<A, B, V>(Map<A, Map<B, V>>, A, B, Func<V, V>)
PARAMETERS
map
Map<A, Map<B, V>>
aKey
A
bKey
B
Some
Func<V, V>
DECLARATION
[Pure]
public static Map<A, Map<B, V>> TrySetItemT<A, B, V>(this Map<A, Map<B, V>> map, A aKey, B bKey, Func<V, V> Some)
RETURNS
Map<A, Map<B, V>>