úÎ\¬Sf‰      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone%&*+,9:;DOQRT[a Any type is instance of , you can use it with For :: For AnyType0 if you don't actually need a class constraint.XTell the compiler which class we want to use in the traversal. Should be used like this: (For :: For Show)Where Show can be any class.# is a constraint type synonym. The ‰Q instance can be derived, and any generic representation will be an instance of ! and .1 is a constraint type synonym. An instance is an ! with *at least* one constructor.1 is a constraint type synonym. An instance is an  with *exactly* one constructor.  [ is a constraint type synonym, containing the constraint requirements for an instance for t of class c$. It requires an instance of class c for each component of t.A generic function using a I works on any algebraic data type, including those with no constructors.A generic function using a 7 works on any data type with at least one constructor.A generic function using a ^ works on any data type with exactly one constructor, a.k.a. records, with multiple fields () or no fields (). is similar to ProductProfuctorI from the product-profunctor package, but using types from GHC.Generics..'Get the index in the lists returned by create and createA' of the constructor of the given value.+For example, this is the implementation of put@ that generates the binary data that the above implentation of get expects: put t = putWord8 (Š (. t)) <> gfoldMap ( ::  Binary) put t n  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm0  !"#$%&'()*+,-./n#!" mlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJ$%&'IHGFEDCBA@?>=<;:98765 4321()*+,- ./0`   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portable Trustworthy*:DORTnQCreate a value (one for each constructor), given how to construct the components. ‹ = Œ  n ( ::  Ž) [‹]  =   n ( ::  Ž) [] n is o specialized to lists.onCreate a value (one for each constructor), given how to construct the components, under an applicative effect.Here's how to implement get from the binary package: get = getWord8 ‘ \ix -> o ( ::  Binary) [get] ’ “ ix o is , specialized to ”.p(Generate ways to consume values of type t'. This is the contravariant version of o.p is , specialized to •.qq is r specialized to lists.rr is - specialized to ”.ss is - specialized to •.t.Map over a structure, updating each component.t is , specialized to (->).uGMap each component of a structure to a monoid, and combine the results.If you have a class SizeX, which measures the size of a structure, then this could be the default implementation: size = – — getSum — u ( ::  Size) (Sum — size) u is v specialized to ˜.vsMap each component of a structure to an action, evaluate these actions from left to right, and collect the results.v is , specialized to ™.w fmap = w ( ::  š) › w is - specialized to (->).x  foldMap = x ( ::  œ)  x is y specialized to ˜.y  traverse = y ( ::  ž) Ÿ y is - specialized to ™.zpCombine two values by combining each component of the structures to a monoid, and combine the results. Returns  ! if the constructors don't match. ¡ s t = ¡ (. s) (. t) <> z ( ::  ¢) ¡ s t z is { specialized to £ ¤ (˜ m){€Combine two values by combining each component of the structures with the given function, under an applicative effect. Returns ¥! if the constructors don't match.| 5liftCompare = mzipWith (For :: For Ord1) liftCompare | is } specialized to £ ¤ (˜ m)~HImplement a nullary operator by calling the operator for each component.   = ~ ( ::  ¦)   § i = ~ ( ::  ¨) (§ i) ~ is ( specialized to ©.wImplement a unary operator by calling the operator on the components. This is here for consistency, it is the same as (. ª =  ( ::  ¨) ª €FImplement a binary operator by calling the operator on the components. « = € ( ::  ¦) « (¬) = € ( ::  ¨) (¬) € is  specialized to pairs.CCreate an F-algebra, given an F-algebra for each of the components. € for f l r = ' for (\(Pair a b) -> f a b) (Pair l r)  is ( specialized to ­.‚‚ is ( specialized to ® (->).ƒ  cotraverse = ƒ ( ::   Distributive)  cotraverse ƒ is ) specialized to ­."¯°±²³nopqrstuvwxyz{|}´µ~€‚ƒ„…†‡ˆ0 ()*+,-./nopqrstuvwxyz{|}~€‚ƒ0no.qr/tuvwxyz{|}ps~€‚ƒ()*+,-  ¯°±²³nopqrstuvwxyz{|}´µ~€‚ƒ„…†‡ˆ¶       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŠŽŠŠ‘Š’“Š”ЕЖВ—Š˜Š™š›œšžŠŸŠ’ Š¡¢£¤¥Š’¦Š’§Š¨©Š¨ªŠ«¬Š«­Š’®¯°±¯°²Š³´Š’µŠ’¶Š’·Š¸¹Š¸º»¼½Š¸¾Š’¿Š¸À£¤ÁšÂÃÄÄÅÅÆÇÈÉ$one-liner-0.7-CqHsd9Cgj3ZFxdqk8L6M0FGenerics.OneLiner.InternalGenerics.OneLinerAnyTypeForADT1ADT ADTNonEmpty1 ADTNonEmpty ADTRecord1 ADTRecord Constraints1 ConstraintsCtorindexcountGenericProfunctorzeroGenericNonEmptyProfunctorplusGenericRecordProfunctorunitmult ADTRecord1'record1' ADTNonEmpty1' nonEmpty1'ADT1' generic1' Constraints1' ADTRecord'record' ADTNonEmpty' nonEmpty'ADT'generic' Constraints'absurde1fst1snd1recordrecord1nonEmpty nonEmpty1genericgeneric1 ctorIndex ctorIndex1 $fAnyTypeka$fGenericProfunctorCtor$fGenericNonEmptyProfunctorCtor$fGenericRecordProfunctorCtor$fProfunctorCtor$fGenericProfunctorTannen!$fGenericNonEmptyProfunctorTannen$fGenericRecordProfunctorTannen$fGenericProfunctorProduct"$fGenericNonEmptyProfunctorProduct $fGenericRecordProfunctorProduct$fGenericProfunctorClown $fGenericNonEmptyProfunctorClown$fGenericRecordProfunctorClown$fGenericProfunctorJoker $fGenericNonEmptyProfunctorJoker$fGenericRecordProfunctorJoker$fGenericRecordProfunctorBiff$fGenericRecordProfunctorCostar$fGenericProfunctorStar$fGenericNonEmptyProfunctorStar$fGenericRecordProfunctorStar$fGenericRecordProfunctorTagged$fGenericProfunctor(->)$fGenericNonEmptyProfunctor(->)$fGenericRecordProfunctor(->)$fADTRecord1'M1$fADTRecord1'Rec1$fADTRecord1'Par1$fADTRecord1':.:$fADTRecord1':*:$fADTRecord1'U1$fADTNonEmpty1'M1$fADTNonEmpty1'Rec1$fADTNonEmpty1'Par1$fADTNonEmpty1':.:$fADTNonEmpty1':*:$fADTNonEmpty1':+:$fADTNonEmpty1'U1 $fADT1'M1 $fADT1'Rec1 $fADT1'Par1 $fADT1':.: $fADT1':*: $fADT1':+: $fADT1'U1 $fADT1'V1$fADTRecord'M1$fADTRecord'K1$fADTRecord':*:$fADTRecord'U1$fADTNonEmpty'M1$fADTNonEmpty'K1$fADTNonEmpty':*:$fADTNonEmpty':+:$fADTNonEmpty'U1$fADT'M1$fADT'K1 $fADT':*: $fADT':+:$fADT'U1$fADT'V1createcreateAconsumecreate1createA1consume1gmapgfoldMap gtraversegmap1 gfoldMap1 gtraverse1mzipWithzipWithA mzipWith1 zipWithA1 nullaryOpunaryOpbinaryOpalgebra dialgebra gcotraverse1 $fFunctorPair$fGenericProfunctorZip$fGenericNonEmptyProfunctorZip$fGenericRecordProfunctorZip$fProfunctorZipbase GHC.GenericsGenericGHC.EnumtoEnumminBoundGHC.ListheadGHC.Base$BoundedmaxBoundlast>>=!!fromEnum'bifunctors-5.4.1-AyJo8S3Jmx6CMBX3YOLJFMData.Bifunctor.JokerJokerData.Bifunctor.ClownClownsucc.Data.Functor.ConstConst&profunctors-5.2-95z199kZ1wT5n9vMdHluoaData.Profunctor.TypesStarFunctorfmap Data.FoldableFoldablefoldMapData.Traversable Traversabletraversememptyghc-prim GHC.ClassescompareOrdData.Functor.ComposeComposeMaybeemptyMonoidGHC.Num fromIntegerNum#tagged-0.8.5-HBjpONNM7bk4tkR2ik8YoD Data.TaggedTaggednegatemappend+CostarData.Bifunctor.BiffBiffPairZiprunZipinm2outm2