`Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None%&*+,9:;<=DQRTAppend for type-level lists.=A constraint-former which applies to every field in a record.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:;<=DOQRT33Wrap up a value with a capability given by its type5TGiven a section of some functor, records in that functor of any size are inhabited.7(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 :.<7 _ 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 7 f rs to 7 g rs.=A shorthand for <.>An inverted shorthand for <.?A record of components  f r -> g r may be applied to a record of f to get a record of g.@A shorthand for ?.AA 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.B7A record with uniform fields may be turned into a list.C$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.L<Records may be shown insofar as their points may be shown. C is used to great effect here.3456789:;<=>?@ABCDEFGHIJKLMNOP3456798:;<=>?@ABC789PO:;<=>?@56NMAB34CLKJIHGFED3456789:;<=>?@ABCDEFGHIJKLMNOP97;5=8@8None %&+,/9;DOTQA proxy for field types.XGet the data payload of an V.YV+ is isomorphic to a functor something like Compose ElField ('(,) s).Z Lens for an ElField's data payload.[Shorthand for a U with a single field.QRSTUVWXYZ[\]^_` QRSTUVWXYZ[VWUTS`XYZ[QR_^]\QRSTUVWXYZ[\]^_`None*+,9:;<=DQRTcA non-unicode equivalent of ("E).dA non-unicode equivalent of (").eA shorthand for h which supplies its images.fA shorthand for i which supplies its image.gA shorthand for m which supplies its index.hETwo record types are equivalent when they are subtypes of each other.iIf 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.jCThis is a lens into a slice of the larger record. Morally, we have: &rsubset :: Lens' (Rec f ss) (Rec f rs)kThe getter of the j lens is kE, which takes a larger record to a smaller one by forgetting fields.lThe setter of the j lens is lI, which allows a slice of a record to be replaced with different values.mcThe presence of a field in a record is witnessed by a lens into its value. The third parameter to m, i, is there to help the constraint solver realize that this is a decidable predicate with respect to the judgemental equality in k.nWe 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)o&For Vinyl users who are not using the lens package, we provide a getter.p&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.cdefghijklmnopqrstcdefghijklmnopmnopijklhgfedc cdefghijklmnopqrstNoneR 79;=>@cdefg ;@=>79gfedcNoneNone %&*DORTw(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 6.y(This function differs from the original  . See w.(This function differs from the original  . See w.(This function differs from the original  . See w. uvwxyz{|}~ uvwxyz{|}~ uvwxyz{|}~ uvwxyz{|}~ None*3456798:;<=>?@ABCQRSTUVWXYZ[cdefghijklmnop     !"#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"vinyl-0.5.3-AlVcFvvXpE6Bz1gmYs9V5fData.Vinyl.TypeLevelData.Vinyl.FunctorData.Vinyl.CoreData.Vinyl.DerivedData.Vinyl.LensData.Vinyl.Class.MethodData.Vinyl.NotationData.Vinyl.Tutorial.Overview Data.Vinyl++RecAllRImageRIndexNatZSConstgetConst:.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<<*>> rtraverse recordToListreifyConstraint $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 recMaxBoundbaseGHC.ShowShowlensGHC.BasememptymconcatGHC.EnumminBoundmaxBound