úÎ!Ð’ÇŒ”      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“None%&'+,-.;<=>?EFNOQSTVceiH/ row-types)A lower fixity operator for type equality” row-typesThere doesn't seem to be a ( =.?) :: Symbol -H Symbol -> Bool, so here it is in terms of other ghc-7.8 type functions• row-typesKReturns the left list with all of the elements from the right list removed.– row-types"Type level Row modification helper row-typesfZips two rows together to create a Row of the pairs. The two rows must have the same set of labels. row-types%Map a type level function over a Row. row-types A type synonym for disjointness. row-types(Is the first row a subset of the second? row-types)Are all of the labels in this Row unique? row-types4A convenient way to provide common, easy constraints row-typesThe labels in a Row.  row-types!A null constraint of one argument— row-typesA null constraint  row-typesÿ 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.  row-typesRA metamorphism is a fold followed by an unfold. Here, we fold both of the inputs.˜ row-typesAn internal type used by the  in +.  row-typesA class to capture the idea of 3 so that it can be partially applied in a context. row-types{This data type is used to for its ability to existentially bind a type variable. Particularly, it says that for the type a, there exists a t& such that 'a ~ f t' and 'c t' holds. row-typesŠAny structure over a row in which every element is similarly constrained can be metamorphized into another structure over the same row. row-typesdA metamorphism is an unfold followed by a fold. This one is for product-like row-types (e.g. Rec). row-types`A metamorphism is an unfold followed by a fold. This one is for sum-like row-types (e.g. Var). row-types€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. row-types+A type level way to create a singleton Row. row-types Alias for  (r .! l) "H aK. It is a class rather than an alias, so that it can be partially applied. row-types Alias for K. It is a class rather than an alias, so that it can be partially applied. row-types!The minimum join of the two rows. row-types%Type level Row difference. That is, l .\\ r? is the row remaining after removing any matching elements of r from l. row-typesType level Row append row-typesType level Row element removal row-typesType level label fetching row-typesType level row renaming row-typesType level Row modification row-typesType level Row extension row-types>Does the row lack (i.e. it does not have) the specified label?  row-types1Elements stored in a Row type are usually hidden." row-typesType level version of empty# row-typesA label% row-typesOThe kind of elements of rows. Each element is a label and its associated type.' row-types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.( row-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.) row-types$A helper function for showing labels* row-types0A helper function to turn a Label directly into ™.+ row-typesFThis allows us to derive a `Forall (Map f r) ..` from a `Forall r ..`., row-types#Map preserves uniqueness of labels.- row-types Allow any  over a row-type, be usable for  .. row-types*Return a list of the labels in a row type./ row-typesDReturn a list of the labels in a row type and is specialized to the   constraint. row-types&The way to transform the empty element row-types The unfold row-typesThe fold row-typesThe input structure row-types&The way to transform the empty element row-types The unfold row-typesThe fold row-typesThe input structure0  !"#$%&'()*+,-./0'(#$%&" !./ )*+-, 47666654None%&'+,-.;<=>?EFNOQSTVceiŒŽ,š row-types‰Conversion helper to turn a Haskell record into a row-types extensible record. Note that the native Haskell type must be an instance of Generic.› row-typesxConversion helper to bring a record back into a Haskell type. Note that the native Haskell type must be an instance of Generic.œ row-typesGRZipPair is used internally as a type level lambda for zipping records. row-typesHRMap is used internally as a type level lambda for defining record maps.; row-typesA record with row r.< row-types?A pattern version of record union, for use in pattern matching.= row-types‘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.> row-typesThe empty record? row-typesThe singleton record@ row-types<Turns a singleton record into a pair of the label and value.A row-types~Record extension. The row may already contain the label, in which case the origin value can be obtained after restriction () with the label.B row-types+Update the value associated with the label.C row-types-Focus on the value associated with the label.D row-typesFocus on a sub-recordE row-typesRename a label.F row-typesRecord selectionG row-types7Record restriction. Remove the label l from the record.H row-types#Record disjoint union (commutative)I row-types$Split a record into two sub-records.J row-typesEArbitrary record restriction. Turn a record into a subset of itself.K row-typesIRemoves 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 B# 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.L row-typesA standard foldM row-typesA fold with labelsN row-types+A fold over two row type structures at onceO row-typesTurns a record into a žD from values representing the labels to the values of the record.P row-types3A function to map over a record given a constraint.Q row-types4A function to map over a record given no constraint.R row-typeswLifts 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 S.S row-types A version of R! for when there is no constraint.T row-types A version of U in which the constraint for  can be chosen.U row-types%Applicative sequencing over a record.V row-types A version of W in which the constraint for  can be chosen.W row-types”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.X row-types A version of Y in which the constraint for  can be chosen.Y row-types±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.Z row-types;Zips together two records that have the same set of labels.[ row-typesÿ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 .\ row-types7Initialize a record with a default value at each label.] row-typesFInitialize a record with a default value at each label; works over an Ÿ.^ row-typeshInitialize a record, where each value is determined by the given function over the label at that value._ row-types†Initialize a record, where each value is determined by the given function over the label at that value. This function works over an Ÿ.` row-types*Initialize a record that is produced by a .a row-types*Convert a record to a native Haskell type.b row-types,Convert a Haskell record to a row-types Rec.@"#$'./;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab@#$;'">?=@\]^_`AGJIBCDEFH<abPQRSLMNOZUTWYVX./K[<6=7?7G6H6None%&'+,-.;<=>?EFNOQSTVceiœÉ  row-typesIVMap is used internally as a type level lambda for defining variant maps.p row-typesThe variant type.q row-types†A pattern for variants; can be used to both destruct a variant when in a pattern position or construct one in an expression position.r row-typescAn unsafe way to make a Variant. This function does not guarantee that the labels are all unique.s row-types)A Variant with no options is uninhabited.t row-types2A quick constructor to create a singleton variant.u row-types*Make the variant arbitrarily more diverse.v row-types_If the variant exists at the given label, update it to the given value. Otherwise, do nothing.w row-typeshIf the variant exists at the given label, focus on the value associated with it. Otherwise, do nothing.x row-typesRename the given label.y row-typesƒConvert a variant into either the value at the given label or a variant without that label. This is the basic variant destructor.z row-types A version of y# that ignores the leftover variant.{ row-typesA trial over multiple types| row-typesXA 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 "++s} row-types&Split a variant into two sub-variants.~ row-typesGArbitrary variant restriction. Turn a variant into a subset of itself. row-typesA standard fold€ row-typesA fold with labels row-types+A fold over two row type structures at once‚ row-types4A function to map over a variant given a constraint.ƒ row-types5A function to map over a variant given no constraint.„ row-typeszLifts 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  .… row-types A form of  transformC# that doesn't have a constraint on a† row-types%Applicative sequencing over a variant‡ row-types•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.ˆ row-types²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.‰ row-typesÿ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 .Š row-typesž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.1"#$'.pqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š1#$p'"qtŠuvwxsyz{|~}‚ƒ„…€†‡ˆ.r‰None%&'+,-.;<=>?AEFNOQSTVceiÅR row-typesA p and a ;, can combine if their rows line up properly. row-types€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.‘ row-types The same as switch% but with the argument order reversed‘‘None%&'+,-.;<=>?EFNOQSTVceiƀ'"#$'.;<=>?@FGHpqsuyz{‘'#$p;'"‘>?=@GFH<qusyz{.¡      !"#$%&''())*+,-./0123456789:;<=>?@ABCDEFGHI"! JKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvFGIwxyzJKMNOQRSTVXZ\_{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–(row-types-0.2.3.0-32vy9A74cf910qgGyzSrE8Data.Row.InternalData.Row.RecordsData.Row.VariantsData.Row.SwitchData.Rowbase GHC.TypeLits KnownSymbol≈ZipMapDisjointSubsetAllUniqueLabels WellBehavedLabelsUnconstrained1Forall2 metamorph2IsAasAsForall metamorph metamorph'FoldStep.==HasTypeLacks.\/.\\.+.-.!RenameModifyExtend.\HideTypeEmptyLabelLT:->RowRshow'toKey mapForall uniqueMap freeForalllabelslabels' $fShowLabel $fIsAkkcff $fForall2aRRc $fForall2kRRc$fUnconstrained$fUnconstrained1ka $fLackslr$fIsLabelxLabel $fForallkRc $fForallkRc0 $fHasTypeklarRec:+:==empty unSingletonextendupdatefocus multifocusrenamesplitrestrict unsafeRemoveeraseeraseWithLabelseraseZiperaseToHashMapmapmap' transform transform' sequence'sequencecompose'compose uncompose' uncomposezipunsafeInjectFrontdefault'defaultA fromLabels fromLabelsAfromLabelsMapAtoNative fromNative $fNFDataRec $fBoundedRec$fOrdRec$fEqRec $fShowRec$fToNativek:*:ρ$fToNativekM1ρ$fToNativekM1ρ0$fToNativekM1ρ1$fFromNativek:*:ρ$fFromNativekM1ρ$fFromNativekM1ρ0$fFromNativekM1ρ1VarIsJust unsafeMakeVar impossible singleton diversifytrialtrial' multiTrialview $fNFDataVar$fOrdVar$fEqVar $fShowVarSwitchswitchcaseon $fSwitchRRb $fSwitchRRx<=.?DiffModifyR Unconstrained MapForall text-1.2.3.0Data.Text.InternalText FromNativeToNativeRZipPairRMap3unordered-containers-0.2.9.0-HQtYJEH7265DslRAJ09vVDData.HashMap.BaseHashMapGHC.Base ApplicativeVMap