Îõ³h&—¡"      ! Safe-Inferred 35678:<Ùò› defaultable-mapA  type is a Map‡-like type that is extended with an optional default value. This default value can be used as a fallback if a lookup into the Map(-like type does not find a matching key.The type variables are:map: The MapÝ-like type to wrap (typically including the type of key, but not the type of the value)value& The type of each value stored in the Map -like type5For example, you will typically have a type like  ( key) value or   value.You can build a  value using:" - The empty ! has no keys and no default value# - A ! with a default value but no keys /  / $ - Convenient construction functionsThe  constructorYou can transform and combine  values using:($) - Concatenate two > values, preferring keys and defaults from the right onedo notation, if you enable  ApplicativeDo - To extend a  value with a default valueYou can query a  value using:  /  Note that the %. instance for this type is only valid for map8 type constructors that satisfy the following extra law: ÓGiven: ¢@ mf :: map (a -> b) ¢@ mx :: map a ¢@ kf :: (a -> b) -> c ¢@ kx :: a -> c & kf mf ' & kx mx ' (mf ( mx) = & kx mx ' & kf mf ' (mf ( mx) ¦@ where )- is the first type parameter that implements * and +.The intuition here is if that map is a ø-like type then we can think of those three expressions as having a set of keys associated with them, such that: Given: ¢@ keys :: map a ->  key keys (mf ( mx) = keys (& f mx) `intersection` keys (& (, x) mf) 5So normally the following equality would not be true:  & kf mf ' & kx mx = & kx mx ' & kf mf ç¦@ because the result would change if there was a key collision. Then the order in which we union ('') the two maps would change the result.'However, if you union yet another map (mf ( mxÃ) that shadows the colliding keys then result remains the same.defaultable-map Create a   from a (fromMap (Map.fromList [('A',1),('B',2)])0Defaultable (fromList [('A',1),('B',2)]) Nothingdefaultable-map Create a   from a single key-value pairsingleton ('A', 1)(Defaultable (fromList [('A',1)]) Nothingdefaultable-map Create a   from a list of key-value pairsfromList [('A',1),('B',2)]0Defaultable (fromList [('A',1),('B',2)]) Nothingdefaultable-mapInsert a key-value pair into a  !let example = fromList [('A', 1)]insert ('B', 2) example0Defaultable (fromList [('A',1),('B',2)]) Nothing)For bulk updates, you should instead use / with ($):)fromList [('B', 2), ('C', 3)] <|> example8Defaultable (fromList [('A',1),('B',2),('C',3)]) Nothingdefaultable-mapAdd a default value to a  ) that is returned as a fallback if a  cannot find a matching key0let example = fromList [('A',1)] `withDefault` 2lookup 'A' exampleJust 1lookup 'B' exampleJust 2defaultable-map$Lookup the value at a key in the mapÓIf the key is missing this falls back to returning the default value if present is an - morphism, meaning that  distributes over - operatiorns:  (. x) = . x  (do x <- m; f x) = do x <-  m;  (f x)  is also an / morphism, meaning that  distributes over / operations:  " = "  (l $ r) =  l $  r  let example = fromList [('A',1)]lookup 'A' exampleJust 1lookup 'B' exampleNothing$lookup 'B' (example `withDefault` 2)Just 2 defaultable-map"Extract the underlying map from a  map defaultable-map!Extract the default value from a  map defaultable-mapNot the same as the + instance for the underlying map type defaultable-mapNot the same as the 0 instance for the underlying map typedefaultable-mapThe underlying Map -like typedefaultable-map7An optional default value to return if a key is missingdefaultable-mapdefaultable-mapdefaultable-mapdefaultable-map   NoneÙò‹defaultable-mapGeneralized version of defaultable-mapGeneralized version of defaultable-mapGeneralized version of  defaultable-mapGeneralized version of  defaultable-mapGeneralized version of  defaultable-mapGeneralized version of  !defaultable-mapGeneralized version of  defaultable-mapdefaultable-mapdefaultable-mapdefaultable-map  !  !1      !"     #$%#$&#$'#$(#$)#$*+,-#$.+,/#$0#$1#$2#$3#$4#$56defaultable-map-1.0.0-inplaceDefaultable.MapDefaultable.Map.Generalized Data.IntMapIntMapData.SetSetfromMap singletonfromListinsert withDefaulttoMap toDefaultcontainers-0.6.5.1Data.Map.InternalMap Defaultablelookup$fMonoidDefaultable$fSemigroupDefaultable$fAlternativeDefaultable$fAltDefaultable$fApplicativeDefaultable$fApplyDefaultable$fDataDefaultable$fEqDefaultable$fFoldableDefaultable$fFunctorDefaultable$fGenericDefaultable$fGeneric1TYPEDefaultable$fOrdDefaultable$fShowDefaultable$fTraversableDefaultable$fNFDataDefaultablebaseGHC.Baseemptypure<|> Applicativefmap<>*semigroupoids-5.3.7-3cjE6unYcLpAcqITxUcIWUData.Functor.Bind.Class<.>mapApplyMonoid$Monadreturn Alternative Semigroup