!/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq r s t u v w x y z { | } ~         !"#$%&'()*+,-.Safe 16;<=>?AFTmchr-data Fresh single f, and modifier upd for freshly created value chr-data Fresh single f chr-dataFresh infinite range of f, and modifier upd for freshly created value chr-dataFresh infinite range of f  Safe 16;<=>?AFTchr-dataEClass interface uses same names as Data.Map. Instances must define: , findMin, findMax, , , , i. Union is left-biased in that left operand values overwrite right operand values, but all other contextinfo (if any and9or relevant, like scope) is inherited from the right one.$chr-data Default for  when ,  (or  inserWith), and  are defined"# !$"# !$Safe167;<=>?AFST*:'chr-dataSplit at index places (inspired by/from split package). Places should be increasing, starting with an index >= 0. The number of sublists returned is one higher than the number of places.HExamples: >>> splitPlaces [2,3] [1,2,3,4,5,6,7] [[1,2],[3],[4,5,6,7]]!splitPlaces [6,7] [1,2,3,4,5,6,7][[1,2,3,4,5,6],[7],[]]!splitPlaces [0,7] [1,2,3,4,5,6,7][[],[1,2,3,4,5,6,7],[]]-splitPlaces [0,1,2,3,4,5,6,7] [1,2,3,4,5,6,7]#[[],[1],[2],[3],[4],[5],[6],[7],[]](chr-dataCombine [[x1..xn],..,[y1..ym]] to [[x1..y1],[x2..y1],..,[xn..ym]]. Each element [xi..yi] is distinct based on the the key k in xi==(k,_)*chr-dataError, with message,chr-data<A slightly more lazy version of Data.List.sortOn. See also  7https://github.com/UU-ComputerScience/uhc-util/issues/5 .2chr-data>Reduce compare results lexicographically to one compare result3chr-dataFReduce compare results lexicographically using a continuation ordering'chr-dataplaces%&'()*+,-./01234%&'()32*+,-.0/14None16;<=>?AFQSTV4 7chr-datacomposition alias8chr-data Alias for get? to avoid conflict with state get; not happy choice because of >9chr-data3functional setter, which acts like a field assigner:chr-datafunctional modify;chr-datamonadic modify & set & get<chr-datamonadic modify & set & get=chr-datamonadic modify & set & get>chr-data monadic get?chr-data monadic set@chr-datamonadic modify & setGchr-data8Wrapper around a Maybe with a default in case of NothingHchr-dataVWrapper around a Maybe with an embedded panic in case of Nothing, with a panic message56789:;<=>?@ABCDEFGH56789:?@=;<>ABCDEFHG79 94:4;4?4@4None 16;<=>?AFT556789:;<=>?@ABCDEFGHNone16;<=>?AFTV7Ichr-data VecAlloc e/chr-dataEnsure enough free slotsILMNOPQRILMNOPQRNone 16;<=>?AFT8None136;<=>?AFKT=Wchr-dataFunctionality on top of / for awareness of a scope. Minimal definition X, 'unlifts,',  'top'/'topM',  'pop'/'popM', 'push'/'pushM'gchr-dataaStacked Lookup derived from a base one, to allow a use of multiple lookups but update on top onlybchr-datapush, but only top of first argWZXY[\]^_`abcdefghiWZXY[\]^_`abcdefghi None16;<=>?AFKTVP qchr-dataVarLookupCmb abstracts the  combining' of/from a substitution. The interface goes along with VarLookup but is split off to avoid functional dependency restrictions. The purpose is to be able to combine maps only for the purpose of searching without actually merging the maps. This then avoids the later need to unmerge such mergings.dStacked VarLookup derived from a base one, to allow a use of multiple lookups but update on top onlyrchr-dataVarLookup abstracts from a Map. The purpose is to be able to combine maps only for the purpose of searching without actually merging the maps. This then avoids the later need to unmerge such mergings. The class interface serves to hide this.schr-dataLookup a key at a leveltchr-data Lookup a keyuchr-dataKeys at a levelvchr-data Keys as Setwchr-dataMake an empty VarLookupxchr-data%Make a singleton VarLookup at a levelychr-dataMake a singleton VarLookupzchr-data$Type family for value of a VarLookup{chr-data"Type family for key of a VarLookup|chr-dataLevel to lookup into}chr-dataBase level (of values, usually)qrstuvwxyz{|}{zrstuvwxy|}q None16;<=>?ACFTVX0chr-dataDefault scope lookup1chr-data Scoped item2chr-dataScopes3chr-dataScope idchr-dataFunctionality on top of  for awareness of a scopechr-data`Something at current scope is visible from given scope, i.e. given scope is inside current scope4chr-dataEnsure enough free slots5chr-dataAllocate new entry, init to point back to current, switch to it; assume enough free size. Modification is done destructively but only on newly allocated position None 16;<=>?AFT\chr-dataFully resolve lookupchr-dataFully resolve lookupchr-datadMonadically lookup a variable, resolve it, continue with either a fail or success monad continuationchr-dataInverse of a lookup"# !$WWNone 16;<=>?AFSTi# chr-data"composition with a flipped readingchr-data3functional getter, which acts like a field accessorchr-data Alias for 6? to avoid conflict with state get; not happy choice because of chr-data3functional setter, which acts like a field assignerchr-datafunctional modifychr-datamonadic modify & set & getchr-datamonadic modify & set & getchr-datamonadic modify & setchr-datacZoom state in on substructure. This regretfully does not really work, because of MonadState fundep.chr-data Alias for gets" avoiding conflict with MonadStatechr-data8Wrapper around a Maybe with a default in case of Nothingchr-dataVWrapper around a Maybe with an embedded panic in case of Nothing, with a panic message9 84444 Safe 16;<=>?AFTk7chr-data"View as head and tail, if possible555 None&'+016;<=>?AFTVchr-dataQThe trie structure, branching out on (1) kind, (2) nr of children, (3) actual key8chr-dataChild structurechr-dataPKeyable values, i.e. capable of yielding a TreeTrieKey for retrieval from a triechr-dataFull key9chr-dataKey used on 1 level of trie. Key1_Wild plays a special role, may occur in Key1_Multi only, and in there it is guaranteed to have non wild siblings, allowing easy wildcard lookup where only not all elements of the group need be a specific Key1_Single:chr-dataequal to anything;chr-data"equal to nothing, except Key1_Wild<chr-dataGSimplify a generated raw Key1 into its canonical form used for indexing=chr-dataFSimplify a generated raw Key into its canonical form used for indexingchr-data Single keychr-dataWildcard, matching anythingchr-dataNo keychr-dataNo key, delegate to next layerchr-dataKey with single childchr-dataKey with childrenchr-dataKey with 2 children>chr-dataLookup giving back possible precise result and values found whilst descending into trie (corresponding to wildcard in key in trie) and remaining when key is exhausted (corresponding to wildcard in key)chr-dataLookup giving back possible precise result and values found whilst descending into trie (corresponding to wildcard in key in trie) and remaining when key is exhausted (corresponding to wildcard in key)chr-data.Convert the lookup result to a list of results!!Safe 16;<=>?AFTchr-dataintended for parsingchr-dataCombine [[x1..xn],..,[y1..ym]] to [[x1..y1],[x2..y1],..,[xn..ym]]. Each element [xi..yi] is distinct based on the the key k in xi==(k,_)None 16;<=>?AFTchr-datathe base meta levelchr-data5for each level a map, starting at the base meta levelchr-dataDeletechr-dataAlter irrespective of level chr-datasExtract first level map, together with a construction function putting a new map into the place of the previous one chr-dataVarMp singletonchr-dataVarMp singletonchr-dataLcombine by taking the lowest level, adapting the lists with maps accordingly0qrstuvwxyz{|}     !     7None 16;<=>?AFT !chr-data=Term with a (substitutable, extractable, free, etc.) variable"chr-dataMaybe is a key#chr-data,Construct wrapper for key (i.e. lift, embed)$chr-data/Term from which free variables can be extracted%chr-dataFree vars, as a list&chr-dataFree vars, as a set'chr-data<Term in which variables can be updated with a subst(itution)(chr-dataUpdate)chr-dataUpdate with cycle detection*chr-data6The variable wich is used as a key into a substitution !"#$%&'()* '()$%&*!"#(6)6? !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a20+-,./bcdefghijklmnopqrstuvvwxyz{|}~        2 j m OP QRSTUWVXYZ[\]^      2 . / 1 , - = 6 8       2 - , + . 1 5 6 7 8                ! " # $ %&'chr-data-0.1.0.1-EXsmwflFG6tJb6poErxGsg CHR.UtilsCHR.Data.Lens.FCLabelsCHR.Data.Lens.MicroLensCHR.Data.FreshCHR.Data.Lookup.TypesCHR.Data.VecAllocCHR.Data.Lookup.InstancesCHR.Data.Lookup.StackedCHR.Data.VarLookupCHR.Data.Lookup.ScopedCHR.Data.LookupCHR.Data.FastSeqCHR.Data.TreeTrieCHR.Data.AssocLCHR.Data.VarMpCHR.Data.Substitutable CHR.Data.Lensbase Data.OldListsortOn'fclabels-2.0.3.3-FvdwuyF4VZM1BjhtHG8kUnData.Label.Monadic modifyAndGet=.=:Data.Label.DerivemkLabelData.Label.Mono:->(microlens-0.4.9.1-Il1wVteoTNOAmlNI3I8KNh Lens.Micro^.Fresh freshWithfresh freshInfWithfreshInf $fFreshInt[] $fFreshIntInt LookupApplyapplyLookuplookupfromListtoListnullsizealter singletonempty insertWithinsert unionWithunion unionsWithunionsdeletekeyskeysSetelemsmap alterDefault maybeNullmaybeHd splitPlacescombineToDistinguishedEltsByzipWithNpanic isSortedByOn sortOnLazysortByOngroupOn groupSortOn groupByOn groupSortByOnorderingLexicList orderingLexic panicJustLens^*getL^=^$==$^:modLgetl=$:fstlsndlfst3lsnd3ltrd3lisoMbWithDefaultisoMbVecAlloc $fShowVal$fShowVecAlloc$fLookupVecAllocInte$fLookupIntMapIntv$fLookupHashMapkv $fLookupMapkvStackedliftsunliftstoppoppushtopMpopMpushMtopspopspushstopsMpopsMpushsM StackedEltStacksunStacks $fPPStacks $fShowStacks$fLookupApplyl1Stacks$fLookupStackskv$fStackedStacks$fFunctorStacks$fApplicativeStacksStackedVarLookup VarLookupvarlookupWithMetaLev varlookupvarlookupKeysSetWithMetaLevvarlookupKeysSetvarlookupEmptyvarlookupSingletonWithMetaLevvarlookupSingleton VarLookupVal VarLookupKeyMetaLev metaLevVal $fPPScopes $fShowScopes$fPPScopedItem $fPPScpsLkup$fShowScopedItem$fShowScpsLkupDefaultScpsLkupScopednewswitchscopecurIsVisibleFromnewMswitchMscopeMcurIsVisibleFromMdefaultScpsLkup$fLookupScpsLkupkv$fScopedScpsLkup$fScopedScopeslookupResolveVarlookupResolveVallookupResolveAndContinueMinversefocusSeqFastSeq:++::+::::+:isEmpty firstNotEmpty$fMonoidFastSeq$fSemigroupFastSeqTreeTrieTTCtxtTreeTrieKeyabletoTreeTriePreKey1PreKey1TrTrKeyKey toTreeTrieKeyprekey1 prekey1Wild prekey1Nilprekey1Delegateprekey1WithChildprekey1WithChildrenprekey1With2Children emptyTreeTrie toListByKeyfromListByKeyWithlookupResultToListsingletonKeyableinsertByKeyWith insertByKey$fPPKey1 $fShowKey1 $fOrdKey1$fEqKey1 $fFunctorKey1$fPPKey $fPPTreeTrie$fShowTreeTrie $fGenericKey1$fEqKey$fOrdKey $fGenericKey $fShowKeyAssocLAssoc ppAssocL'ppAssocL ppAssocLV ppAssocLHppCurlysAssocL assocLMapElt assocLMapKeyassocLMapUnzip assocLKeys assocLEltsassocLGroupSortcombineToDistinguishedEltsVarMp'VarMp varmpMetaLevvarmpMpL varmpToMapmkVarMp emptyVarMp varmpIsEmpty varmpFilter|\>varmpDel varmpAltervarmpShiftMetaLevvarmpIncMetaLevvarmpDecMetaLevvarmpSelectMetaLev varmpAsMap varmpSize varmpKeys varmpKeysSetvarmpMetaLevSingletonvarmpSingletonassocMetaLevLToVarMp assocLToVarMp varmpToAssocL varmpPlus varmpUnion varmpUnionsvarmpUnionWith varmpMapMaybevarmpMapvarmpInsertWith varmpLookup $fPPVarMp' $fShowVarMp'$fLookupApplyVarMp'VarMp'$fVarLookupVarMp' $fEqVarMp' $fOrdVarMp'$fGenericVarMp'VarTerm varTermMbKey varTermMkKeyVarExtractablevarFree varFreeSet VarUpdatablevarUpd varUpdCyc ExtrValVarKey$fVarUpdatable[]subst$fVarUpdatableMaybesubst$fVarExtractable[]$fVarExtractableMaybeensureScpsLkup ScopedItemScopesScpId scpEnsurescpAlloc Data.Labelget viewMbConsTreeTrieChildrenKey1 Key1_WildKey1_Nilkey1RawToCanon keyRawToCanon lookupWith