Îõ³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 left 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 (mf & mx) ' ( kf mf ' ( kx mx = (mf & mx) ' ( kx mx ' ( kf mf ¦@ 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 (( kf mf) `intersection` keys (( kx mx) 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 0fromMap (Map.fromList [('A',1),('B',2),('B',3)])0Defaultable (fromList [('A',1),('B',3)]) 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 pairs"fromList [('A',1),('B',2),('B',3)]0Defaultable (fromList [('A',1),('B',3)]) Nothingdefaultable-mapInsert a key-value pair into a  !let example = fromList [('A', 1)]insert ('B', 2) example0Defaultable (fromList [('A',1),('B',2)]) Nothinginsert ('A', 0) example(Defaultable (fromList [('A',0)]) Nothing)For bulk updates, you should instead use / with ($):1fromList [('A',0),('B', 2), ('C', 3)] <|> example8Defaultable (fromList [('A',0),('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 / 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  !  !0      !"     #$%#$&#$'#$()*+#$,#$-#$.)*/#$0#$1#$2#$3#$45defaultable-map-1.0.2-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<|> Applicative*semigroupoids-5.3.7-3cjE6unYcLpAcqITxUcIWUData.Functor.Bind.Class<.><>fmapmapApplyMonoidMonadreturn Alternative Semigroup