!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t uvwxyz{|}~None&',-0345;=FKSTVvinylA value with a phantom  label. It is not a Haskell /, but it is used in many of the same places a  is used in vinyl. vinylUsed this instead of ( to make a record lazy in its fields.vinylThis is identical to the Identity from Data.Functor.Identity in "base" except for its  instance.   9 None&'+,-;<=>?FSTVi- ;vinylcConstraint that all types in a type-level list satisfy each constraint from a list of constraints.AllAllSat cs ts should be equivalent to $AllConstrained (AllSatisfied cs) ts5 if partial application of type families were legal.<vinylXConstraint that each Constraint in a type-level list is satisfied by a particular type.=vinylEConstraint that all types in a type-level list satisfy a constraint.>vinylAppend for type-level lists.?vinyl=A constraint-former which applies to every field in a record.@vinyl<Remove the first occurence of a type from a type-level list.AvinylHA partial relation that gives the indices of a sublist in a larger list.Bvinyl=A partial relation that gives the index of a value in a list.Dvinyl3Project the second component of a type-level tuple.Evinyl2Project the first component of a type-level tuple.Fvinyl>Reify a list of type-level natural number indices as runtime s relying on instances of H.HvinylProduce a runtime  value corresponding to a J type.JvinylKA mere approximation of the natural numbers. And their image as lifted by  -XDataKinds+ corresponds to the actual natural numbers.;<=>?@ABCDEFGHIJKLJKLHIFGEDCBA@?>=<;None&'+,-;<=>?FQSTViQQvinylkBuild a record whose elements are derived solely from a list of constraint constructors satisfied by each.SvinylVBuild a record whose elements are derived solely from a constraint satisfied by each.Uvinyl$Sometimes we may know something for all8 fields of a record, but when you expect to be able to each8 of the fields, you are then out of luck. Surely given  "x:u.(x) we should be able to recover  x:u " (x)! Sadly, the constraint solver is not quite smart enough to realize this and we must make it patently obvious by reifying the constraint pointwise with proof.Wvinyl3Wrap up a value with a capability given by its typeYvinyl7A record with uniform fields may be turned into a list.[vinylAMap each element of a record to a monoid and combine the results.]vinyl3Given a natural transformation from the product of f and g to h8, we have a natural transformation from the product of e f and e g to e h|. You can also think about this operation as zipping two records with the same element types but different interpretations._vinylTGiven a section of some functor, records in that functor of any size are inhabited.avinylA record of components  f r -> g r may be applied to a record of f to get a record of g.cvinyle _ rs with labels in kind u gives rise to a functor Hask^u -> HaskI; that is, a natural transformation between two interpretation functors f,g' may be used to transport a value from e f rs to e g rs.evinyl(A record is parameterized by a universe u, an interpretation f and a list of rows rsM. The labels or indices of the record are given by inhabitants of the kind u"; the type of values at any label r :: u! is given by its interpretation f r :: *.hvinyl#Two records may be pasted together.ivinylA shorthand for h.jvinylA shorthand for d.kvinylAn inverted shorthand for d.lvinylA shorthand for b.mvinylA record may be traversed with respect to its interpretation functor. This can be used to yank (some or all) effects from the fields of the record to the outside of the record.vinyl<Records may be shown insofar as their points may be shown. V is used to great effect here.QRSTUVWXYZ[\]^_`abcdefghijklmnefghicdjkabl_`m]^[\nYZWXUVSTQRg7i5j8l8None +,FQSTVmavinyl#Two records may be pasted together.vinylA shorthand for .vinyle _ rs with labels in kind u gives rise to a functor Hask^u -> HaskI; that is, a natural transformation between two interpretation functors f,g' may be used to transport a value from e f rs to e g rs.vinylA shorthand for .vinylAn inverted shorthand for .vinylA record of components  f r -> g r may be applied to a record of f to get a record of g.vinylA shorthand for .vinylA record may be traversed with respect to its interpretation functor. This can be used to yank (some or all) effects from the fields of the record to the outside of the record.vinyl3Given a natural transformation from the product of f and g to h8, we have a natural transformation from the product of e f and e g to e h|. You can also think about this operation as zipping two records with the same element types but different interpretations.vinylAMap each element of a record to a monoid and combine the results.vinyl7A record with uniform fields may be turned into a list.vinyl$Sometimes we may know something for all8 fields of a record, but when you expect to be able to each8 of the fields, you are then out of luck. Surely given  "x:u.(x) we should be able to recover  x:u " (x)! Sadly, the constraint solver is not quite smart enough to realize this and we must make it patently obvious by reifying the constraint pointwise with proof.vinylVBuild a record whose elements are derived solely from a constraint satisfied by each.vinylkBuild a record whose elements are derived solely from a list of constraint constructors satisfied by each.None+,-;<=>?AFSTVivinylA non-unicode equivalent of ("E).vinylA non-unicode equivalent of (").vinylA shorthand for  which supplies its images.vinylA shorthand for  which supplies its image.vinylA shorthand for  which supplies its index.vinylETwo record types are equivalent when they are subtypes of each other.vinylIf one field set is a subset another, then a lens of from the latter's record to the former's is evident. That is, we can either cast a larger record to a smaller one, or we may replace the values in a slice of a record.vinylxAn opportunity for instances to generate constraints based on the functor parameter of records passed to class methods.vinylCThis is a lens into a slice of the larger record. Morally, we have: &rsubset :: Lens' (Rec f ss) (Rec f rs)vinylThe getter of the  lens is E, which takes a larger record to a smaller one by forgetting fields.vinylThe setter of the  lens is I, which allows a slice of a record to be replaced with different values.vinyl for classic vinyl e types.vinyldThe presence of a field in a record is witnessed by a lens into its value. The fifth parameter to , i, is there to help the constraint solver realize that this is a decidable predicate with respect to the judgemental equality in k.vinylxAn opportunity for instances to generate constraints based on the functor parameter of records passed to class methods.vinylWe can get a lens for getting and setting the value of a field which is in a record. As a convenience, we take a proxy argument to fix the particular field being viewed. These lenses are compatible with the lens library. Morally: 3rlensC :: Lens' (Rec f rs) (Rec f rs') (f r) (f r')vinyl&For Vinyl users who are not using the lens package, we provide a getter.vinyl&For Vinyl users who are not using the lens package, we also provide a setter. In general, it will be unambiguous what field is being written to, and so we do not take a proxy argument here.vinylThe type-changing field setter D with the type arguments re-ordered for more convenient usage with TypeApplications.vinylNType-preserving field setter. This type is simpler to work with than that of .vinylType-changing field lens D with the type arguments re-ordered for more convenient usage with TypeApplications.vinylLType-preserving field lens. This type is simpler to work with than that of .vinyl2A lens into a slice of the larger record. This is D with the type arguments reordered for more convenient usage with TypeApplications.vinylFTakes a larger record to a smaller one by forgetting fields. This is C with the type arguments reordered for more convenient usage with TypeApplications.vinylJAllows a slice of a record to be replaced with different values. This is C with the type arguments reordered for more convenient usage with TypeApplications.NoneNone&'+,-.;<=>?DFQSTVivinylA dressed up function of type  f a -> IO ()vinyl8Phantom tagged 'IO ()' value. Used to work with vinyl's   that wants forall a. f a -> g a.vinyl(A more concise constraint equivalent to .vinyl1The ability to work with a particular field of a e stored at a .vinyl>Get the byte offset of a field from the given origin and the + dictionary needed to work with that field.vinyl Capture a ? dictionary along with a byte offset from some origin address.vinylA simpler type for  whose  and # instances are specialized to the  functor.vinylA -backed e. Each field of such a value has statically known size, allowing for a very efficient representation and very fast field access. The 2% suffix is due to apparently taking twot functor arguments, but the first type parameter is phantom and exists so that we can write multiple instances of  and  for different functors. The first functor argument will typically be identical to the second argument. We currently provide instances for the E functor; if you wish to use it at a different type, consider using , , and 7 which work with any functor given that the necessary  instances exist.vinyl Create an  from a e.vinyl Create an  from a eM. This should offer very fast field access, but note that its lens API (via  and ) is restricted to the  functor.vinyl Create a e from an .vinyl Create a e from an .vinylvJust like unsafePerformIO, but we inline it. Big performance gains as it exposes lots of things to further inlining.  Very unsafe@. In particular, you should do no memory allocation inside an  block. On Hugs this is just unsafePerformIO.Copied from the text packagevinyl$Set a field in a record stored at a .vinyl$Get a field in a record stored at a .vinylGet a field from an .vinyl Set a field.vinylA lens for a field of an .vinyl"Get a subset of a record's fields.vinyl"Set a subset of a record's fields.vinylField accessors for  specialized to  as the functor.NoneT egijkl iljkegNone&',-;<=>?FSTVi vinyl0Defines a constraint that lets us index into an  in order to produce a e using .vinylCAn array-backed extensible record with constant-time field access.vinyl Convert a e into an  for constant-time field access.vinyl Convert an  into a e.vinylGet a field from an .vinylSet a field in an .vinyl Define a lens for a field of an .vinyl"Get a subset of a record's fields.vinylSSet a subset of a larger record's fields to all of the fields of a smaller record. None&'+,-;<=>?FQSTViJvinyl3Shorthand for working with records of fields as in  and .vinyl=Defines a constraint that lets us extract the label from an  . Used in  and .vinylProxy for label typevinylJConstraint that a label is associated with a particular type in a record.vinylA proxy for field types.vinylPHeterogeneous list whose elements are left as-is during list construction (cf. ).vinylJHeterogeneous list whose elements are evaluated during list construction.vinylAn 7 of named fields to provide constant-time field access.vinylA record of named fields.vinylAlias for Field specvinylGet the data payload of an .vinylGet the label name of an .vinyl+ is isomorphic to a functor something like Compose ElField ('(,) s).vinyl Lens for an ElField's data payload.vinylOperator for creating an  . With the -XOverloadedLabels) extension, this permits usage such as,  #foo =: 23 to produce a value of type ElField ("foo" ::: Int).vinyl Get a named field from a record.vinyl:Get the value associated with a named field from a record.vinylSet a named field. rputf' #foo 23 sets the field named #foo to 23.vinyl-Set a named field without changing its type.  rputf #foo 23 sets the field named #foo to 23.vinylA lens into a e identified by a .vinylA type-preserving lens into a e identified by a .vinyl#A lens into the payload value of a e field identified by a .vinyl3A type-preserving lens into the payload value of a e field identified by a .vinylShorthand for a  with a single field.vinyl)Map a function between functors across a e8 taking advantage of knowledge that each element is an .vinyl Construct a e with  elements.vinylOperator synonym for .vinyl Produce a e of the labels of a e of s.8 None.;=>?FSTVi vinyl-Concise record construction syntax. Example: record ( name "Joe", age 23). instance forall s a b. (KnownSymbol s, b ~ ElField '(s,a)) => IsLabel s (a -> b) where #if 804 < 802 fromLabel _ = Field s a #else fromLabel = Field s  a #endifConcise  lenses. Example myRec & #name %~ map toUpper.iCredit to Tikhon Jelvis who shared this technique on the Haskell-Cafe mailing list on December 23, 2017. None&'+,-;<=>?FQSTVi  vinyl,Apply a typeclass method to each field of a e.vinylAGenerate a record from fields derived from type class instances.vinylShorthand for combining  and .vinyl&A mapping of record contexts into the ) function space. We explicitly match on $ to pick out the payload type, and Compose to pick out the inner-most context. All other type constructor contexts are understood to not perform any computation on their arguments.vinyl#The interpretation function of the  symbols.vinyl=When we wish to apply a typeclass method to each field of a e, we typically care about typeclass instances of the record field types irrespective of the record's functor context. To expose the field types themselves, we utilize a constraint built from a defunctionalized type family in the J method. The symbols of the function space are defined by this data type.vinyl(This function differs from the original  in that it takes an argument. In some cases, you will already have a record of the type you are interested in, and that can be passed an the argument. In other situations where this is not the case, you may need the interpretation function of the argument record to be Const () or Proxy. so the you can generate the argument with `.vinyl(This function differs from the original  . See . vinyl(This function differs from the original  . See .!vinyl(This function differs from the original  . See ."vinyl,Apply a typeclass method to each field of a Rec f ts using the  instance for fS to lift the function into the functor. This is a commonly-used specialization of  composed with .#vinyl,Apply a typeclass method to each field of a . This is a specialization of . !"#"# ! None&',-7;<=>?FQSTVei+(vinylTIsomorphism between a syntactically noisy value and a concise one. For types like, P, we prefer to work with values of the underlying type without writing out the  constructor. For  f g a, aka  (f :. g) a2, we prefer to work directly with values of type f (g a).This involves the so-called higher-kinded data type family. See  8http://reasonablypolymorphic.com/blog/higher-kinded-data for more discussion.,vinylConversion between 6 and e). It is convenient to build and consume 6' values to reduce syntactic noise, but e9 has a richer API that is difficult to build around the ) type family./vinylLike rapply: record of components  f r -> g r may be applied to a record of f to get a record of g.1vinylThe implementation of ; is broken into a type class to permit unrolling of the recursion across a record. The function mapped across the vector hides the )C type family under a newtype constructor to help the type checker.3vinylA wrapper for an );-simplified value. That is, noisy value constructors like  and # are ellided. This is used in the 2H type class method, but may be ignored by users whose needs are met by ; and 9.9vinylLike rmap4, but the supplied function is written against the )-simplified types. This is ; sandwiched in between - and ..:vinylThis is 9n specialized to a type at which it does not change interpretation functor. This can help with type inference.;vinylThis is rmap for 6z. We apply a natural transformation between interpretation functors to transport a record value between interpretations.<vinylWork with values of type  a as if they were of type a.=vinylWork with values of type  a as if they were of type a.CvinylWork with values of type    (->) f g a as if they were of type  f a -> g a.DvinylWork with values of type  f g a as if they were of type f (g a).EvinylWork with values of type  '(s,a) as if they were of type a.FvinylWork with values of type  a! as if they were simple of type a.(+*),.-/0123456789:;6879:;34512/0,.-(+*)87 None,-;<=>?FSTei= MvinylBuild a e= from a tuple. An example would be building a value of type  Rec f '[a,b]" from a tuple of values with type  '(f a, f b).PvinylConvert between an 6 and an isomorphic tuple.Qvinyl Convert an 6> to a tuple. Useful for pattern matching on an entire record.Rvinyl Build an 6 from a tuple.Svinyl Apply the 6: type constructor to a type-level tuple of its arguments.Tvinyl Apply the e: type constructor to a type-level tuple of its arguments.UvinylConvert a tuple of types formed by the application of a common type constructor to a tuple of the common type constructor and a list of the types to which it is applied in the original tuple. E.g. (TupleToRecArgs f (f a, f b) ~ (f, [a,b]).Vvinyl Convert a e to a tuple going through )F to reduce syntactic noise. Useful for pattern matching on an entire e.WvinylBuild a e from a tuple passing through 66. This admits the most concise syntax for building a e. For example, 0xrec ("joe", 23) :: Rec Identity '[String, Int].XvinylBuild a FieldRec from a tuple of  values. MNOPQRSTUVWX UTSPQROVWMNXNonee>IvQRSTUVWXYZ[\]^_`abcdegfhijklmn"#,-./016789;NRQVWX"#NRQVWX,-./016789; None ,->?FSTk gvinylFor the type-level list ts, g f ts a3 is a curried function type from arguments of type HKD f t for t in ts, to a result of type a.:set -XTypeOperators<:kind! CurriedX (Maybe :. Identity) '[Int, Bool, String] Int:CurriedX (Maybe :. Identity) '[Int, Bool, String] Int :: *0= Maybe Int -> Maybe Bool -> Maybe [Char] -> InthvinylFor the type-level list ts, h f ts a3 is a curried function type from arguments of type f t for t in ts, to a result of type a..:kind! CurriedF Maybe '[Int, Bool, String] Int,CurriedF Maybe '[Int, Bool, String] Int :: *0= Maybe Int -> Maybe Bool -> Maybe [Char] -> IntivinylFor the list of types ts, i ts a7 is a curried function type from arguments of types in ts to a result of type a.':kind! Curried '[Int, Bool, String] Int%Curried '[Int, Bool, String] Int :: *= Int -> Bool -> [Char] -> IntkvinylN-ary version of  over functorial records.Example specialized signatures:  rcurry :: (Rec Maybe '[Int, Double] -> Bool) -> Maybe Int -> Maybe Double -> Bool rcurry :: (Rec (Either Int) '[Double, String, ()] -> Int) -> Either Int Double -> Either Int String -> Either Int () -> Int rcurry :: (Rec f '[] -> Bool) -> Bool lvinylN-ary version of  over pure records.Example specialized signatures:  rcurry' :: (Rec Identity '[Int, Double] -> Bool) -> Int -> Double -> Bool rcurry' :: (Rec Identity '[Double, String, ()] -> Int) -> Double -> String -> () -> Int rcurry' :: (Rec Identity '[] -> Bool) -> Bool mvinylN-ary version of  over functorial records.Example specialized signatures: runcurry :: (Maybe Int -> Maybe Double -> String) -> Rec Maybe '[Int, Double] -> String runcurry :: (IO FilePath -> String) -> Rec IO '[FilePath] -> String runcurry :: Int -> Rec f '[] -> Int nvinylN-ary version of  over pure records.Example specialized signatures: |runcurry' :: (Int -> Double -> String) -> Rec Identity '[Int, Double] -> String runcurry' :: Int -> Rec Identity '[] -> Int Example usage: sf :: Rec Identity '[Bool, Int, Double] -> Either Int Double f = runcurry' $ b x y -> if b then Left x else Right y ovinyl"Apply an uncurried function to an 6.pvinyl!Apply an uncurried function to a e like m6 except the function enjoys a type simplified by the 35 machinery that strips away type-induced noise like , , and .qvinyl0Lift an N-ary function to work over a record of  computations.)runcurryA' (+) (Just 2 :& Just 3 :& RNil)Just 5*runcurryA' (+) (Nothing :& Just 3 :& RNil)Nothingrvinyl%Lift an N-ary function over types in g to work over a record of d ) computations. A more general version of q.Example specialized signatures: KruncurryA :: (g x -> g y -> a) -> Rec (Compose Maybe g) '[x, y] -> Maybe a ghijlkmnopqr jlkmnopqrihgNone&'+,-;<=>?FQSTVdiuvinylu'Handlers ts b', is essentially a list of functions, one for each type in ts. All functions produce a value of type ba. Hence, 'Handlers ts b' would represent something like the type-level list: [t -> b | t in ts ]vvinyl#Newtype around functions for a to bxvinyl#Helper for handling a variant of a D: either the function is applied to the variant or the type of the 5 is refined to reflect the fact that the variant is not3 compatible with the type of the would-be handler.zvinyl'Fold a field selection function over a e.|vinylKA function type constructor that takes its arguments in the reverse order.vinyl A Field of a e  is a  .vinylGeneralize algebraic sum types.vinylApply a function to a " value. The function must accept any variant.vinylWe can inject a a  into a e where every field of the e is E except for the one whose type corresponds to the type of the given  variant.vinylShorthand for applying  with common functors.vinyl,Apply a natural transformation to a variant.vinyl*This can be used to pull effects out of a .vinyl1Fold a field selection function over a non-empty e.vinyl Similar to $: find the first field that is not .vinyl Similar to #: find the last field that is not .vinylApply a type class method on a . The first argument is a  value for a list of  constructors. For example, onCoRec [pr|Num,Ord|] (> 20) r-. If only one constraint is needed, use the pr1 quasiquoter.vinylApply a type class method on a . The first argument is a  value for a list of  constructors. For example, onCoRec [pr|Num,Ord|] (> 20) r-. If only one constraint is needed, use the pr1 quasiquoter.vinylkBuild a record whose elements are derived solely from a list of constraint constructors satisfied by each.vinylIf a , is a variant of the requested type, return  that value; otherwise return .vinylLike %, but for any interpretation functor.vinylPattern match on a CoRec by specifying handlers for each case. Note that the order of the Handlers has to match the type level list (t:ts).:{Mlet testCoRec = Col (Identity False) :: CoRec Identity [Int, String, Bool] inmatch testCoRec $? (H $ \i -> "my Int is the successor of " ++ show (i - 1))' :& (H $ \s -> "my String is: " ++ s)P :& (H $ \b -> "my Bool is not: " ++ show (not b) ++ " thus it is " ++ show b) :& RNil:}'"my Bool is not: True thus it is False"vinylHandle a single variant of a D: either the function is applied to the variant or the type of the 5 is refined to reflect the fact that the variant is not2 compatible with the type of the would-be handlervinylA C is either the first possible variant indicated by its type, or a ) that must be one of the remaining types.vinylA  whose possible types are ts may be used at a type of  whose possible types are t:ts.uvwxyz{|}~|}~z{xyvwu  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgghijklmnopqrstuvwxyz{|}~wxsyzq{|m}ifdb                         ! " # $ % & ' ( ) * + , - . / / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n opqrstuvwwxyyz{|}~ "vinyl-0.9.2-8mjy1ETg7QeEaDMGfSqeAtData.Vinyl.FunctorData.Vinyl.TypeLevelData.Vinyl.CoreData.Vinyl.RecursiveData.Vinyl.LensData.Vinyl.SRecData.Vinyl.ARecData.Vinyl.DerivedData.Vinyl.SyntaxData.Vinyl.Class.MethodData.Vinyl.XRecData.Vinyl.FromTupleData.Vinyl.CurryData.Vinyl.CoRecData.Vinyl.Tutorial.OverviewData.Vinyl.Notation Data.Vinyl Data.MonoidFirstLastElFieldFieldConstgetConst:.Compose getComposeLiftgetLiftThunkgetThunkIdentity getIdentity$fShowIdentity$fMonadIdentity$fApplicativeIdentity $fShowThunk $fMonadThunk$fApplicativeThunk$fApplicativeLift $fFunctorLift$fFunctorLift0 $fShowCompose$fApplicativeCompose$fTraversableCompose$fFoldableCompose$fFunctorCompose $fEqConst $fShowConst$fStorableElField $fShowElField$fRealFracElField$fFloatingElField$fFractionalElField $fRealElField$fMonoidElField$fSemigroupElField $fNumElField$fFunctorIdentity$fFoldableIdentity$fTraversableIdentity$fStorableIdentity $fEqIdentity $fOrdIdentity$fFunctorThunk$fFoldableThunk$fTraversableThunk$fStorableCompose$fFunctorConst$fFoldableConst$fTraversableConst$fStorableConst $fOrdElField $fEqElField AllAllSat AllSatisfiedAllConstrained++RecAllRDeleteRImageRIndexRLengthSndFstIndexWitnessesindexWitnessesNatToIntnatToIntNatZS $fNatToIntS $fNatToIntZ$fIndexWitnesses:$fIndexWitnesses[]RPureConstraintsrpureConstraintsRPureConstrainedrpureConstrainedReifyConstraintreifyConstraintDict RecordToList recordToListRFoldMap rfoldMapAuxRZipWithrzipWithRecApplicativerpureRApplyrapplyRMaprmapRecRNil:&rappend<+><<$>><<&>><<*>> rtraverserfoldMap $fStorableRec$fStorableRec0$fOrdRec $fOrdRec0$fEqRec$fEqRec0 $fMonoidRec $fMonoidRec0$fSemigroupRec$fSemigroupRec0$fTestCoercion[]Rec$fTestEquality[]Rec$fRMapu: $fRMapu[] $fRApplyu: $fRApplyu[]$fRecApplicativeu:$fRecApplicativeu[] $fRZipWithu: $fRZipWithu[] $fRFoldMapu: $fRFoldMapu[]$fRecordToListu:$fRecordToListu[] $fShowRec$fReifyConstraintacf:$fReifyConstraintucf[]$fRPureConstrainedac:$fRPureConstraineduc[]$fRPureConstraintsacs:$fRPureConstraintsucs[]:~:<:≅⊆∈ REquivalentRSubset RecSubset RecSubsetFCtxrsubsetCrcastC rreplaceCRElemRecElem RecElemFCtxrlensCrgetCrputCrgetrput'rputrlens'rlensrsubsetrcastrreplace$fRecElemaRecrr'::S$fRecElemaRecrr'::Z$fRecSubsetkRec[]ss[]$fRecSubsetkRec:ss: FieldOffsetFieldOffsetAux fieldOffset StorableAtSRecSRecNT getSRecNTSRec2toSRec2toSRec fromSRec2fromSRec pokeField peekFieldsgetsputslens srecGetSubset srecSetSubset$fFieldOffsetAuxaf:tS$fFieldOffsetAuxaf:tZ$fRecSubset(,)SRecrsssis$fRecSubset(,)SRec2rsssis$fRecElem(,)SRectttstsi$fRecElem(,)SRec2tttstsi$fFieldOffsetkftstIndexableFieldARectoARecfromARecagetaputalens arecGetSubset arecSetSubset$fRecSubsetkARecrsssis$fRecElemaARectt'::S$fRecElemaARectt'::Z $fOrdARec$fEqARec $fShowARec$fIndexableFieldktst AllFields KnownFieldLabelHasField FieldTypeSField LazyHListHList AFieldRecFieldRec:::getFieldgetLabelfieldMaprfield=:rgetfrvalfrputf'rputfrlensfL'rlensfLrlensf'rlensf=:=rmapfrpuref<<$$>>rlabels $fShowSField $fOrdSField $fEqSField$fIsLabelsLabel$fKnownFieldk(,) $fEqLabel $fShowLabel$fIsLabels(->) RecMapMethod rmapMethod RecPointed rpointMethod PayloadTypeApplyFieldTyper FieldTyperrecEq recCompare recMempty recMappend recMconcatrecAdd recSubtract recMultiplyrecAbs recSignum recNegate recMinBound recMaxBound rmapMethodF mapFields$fRecPointedacf:$fRecPointeducf[]$fRecMapMethodacf:$fRecMapMethoducf[]IsoHKDHKDunHKDtoHKDIsoXRecfromXRectoXRecXRApplyxrapplyXRMapxrmapAuxXDataunXXRecXRNil::&rmapX rmapXEndoxrmap$fIsoHKDTYPEProducta$fIsoHKDTYPESuma$fIsoHKDTYPELasta$fIsoHKDTYPEFirsta$fIsoHKDTYPEMaybea$fIsoHKDTYPEEitherb$fIsoHKDTYPEIOa$fIsoHKDuLifta$fIsoHKDuComposea$fIsoHKD(,)ElField(,)$fIsoHKDTYPEIdentitya $fIsoXRecaf: $fIsoXRecuf[] $fXRApplyafg:$fXRApplyufg[] $fXRMapafg: $fXRMapufg[]TupleRecrecordListToHKDTuple TupleXRec xrecTuplexrecX UncurriedXRec UncurriedRecTupleToRecArgsruplexrecfieldRec$fTupleXRecuf:$fTupleXRecuf:0$fTupleXRecuf:1$fTupleXRecuf:2$fTupleXRecuf:3$fTupleXRecuf:4$fTupleXRecuf:5$fTupleRecuf(,,,,,,,)$fTupleRecuf(,,,,,,)$fTupleRecuf(,,,,,)$fTupleRecuf(,,,,)$fTupleRecuf(,,,)$fTupleRecuf(,,)$fTupleRecuf(,)CurriedXCurriedFCurried RecordCurryrcurryrcurry'runcurry runcurry' xruncurry runcurryX runcurryA' runcurryA$fRecordCurry:$fRecordCurry[]HandlersHandlerHMatch1match1'FoldRecfoldRecOprunOpCoRec foldCoRec coRecToRec coRecToRec'coRecMap coRecTraversefoldRec1 firstField lastFieldonCoReconField reifyDictsasAasA'matchmatch1matchNil restrictCoRec weakenCoRec $fEqCoRec $fShowCoRec $fFoldRecass:$fFoldReckss[] $fMatch1t:S $fMatch1t:Zghc-prim GHC.TypesSymbolbaseGHC.BaseFunctorGHC.ShowShowIntPokerTaggedIOGHC.PtrPtrForeign.StorableStorableinlinePerformIO ForeignPtr FieldPayloadmemptymconcatGHC.EnumminBoundmaxBoundfmapData.Semigroup.InternalProductSum Data.Tuplecurryuncurry ApplicativeNothing Data.ProxyProxy ConstraintJust