úÎ1,/     GHC only experimentalekmett@gmail.comNoneDAn abstract name for an object, that supports equality and hashing. 2Dynamic stable names have the following property:  If sn1 :: DynamicStableName and sn2 :: DynamicStableName and  sn1 == sn2  then sn1 and sn2 were created by calls to makeStableName on  the same object. IThe reverse is not necessarily true: if two dynamic stable names are not L equal, then the objects they name may still be equal. Note in particular  that  may return a different   after an object is evaluated. 5Dynamic Stable Names are similar to Stable Pointers (Foreign.StablePtr), $ but differ in the following ways:  There is no freeDynamicStableName operation, unlike Foreign.StablePtrs. N Dynamic Stable Names are reclaimed by the runtime system when they are no  longer needed.  There is no deRefDynamicStableName operation. You can't get back from J a dynamic stable name to the original Haskell object. The reason for G this is that the existence of a stable name for an object does not J guarantee the existence of the object itself; it can still be garbage  collected. Makes a 0 for an arbitrary object. The object passed as ( the first argument is not evaluated by .  Convert a  to an . The  returned is not  necessarily unique; several s may map to the same  D (in practice however, the chances of this are small, so the result  of  makes a good hash key). None O(log n)D. Insert with a function for combining the new value and old value.    f key value mp ( will insert the pair (key, value) into mp if the key does not exist F in the map. If the key does exist, the function will insert the pair  (key, f new_value old_value) Same as  4, but with the combining function applied strictly. O(log n)(. Lookup the value at a key in the map. 6The function will return the corresponding value as a (  value)  or ! if the key isn't in the map. O(log n). The expression ( def k map) returns  the value at key k or returns the default value def ! when the key is not in the map. "#      "# NoneO(log n)D. Insert with a function for combining the new value and old value.   f key value mp ( will insert the pair (key, value) into mp if the key does not exist F in the map. If the key does exist, the function will insert the pair  (key, f new_value old_value) Same as 4, but with the combining function applied strictly. O(log n)(. Lookup the value at a key in the map. 6The function will return the corresponding value as a (  value)  or ! if the key isn't in the map. O(log n). The expression ( def k map) returns  the value at key k or returns the default value def ! when the key is not in the map. $%&'  $%&'(           stable-maps-0.0.3.3System.Mem.StableName.Dynamic!System.Mem.StableName.Dynamic.MapSystem.Mem.StableName.MapDynamicStableNamemakeDynamicStableNamehashDynamicStableNamewrapStableNameMapemptynull singletonmember notMemberinsert insertWith insertWith'lookupfindfindWithDefaultadjustghc-prim GHC.TypesInt$fEqDynamicStableNamebase Data.MaybeJustNothinggetMapanyliftAny1