śĪrŽh"«      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©ŖSafeł«None&'-07;<=>?FKQTV`'See ' documentation for a discussion of the  wrapper.yFor certain types like maps in the standard containers library that ships with GHC, the strict version of the data type: ¬), and the lazy version of the data type: ¬Z, are actually the exact same type. In this case, they're just reexports of the same type.˜That's fine when one has two separate modules with strict and lazy versions one can explicitly use, but the choice can't be automatic based on the type.}As a result, there's no way one can tell whether to use strict or lazy functions on the data. Wrapping these types in either  or 6 specifies how these types are intend to be worked on.-By default however, if one doesn't wrap, the  version is used.­­½ is a class describing key-value stores where one can add a value to container without giving a key, and the container will automatically generate a key that doesn't exist in the container.®4 is a good example of a structure with this ability.qAgain, it's intended for this to only be defined when the operation is "fast", say "O(log n)" on average or less.ÆappendGetKey v x adds the value v to x and returns both the updated x and the new key k selected.°Like Æ) but don't worry about returning the key.› is a class that represents key-value mappings where one can do inserts, deletes, updates, pretty much everything you expect from a simple key/value store. alter f k x' attempts to gets the value of the key k.If key k exists, as say it is v , it passes Just v to f.If key k does not exist, it passes Nothing to f.If the result of f is Just something, then % either inserts or updates the key k, inserting if key k0 previously didn't exist and updating if it did.If the result of f is Nothing, and the key k did exist, we deleted it.Otherwise, if the result of f is Nothing , nd the key kM did not exist, then do nothing and simply return the structure unmodified.Like =, but returns the value both before and after the alteration.iFunctions for doing inserts that don't fail on the keys being found but instead override existing values., represents types where keys can be deleted.!Attempt to delete a key and call ± if it's not found. Like 8, but also return the value at the key before deletion. Like 4 but if the key isn't found the result is undefined Like 4 but if the key isn't found the result is undefined Like A, but return the structure unmodified if the key does not exist. !Like  , but return ² the key does not exist. "Like !:, but also return the value of the key before the delete. #8Attempt to optDelete a key based on it's value and call ± if it's not found. $Like #8, but also return the value at the key before deletion. &Like #4 but if the key isn't found the result is undefined 'Like $4 but if the key isn't found the result is undefined )Like #A, but return the structure unmodified if the key does not exist. *Like # , but return ² the key does not exist. +Like *=, but also return the value of the key before the optDelete. --= represents types where new key-values pairs can be inserted.."Attempts to insert a value, calls ± if the key already exists./Like .;, but if the key already exists the behaviour is undefined.0Like .?, but if the key already exists return the structure unchanged.1Like .', but if the key already exists return ².227 represents types where existing values can be updated.;The ability for keys to be inserted or deleted is optional.3A good example of a type which conforms to this is ® , which has ³> keys of which their values can be updated in "O(log n)" time.However ® is not an instance of ( as although one can insert/delete from ®@ it alters all the other indexes which would be very unexpected.3"Updates the value of a key, calls ± if the key does not exist. 5Like 39, but if the key does not exist the result is undefined. : adjust f k x applies f to the value at key k. and puts that modified value in it's place.3If the key does not exist it should throw an error.D6Data types you can produce a one element container of.§The reason why this is a separate class instead of just the default instance is that there are contrainers where one can trivially make a singleton of but they're not “s or Bs, i.e. you can't append or add elements to them at arbitary keys.”For example, arrays certainly don't have the concept of "insert at key", only update, nor is it obvious how to append them, particularly if their ranges overlap.ABut given a key, one should be able to produce a singleton array.Hence this class.FFå is a class that simply represents data types indexable by a key that you can read from. Whilst obviously not enforced by the class, it's intended that this only be implemented for types with "fast" lookups, say O(log n) at most.Hence, F) is not implemented for list for example. Not that µp is an instance of this type, where the keys are just the set values and the unit type '()' is the "value" type.You could in theory implement F% (and indeed associated classes like 2 and ^) for structures with multiple keys, by making the key type a sum type or a list or something.G lookup k x returns Just v if k is a key, Nothing otherwise HLike G1 but throws an error for values that don't exist ILike H0 but may be undefined for keys that don't exist N0Hack to allow generalised newtype deriving from  |https://stackoverflow.com/questions/48848571/generalised-newtype-deriving-on-class-functions-with-functors/48849568#48849568 ^   !"#$&')*+%(,-./012:3456789;=>@ABC<?DEFHGIJKLMNOPQRSTUVWXYZ[\]cMLFGHIJKDE-./01123456789:;<=>?@ABCCSRT !"#$%&'()*+,,VUWX [ZY \]NOPQ ­ư  !"#$%&'()*+,,-./01123456789:;<=>?@ABCCDEFGHIJKSafee&Nonee_K  !"#$&')*+-./0123456789:;=>@ABDEFGHIJKLMRSTUVWXYZ[\]LMLFGHIJKDE-./01123456789:;=>@ABSRT !"#$&')*+VUWX [ZY\]Safegū¶·ø¹ŗ»¼½¾      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®ư±²³°“µ¶·ø¹ŗø»¼½¾æø»Ą°ĮĀĆÄÅĘĒČÉŹĖ*map-classes-0.1.0.0-CRzjlmSMbGcGICjaTBMaduControl.Class.Impl.MapControl.Class.Impl.Map.CPPControl.Class.Impl.Monadic.MapControl.Class.MapPaths_map_classesLazygetLazyStrict getStrictAlterMapalter alterLookupalterF_ UpleteMapadlete adleteLookupadleteF_ unsafeAdleteunsafeAdleteLookupunsafeAdleteF_ maybeAdlete safeAdletesafeAdleteLookup safeAdleteF_ UpsertMapupsert upsertLookupadsert adsertLookupadsertF_ DeleteMapdelete deleteLookup unsafeDeleteunsafeDeleteLookup maybeDelete safeDeletesafeDeleteLookup optDeleteoptDeleteLookup optDeleteF_unsafeOptDeleteunsafeOptDeleteLookupunsafeOptDeleteF_maybeOptDelete safeOptDeletesafeOptDeleteLookupsafeOptDeleteF_ InsertMapinsert unsafeInsert maybeInsert safeInsert UpdateMapupdate updateLookup unsafeUpdateunsafeUpdateLookup maybeUpdate safeUpdatesafeUpdateLookupadjust adjustLookupadjustF_ unsafeAdjustunsafeAdjustLookupunsafeAdjustF_ maybeAdjust safeAdjustsafeAdjustLookup safeAdjustF_ SingletonMap singleton LookupMaplookupindex unsafeIndexmember notMemberValueKeyfromCoyonedaTransformfromCoyonedaTransformFtoCoyonedaTransformtoCoyonedaTransformF unsafeAdjustFadjustF safeAdjustFunsafeOptDeleteF optDeleteFsafeOptDeleteFadsertF safeAdleteF unsafeAdleteFadleteFalterF!$fLookupMapShortByteString$fLookupMapByteString$fLookupMapByteString0$fLookupMapArray$fLookupMapSeq$fLookupMapIntSet$fLookupMapSet$fLookupMapIntMap$fLookupMapMap$fSingletonMapArray$fSingletonMapIntSet$fSingletonMapSet$fSingletonMapIntMap$fSingletonMapMap$fUpdateMapSeq$fAlterMapIntSet$fUpleteMapIntSet$fUpsertMapIntSet$fUpdateMapIntSet$fDeleteMapIntSet$fInsertMapIntSet $fAlterMapSet$fUpleteMapSet$fUpsertMapSet$fUpdateMapSet$fDeleteMapSet$fInsertMapSet$fAlterMapIntMap$fUpleteMapIntMap$fUpsertMapIntMap$fDeleteMapIntMap$fUpdateMapIntMap$fInsertMapIntMap $fAlterMapMap$fUpleteMapMap$fUpsertMapMap$fDeleteMapMap$fUpdateMapMap$fInsertMapMap$fAppendMapSeq$fAlterMapLazy$fUpleteMapLazy$fUpsertMapLazy$fDeleteMapLazy$fUpdateMapLazy$fInsertMapLazy$fSingletonMapLazy$fLookupMapLazy$fAlterMapLazy0$fUpleteMapLazy0$fUpsertMapLazy0$fDeleteMapLazy0$fUpdateMapLazy0$fInsertMapLazy0$fSingletonMapLazy0$fLookupMapLazy0$fIsStrictMapSet$fIsStrictMapIntMap$fIsStrictMapMap$fIsStrictMapStrict$fIsLazyMapArray$fIsLazyMapSet$fIsLazyMapLazy$fAlterMapLazy1$fUpleteMapLazy1$fUpsertMapLazy1$fDeleteMapLazy1$fUpdateMapLazy1$fInsertMapLazy1$fLookupMapLazy1$fAlterMapStrict$fUpleteMapStrict$fUpsertMapStrict$fDeleteMapStrict$fUpdateMapStrict$fInsertMapStrict$fLookupMapStrict seqLookupcontainers-0.5.10.2Data.Map.InternalMap AppendMapData.Sequence.InternalSeq appendGetKeyappendbaseGHC.ErrerrorGHC.BaseNothingghc-prim GHC.TypesIntMonoidData.Set.InternalSetversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName