­      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None%&*+,9:;<=DQRT cConstraint 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.XConstraint that each Constraint in a type-level list is satisfied by a particular type.EConstraint that all types in a type-level list satisfy a constraint.Append for type-level lists.=A constraint-former which applies to every field in a record.<Remove the first occurence of a type from a type-level list.HA partial relation that gives the indices of a sublist in a larger list.=A partial relation that gives the index of a value in a list.KA mere approximation of the natural numbers. And their image as lifted by  -XDataKinds+ corresponds to the actual natural numbers.      None +2349;DIQRUsed this instead of ( to make a record lazy in its fields.This is identical to the Identity from Data.Functor.Identity in "base" except for its  instance.  !"#$%&'(     !"#$%&'(9 None%&*+,9:;<=DOQRT73Wrap up a value with a capability given by its type9TGiven a section of some functor, records in that functor of any size are inhabited.;(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 :: *.>#Two records may be pasted together.?A shorthand for >.@; _ 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 ; f rs to ; g rs.AA shorthand for @.BAn inverted shorthand for @.CA record of components  f r -> g r may be applied to a record of f to get a record of g.DA shorthand for C.EA 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.F3Given a natural transformation from the product of f and g to h8, we have a natural transformation from the product of ; f and ; g to ; h|. You can also think about this operation as zipping two records with the same element types but different interpretations.GAMap each element of a record to a monoid and combine the results.H7A record with uniform fields may be turned into a list.I$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.JVBuild a record whose elements are derived solely from a constraint satisfied by each.KkBuild a record whose elements are derived solely from a list of constraint constructors satisfied by each.T<Records may be shown insofar as their points may be shown. I is used to great effect here."789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX789:;=<>?@ABCDEFGHIJK";<=XW>?@ABCD9:VUEFGH78IJKTSRQPONML789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX=7?5A8D8None %&+,/9;DOTYA proxy for field types.`Get the data payload of an ^.a^+ is isomorphic to a functor something like Compose ElField ('(,) s).b Lens for an ElField's data payload.cShorthand for a ] with a single field.YZ[\]^_`abcdefgh YZ[\]^_`abc^_]\[h`abcYZgfedYZ[\]^_`abcdefghNone*+,9:;<=DQRTkA non-unicode equivalent of ("E).lA non-unicode equivalent of (").mA shorthand for p which supplies its images.nA shorthand for q which supplies its image.oA shorthand for u which supplies its index.pETwo record types are equivalent when they are subtypes of each other.qIf 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.rCThis is a lens into a slice of the larger record. Morally, we have: &rsubset :: Lens' (Rec f ss) (Rec f rs)sThe getter of the r lens is sE, which takes a larger record to a smaller one by forgetting fields.tThe setter of the r lens is tI, which allows a slice of a record to be replaced with different values.ucThe presence of a field in a record is witnessed by a lens into its value. The third parameter to u, i, is there to help the constraint solver realize that this is a decidable predicate with respect to the judgemental equality in k.vWe 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: )rlens :: sing r => Lens' (Rec f rs) (f r)w&For Vinyl users who are not using the lens package, we provide a getter.x&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.klmnopqrstuvwxyz{|klmnopqrstuvwxuvwxqrstponmlk klmnopqrstuvwxyz{|NoneR ;=?ABDklmno ?DAB;=onmlk NoneNone %&*DORT(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 :.(This function differs from the original  . See .(This function differs from the original  . See .(This function differs from the original  . See . }~ }~ }~ }~ None.789:;=<>?@ABCDEFGHIJKYZ[\]^_`abcklmnopqrstuvwxNone%&*+,9:;<=DOQRTau'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 ]#Newtype around functions for a to b#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.'Fold a field selection function over a ;.KA function type constructor that takes its arguments in the reverse order. A Field of a ;  is a  .Generalize algebraic sum types.Apply a function to a " value. The function must accept any variant.We can inject a a  into a ; where every field of the ; is E except for the one whose type corresponds to the type of the given  variant.Shorthand for applying  with common functors.,Apply a natural transformation to a variant.*This can be used to pull effects out of a .1Fold a field selection function over a non-empty ;. Similar to   $: find the first field that is not . Similar to   #: find the last field that is not .Apply 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.Apply 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.kBuild a record whose elements are derived solely from a list of constraint constructors satisfied by each.cGiven a proxy of type t and a 'CoRec Identity' that might be a t, try to convert the CoRec to a t.Pattern match on a CoRec by specifying handlers for each case. If the CoRec is non-empty this function is total. 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"Pattern match on a CoRec by specifying handlers for each case. The only case in which this can produce a Nothing is if the list ts is empty.Handle 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 handler##  !""#$%&'()*+,-./0123456789:;<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aabcdefghijklmnopqrstuvwxyz{|}~f"vinyl-0.6.0-6iznL5pejAW40bIVIjPu8VData.Vinyl.TypeLevelData.Vinyl.FunctorData.Vinyl.CoreData.Vinyl.DerivedData.Vinyl.LensData.Vinyl.Class.MethodData.Vinyl.CoRecData.Vinyl.NotationData.Vinyl.Tutorial.Overview Data.Vinyl Data.MonoidFirstLast AllAllSat AllSatisfiedAllConstrained++RecAllRDeleteRImageRIndexNatZSConstgetConst:.Compose getComposeLiftgetLiftThunkgetThunkIdentity getIdentity$fApplicativeLift $fFunctorLift$fFunctorLift0 $fShowThunk $fMonadThunk$fApplicativeThunk$fShowIdentity$fMonadIdentity$fApplicativeIdentity$fApplicativeCompose$fTraversableCompose$fFoldableCompose$fFunctorCompose $fShowConst$fFunctorIdentity$fFoldableIdentity$fTraversableIdentity$fStorableIdentity $fEqIdentity $fOrdIdentity$fFunctorThunk$fFoldableThunk$fTraversableThunk$fStorableCompose$fFunctorConst$fFoldableConst$fTraversableConst$fStorableConstDictRecApplicativerpureRecRNil:&rappend<+>rmap<<$>><<&>>rapply<<*>> rtraverserzipWithrfoldMap recordToListreifyConstraintrpureConstrainedrpureConstraints $fStorableRec$fStorableRec0$fOrdRec $fOrdRec0$fEqRec$fEqRec0 $fMonoidRec $fMonoidRec0 $fShowRec$fRecApplicativeu:$fRecApplicativeu[]$fTestCoercion[]Rec$fTestEquality[]RecSField LazyHListHListFieldRecElFieldFieldgetFieldfieldMaprfield=:$fStorableElField $fShowSField $fOrdSField $fEqSField $fShowElField $fOrdElField $fEqElField:~:<:≅⊆∈ REquivalentRSubsetrsubsetrcastrreplaceRElemrlensrgetrput$fRSubsetk:ss:$fRSubsetk[]ss[] $fRElemar:S $fRElemar:ZrecEq recCompare recMempty recMappend recMconcatrecAdd recSubtract recMultiplyrecAbs recSignum recNegate recMinBound recMaxBoundHandlersHandlerHMatch1match1'FoldRecfoldRecOprunOpCoRec foldCoRec coRecToRec coRecToRec'coRecMap coRecTraversefoldRec1 firstField lastFieldonCoReconField reifyDictsasAmatchmatch'match1matchNil $fMatch1t:S $fMatch1t:Z $fFoldRecass:$fFoldReckss[] $fEqCoRec $fShowCoRecbaseGHC.ShowShowlensGHC.BasememptymconcatGHC.EnumminBoundmaxBoundNothing Data.ProxyProxyghc-prim GHC.Types Constraint