úÎ]jSı‹      !"#$%&'()*+,-./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 W works on any algebraic data type, including those with no constructors and constants.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 p  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno1  !"#$%&'()*+,-./0p$"# !onmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLK%&'(JIHGFEDCBA@?>=<;:9876 5432)*+,-. /01a   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portable Trustworthy*:DORTpQCreate a value (one for each constructor), given how to construct the components.  =   p ( ::  ) [] ‘ = ’  p ( ::  ) [‘] p is q specialized to lists.qnCreate 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 -> q ( ::  Binary) [get] ” • ix q is - specialized to –.r(Generate ways to consume values of type t'. This is the contravariant version of q.r is - specialized to —.ss is t specialized to lists.tt is . specialized to –.uu is . specialized to —.v.Map over a structure, updating each component.v is - specialized to (->).wGMap 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 ™ w ( ::  Size) (Sum ™ size) w is x specialized to š.xsMap each component of a structure to an action, evaluate these actions from left to right, and collect the results.x is - specialized to ›.y fmap = y ( ::  œ)  y is . specialized to (->).z  foldMap = z ( ::  ) Ÿ z is { specialized to š.{  traverse = { ( ::   ) ¡ { is . specialized to ›.|pCombine 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) <> | ( ::  ¤) £ s t | 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.~ 6liftCompare = mzipWith1 (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 ¯.#±²³´µpqrstuvwxyz{|}~¶·€‚ƒ„…¸†‡ˆ‰Š1 )*+,-./0pqrstuvwxyz{|}~€‚ƒ„…1pq/st0vwxyz{|}~ru€‚ƒ„…)*+,-.   ±²³´µpqrstuvwxyz{|}~¶·€‚ƒ„…¸†‡ˆ‰Š¸9 ¹       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŒŒ‘Œ’“Œ”•Œ–Œ—Œ’˜Œ”™Œ’šŒ›œœŸ Œ¡Œ”¢Œ£¤¥¦§Œ”¨Œ”©Œª«Œª¬Œ­®Œ­¯Œ”°±²³±²´Œµ¶Œ”·Œ”¸Œ”¹Œº»Œº¼½¾¿ŒºÀŒ”ÁŒºÂ¥¦ÜÄÅÆÆÇÇÈÉÊËÌ#one-liner-0.8-HO07tEo2p3RoSuyC1wT1xGenerics.OneLiner.InternalGenerics.OneLinerAnyTypeForADT1ADT ADTNonEmpty1 ADTNonEmpty ADTRecord1 ADTRecord Constraints1 ConstraintsCtorindexcountGenericProfunctoridentityzeroGenericNonEmptyProfunctorplusGenericRecordProfunctorunitmult 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'K1 $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-3YwvKvKOmOUBtnrY2nATsfData.Bifunctor.JokerJokerData.Bifunctor.ClownClownsucc.Data.Functor.ConstConst&profunctors-5.2-A8x9rkCzCOMAb1sMDzREDAData.Profunctor.TypesStarFunctorfmap Data.FoldableFoldablefoldMapData.Traversable Traversabletraversememptyghc-prim GHC.ClassescompareOrdData.Functor.ComposeComposeMaybeemptyMonoidGHC.Num fromIntegerNum#tagged-0.8.5-HBjpONNM7bk4tkR2ik8YoD Data.TaggedTaggednegatemappend+CostarData.Bifunctor.BiffBiffPairZiprunZipinm2outm2.: