qw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx y z { | } ~   (Array a) is similar to (Data.Array.IO.IOArray  a)$, but without boundary information. (newArray i a) is similar to (Data.Array.IO.newArray (0, i) a).  writeArray is similar to Data.Array.IO.writeArray, but without boundary check.  readArray is similar to Data.Array.IO.readArray, but without boundary check.      Conversion to  is achieved by the I type class. 3If a represents the natural number n at the type level then (Succ a) represents (1 + n) at the type level. 4Zero represents 0 at the type level (  !"#$%&'()*+,-./01234(43210/.-,+*)('&%$#"!  (  !"#$%&'()*+,-./01234,Identifier-consuming computation with sets. i is a type-level integer.  A computation of type  (ICCS i k a) % gets 32 sets numbered from 0 to 31, i maps numbered from 1 to i., an infinite list of different identifiers,  and returns a value of type a. "Identifier-consuming computation. i is a type-level integer.  A computation of type  (ICC i k a)  gets i maps numbered from 0 to i0-1, an infinite list of different identifiers,  and returns a value of type a. 2Helps to store a range of maps numbered from 0 to i-1.  For example,  (Maps0 I3 k) is similar to E(forall a . Map I2 k a, forall a . Map I1 k a, forall a . Map I0 k a). 2Helps to store a range of sets numbered from 0 to i-1.  For example,  (Sets I3 k) is similar to (Set I2 k, Set I1 k, Set I0 k). Finite sets of ( k) values. C The first parameter has a role only in the other implementations. Finite maps from keys ( k) to values a. C The first parameter has a role only in the other implementations. Identifiers indexed by k. (Id k)' can be seen as a set of identifiers. TThe possible identifier indexes form a recursive set. An identifier index is either 8 an uninstantiated type variable (inside invocations of  and ), or   (a :|: b), where a and b are identifier indexes. Equality check of identifiers. C The first parameter has a role only in the other implementations. Insert a new key and value in the map. If the key is already present in the map, the associated value is replaced with the supplied value. pDelete a key and its value from the map. When the key is not a member of the map, the original map is returned. 'Look up the value at a key in the map. Union of two maps. "Unsafe equality coercion of maps. mThe two maps are equal, so every link to the first map could be safely replaced by a link to the second map. - It is actually safe in this implementation. CReturn the value computed by an identifier-consuming computation.  forall k) ensures that the identifiers indexed by k/ are inaccessible to the rest of the program. MReturn the value computed by an identifier-consuming computation with sets.  forall k) ensures that the identifiers indexed by k/ are inaccessible to the rest of the program. F  !"#$%&'()*+,-./012346,Identifier-consuming computation with sets. i is a type-level integer.  A computation of type  (ICCS i k a) % gets 32 sets numbered from 0 to 31, i maps numbered from 1 to i., an infinite list of different identifiers,  and returns a value of type a. 7"Identifier-consuming computation. i is a type-level integer.  A computation of type  (ICC i k a)  gets i maps numbered from 0 to i0-1, an infinite list of different identifiers,  and returns a value of type a. 82Helps to store a range of maps numbered from 1 to i.  For example,  (Maps1 I3 k) is similar to E(forall a . Map I3 k a, forall a . Map I2 k a, forall a . Map I1 k a). :2Helps to store a range of sets numbered from 0 to i-1.  For example,  (Sets I3 k) is similar to (Set I2 k, Set I1 k, Set I0 k). <Family of finite sets of keys (? k). ? For efficiency reasons, use only with concrete type integers:  Set I0 k  Set I1 k  Set I2 k  ... > Family of finite maps from keys (? k) to values a. ? For efficiency reasons, use only with concrete type integers:  Map I0 k a  Map I1 k a  Map I2 k a  ... ?Identifiers indexed by k. (Id k)' can be seen as a set of identifiers. TThe possible identifier indexes form a recursive set. An identifier index is either 8 an uninstantiated type variable (inside invocations of H and I), or   (a :|: b), where a and b are identifier indexes. @Equality check of identifiers. G The first map parameter is the witness that the identifiers are sane. 1The first parameter prevents identifiers of type ? (a :|: a)/ which could cause strange runtime behaviour.  For example, (  x ==   x) should be False in theory, but during runtime (  x) and (  x)# are exactly the same identifiers. AO(1). Insert a new key and value in the map. If the key is already present in the map, the associated value is replaced with the supplied value. 3After insertion, the original map may not be used. BO(1)). Look up the value at a key in the map. EO(1)r. Delete a key and its value from the map. When the key is not a member of the map, the original map is returned. 2After deletion, the original map may not be used. FO(0). Union of two maps. Linearity constraints: ! After union, the component maps may also be used. H After insertion into either components, the union map may not be used. E After insertion into the union map, the components may not be used. G"Unsafe equality coercion of maps. mThe two maps are equal, so every link to the first map could be safely replaced by a link to the second map. HCReturn the value computed by an identifier-consuming computation.  forall k) ensures that the identifiers indexed by k/ are inaccessible to the rest of the program. IMReturn the value computed by an identifier-consuming computation with sets.  forall k) ensures that the identifiers indexed by k/ are inaccessible to the rest of the program. H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI567899:;;<=>?@ABCDEFGHIH  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHILO(1)_. Insert a new key in the set. If the key is already in the set, the original set is returned. 3After insertion, the original set may not be used. L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM?@><AEBCFDG:;897H6I=5KJLMJKLMNIdentifiers with static data. N  !"#$%&'()*+,-./0123456789:;<=>?@DFGHINOPQRSTUVW NOQRPTSUVW NOOPQRSTUVWXYZ[\]^_`abcdefg^_`bcagfd[]\eXZYXZYYZ[]\\]^_`abcdefghijklmnopqrstuvwnoprsqwvtkmluhjihjiijkmllmnopqrstuvw xxx yzyzyz {|}~ {|}~ {|}~   R  !"#$%&'()*+,-./0123456789:;<=>?@DGHILM !Runs all unit tests found in the  linear-maps package.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghh\[_]defgijklmnopqrstuvwxijklmnopqrstuvwx y   o z { | ] _ } ~ x      y\[_`d]xyyPQRTVYYXbcZ[_\`aSU]^ linear-maps-0.6Data.Sequence.ProfileControl.FunctorData.Subtyping Data.TypeInt Data.IdMapData.IdMap.StaticData.Sequence.IdMap2Data.Sequence.IdMapData.Sequence.IdMap.TestsData.Sequence.IdMap.ProfileData.IdSequenceData.List.IdMapData.Graph.IdMapData.Graph.IdMap.Tests Data.LinkMapData.LinkMap.Tests Test.IdMapData.Control.Kvantum.VoidData.Control.KvantumData.Array.Simpleghc-prim GHC.TypesData.IdMap.Core.PureData.IdMap.Core.FastData.IdMap.Coreprof1prof2Functor3fmap3Functor2fmap2Incl2left2right2Inclleftright:|:Inum induction induction' induction''I32I31I30I29I28I27I26I25I24I23I22I21I20I19I18I17I16I15I14I13I12I11I10I9I8I7I6I5I4I3I2I1I0SuccZero MaplikeClassICCSICCMapsPlusMapSetsPlusSetSetMaplikeMapIdequalByinsertlookUpmember unsafeInsertdeleteunionunsafeEquivalentrunICCrunICCS!inserts setInsert setInserts:.ViewL:<EmptyLViewR:>EmptyRSeqempty singleton><<||>viewrviewltoListfromListtestspreviousnextvalueupdate insertBeforenubId fromList'TaskVisitReturnChildrendepthFirstWalk'depthFirstWalk postOrderWalksccmapWalk toFunctionrelationToFunctiontestWalk testPrWalk testMapWalktestSCC withGraphLinkMaplinkMaplinkfollowsame notMemberKcreatehitkillrenewjoinArrayIntnewArray writeArray readArray.: flattenJust