úÎĤ…žy      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxNone%&'+,-.;<=>?EFNOQSTVbdh5S')A lower fixity operator for type equalityyThere doesn't seem to be a ( =.?) :: Symbol -H Symbol -> Bool, so here it is in terms of other ghc-7.8 type functionszKReturns the left list with all of the elements from the right list removed.{"Type level Row modification helperfZips two rows together to create a Row of the pairs. The two rows must have the same set of labels.%Map a type level function over a Row. A type synonym for disjointness.(Is the first row a subset of the second?)Are all of the labels in this Row unique?4A convenient way to provide common, easy constraintsThe labels in a Row. !A null constraint of one argument|A null constraint ˙ Any structure over two rows in which every element of both rows satisfies the given constraint can be metamorphized into another structure over both of the rows. TODO: Perhaps it should be over two constraints? But this hasn't seemed necessary in practice. RA metamorphism is a fold followed by an unfold. Here, we fold both of the inputs. ŠAny structure over a row in which every element is similarly constrained can be metamorphized into another structure over the same row. dA metamorphism is an unfold followed by a fold. This one is for product-like row-types (e.g. Rec).`A metamorphism is an unfold followed by a fold. This one is for sum-like row-types (e.g. Var).}¤Proof that the given label is a valid candidate for the next step in a metamorph fold, i.e. it's not in the list yet and, when sorted, will be placed at the head.+A type level way to create a singleton Row. Alias for  (r .! l) "H aK. It is a class rather than an alias, so that it can be partially applied. Alias for K. It is a class rather than an alias, so that it can be partially applied.%Type level Row difference. That is, l .\\ r? is the row remaining after removing any matching elements of r from l.Type level Row appendType level Row element removalType level label fetchingType level row renamingType level Row modificationType level Row extension>Does the row lack (i.e. it does not have) the specified label?1Elements stored in a Row type are usually hidden.Type level version of emptyA labelOThe kind of elements of rows. Each element is a label and its associated type.!The kind of rows. This type is only used as a datakind. A row is a typelevel entity telling us which symbols are associated with which types."ÌA row is a list of symbol-to-type pairs that should always be sorted lexically by the symbol. The constructor is exported here (because this is an internal module) but should not be exported elsewhere.#$A helper function for showing labels$0A helper function to turn a Label directly into ~.%*Return a list of the labels in a row type. &The way to transform the empty element The unfoldThe foldThe input structure&The way to transform the empty element The unfoldThe foldThe input structure&  !"#$%&!" %  #$    !"4766654None%&'+,-.;<=>?EFNOQSTVbdhiż$GRZipPair is used internally as a type level lambda for zipping records.€HRMap is used internally as a type level lambda for defining record maps.0A record with row r.1?A pattern version of record union, for use in pattern matching.2‘A pattern for the singleton record; can be used to both destruct a record when in a pattern position or construct one in an expression position.3The empty record4The singleton record5<Turns a singleton record into a pair of the label and value.6~Record extension. The row may already contain the label, in which case the origin value can be obtained after restriction () with the label.7+Update the value associated with the label.8-Focus on the value associated with the label.9Focus on a sub-record:Rename a label.;Record selection<7Record restriction. Remove the label l from the record.=#Record disjoint union (commutative)>$Split a record into two sub-records.?EArbitrary record restriction. Turn a record into a subset of itself.@IRemoves a label from the record but does not remove the underlying value.,This is faster than regular record removal (°) but should only be used when either: the record will never be merged with another record again, or a new value will soon be placed into the record at this label (as in, an 7# that is split over two commands).-If the resulting record is then merged (with ]) with another record that contains a value at that label, an "impossible" error will occur.AA standard foldBA fold with labelsC+A fold over two row type structures at onceDTurns a record into a D from values representing the labels to the values of the record.E3A function to map over a record given a constraint.F4A function to map over a record given no constraint.GwLifts a natrual transformation over a record. In other words, it acts as a record transformer to convert a record of f a values to a record of g aQ values. If no constraint is needed, instantiate the first type argument with   or use H.H A version of G! for when there is no constraint.I$Applicative sequencing over a recordJ”Convert from a record where two functors have been mapped over the types to one where the composition of the two functors is mapped over the types.KħConvert from a record where the composition of two functors have been mapped over the types to one where the two functors are mapped individually one at a time over the types.L;Zips together two records that have the same set of labels.M˙1A helper function for unsafely adding an element to the front of a record. This can cause the resulting record to be malformed, for instance, if the record already contains labels that are lexicographically before the given label. Realistically, this function should only be used when writing calls to  .N7Initialize a record with a default value at each label.OFInitialize a record with a default value at each label; works over an ‚.PhInitialize a record, where each value is determined by the given function over the label at that value.Q†Initialize a record, where each value is determined by the given function over the label at that value. This function works over an ‚.9 !%0123456789:;<=>?@ABCDEFGHIJKLMNOPQ90!3425NOPQ6<?>789:;=1EFGH ABCDLIJK%@Mƒ„…†‡€ˆ‰0Š162747<6=6None%&'+,-.;<=>?EFNOQSTVbdh”â‹IVMap is used internally as a type level lambda for defining variant maps.WThe variant type.X†A pattern for variants; can be used to both destruct a variant when in a pattern position or construct one in an expression position.YcAn unsafe way to make a Variant. This function does not guarantee that the labels are all unique.Z)A Variant with no options is uninhabited.[2A quick constructor to create a singleton variant.\*Make the variant arbitrarily more diverse.]_If the variant exists at the given label, update it to the given value. Otherwise, do nothing.^hIf the variant exists at the given label, focus on the value associated with it. Otherwise, do nothing._Rename the given label.`ƒConvert a variant into either the value at the given label or a variant without that label. This is the basic variant destructor.a A version of `# that ignores the leftover variant.bA trial over multiple typescXA convenient function for using view patterns when dispatching variants. For example:   myShow :: Var ("y" '::= String :| "x" '::= Int :| Empty) -> String myShow (view x -> Just n) = "Int of "++show n myShow (view y -> Just s) = "String of "++sdA standard foldeA fold with labelsf+A fold over two row type structures at onceg4A function to map over a variant given a constraint.h5A function to map over a variant given no constraint.izLifts a natrual transformation over a variant. In other words, it acts as a variant transformer to convert a variant of f a values to a variant of g aQ values. If no constraint is needed, instantiate the first type argument with  .j A form of  transformC# that doesn't have a constraint on ak%Applicative sequencing over a variantl•Convert from a variant where two functors have been mapped over the types to one where the composition of the two functors is mapped over the types.m²Convert from a variant where the composition of two functors have been mapped over the types to one where the two functors are mapped individually one at a time over the types.n˙BA helper function for unsafely adding an element to the front of a variant. This can cause the type of the resulting variant to be malformed, for instance, if the variant already contains labels that are lexicographically before the given label. Realistically, this function should only be used when writing calls to  .o¸Initialize a variant from a producer function that accepts labels. If this function returns more than one possibility, then one is chosen arbitrarily to be the value in the variant.. !%WXYZ[\]^_`abcdefghijklmno.W!X[o\]^_Z`abcghij defklm%YnŒŽ‹W‘None%&'+,-.;<=>?AEFNOQSTVbdhœtA W and a 0, can combine if their rows line up properly.u¤Given a Variant and a Record of functions from each possible value of the variant to a single output type, apply the correct function to the value in the variant.v The same as switch% but with the argument order reversedtuvtuvtuvNone%&'+,-.;<=>?EFNOQSTVbdhC' !%012345;<=?WXZ\`abtuv'W0! tuv3425<?;=1X\Z`ab%’      !""#$$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^<=?_`abCDEGHIJKLMORcdefghijklmnopqrstuvwxyzt{||}u~€‚€ƒ„…(row-types-0.2.0.0-JM33Vq8S7S75jO7A6FXEZfData.Row.InternalData.Row.RecordsData.Row.VariantsData.Row.SwitchData.Rowbase GHC.TypeLits KnownSymbol≈ZipMapDisjointSubsetAllUniqueLabels WellBehavedLabelsUnconstrained1Forall2 metamorph2Forall metamorph metamorph'.==HasTypeLacks.\\.+.-.!RenameModifyExtend.\HideTypeEmptyLabelLT:->RowRshow'toKeylabels $fShowLabel $fForall2RRc $fForall2RRc0$fUnconstrained$fUnconstrained1ka $fLackslr$fIsLabelxLabel $fForallRc $fForallRc0 $fHasTypelarRec:+:==empty unSingletonextendupdatefocus multifocusrenamesplitrestrict unsafeRemoveeraseeraseWithLabelseraseZiperaseToHashMapmapmap' transform transform'sequencecompose uncomposezipunsafeInjectFrontdefault'defaultA fromLabels fromLabelsA $fNFDataRec $fBoundedRec$fOrdRec$fEqRec $fShowRecVarIsJust unsafeMakeVar impossible singleton diversifytrialtrial' multiTrialview $fNFDataVar$fOrdVar$fEqVar $fShowVarSwitchswitchcaseon $fSwitchRRb $fSwitchRRx<=.?DiffModifyR UnconstrainedFoldStep#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextRZipPairRMap3unordered-containers-0.2.8.0-3iSQJVS3Sio885UUC852ojData.HashMap.BaseHashMapGHC.Base Applicative unRZipPairRMap2unRMap2unRMapORVMapVMap2unVMap2unVMapOneOf