d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portable Safe-Inferred         BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone &124=HJKM LAdd an instance for this class if the data type has exactly one constructor.This class has no methods.,Type class for algebraic data types of kind * -> *. Implement either  if the type t is not recursive, or  if the type t is recursive.The constraints needed to run  and @. It should be a list of all the types of the subcomponents of t, each applied to c.NGives the index of the constructor of the given value in the list returned by  and . ctorInfo n7 gives constructor information, f.e. its name, for the nEth constructor. The first argument is a dummy argument and can be (undefined :: t a).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.# specialized to the d applicative functor.$ specialized to the e3 applicative functor, which collects monoid values m.%#, for data types with exactly one constructor&,Get the value from the result of one of the builds+ functions that matches the constructor of t.Witness for the constraint c.Witness for the constraint c. !"#$%&'()*fg*  !"#$%&'()* !")*&'(#$% !"#$%&'()*fg) *  BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone&HM+,-./01+,-./01+,-./01+,-./01 BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone &124=HKM2LAdd an instance for this class if the data type has exactly one constructor.This class has no methods.3,Type class for algebraic data types of kind *. Implement either 7 if the type t is not recursive, or 8 if the type t is recursive.4The constraints needed to run 7 and 8@. It should be a list of all the types of the subcomponents of t, each applied to c.5NGives the index of the constructor of the given value in the list returned by 7 and 8.6 ctorInfo n7 gives constructor information, f.e. its name, for the nEth constructor. The first argument is a dummy argument and can be (undefined :: t).9XTell 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.;7 specialized to the d applicative functor.<7 specialized to the e3 applicative functor, which collects monoid values m.=4Transform a value by transforming each subcomponent.>RFold a value, by mapping each subcomponent to a monoid value and collecting those.?@Applicative traversal given a way to traverse each subcomponent.@;, for data types with exactly one constructorAIDerive a 0-ary operation by applying the operation to every subcomponent.BIDerive a unary operation by applying the operation to every subcomponent.CJDerive a binary operation by applying the operation to every subcomponent.DGGet the subcomponent by using the projector from the field information.E,Get the value from the result of one of the builds+ functions that matches the constructor of t. 234567Witness for the constraint c.>This function should return a value for each subcomponent of t$, wrapped in an applicative functor f~. It is given information about the field, which contains a projector function to get the subcomponent from a value of type t7. The type of the subcomponent is an instance of class c.4A list of results, one for each constructor of type t. Each element is the result of applicatively applying the constructor to the results of the given function for each field of the constructor.8Witness for the constraint c.>This function should return a value for each subcomponent of t$, wrapped in an applicative functor f~. It is given information about the field, which contains a projector function to get the subcomponent from a value of type t7. The type of the subcomponent is an instance of class c.>This function should return a value for each subcomponent of t that is itself of type t.4A list of results, one for each constructor of type t. Each element is the result of applicatively applying the constructor to the results of the given function for each field of the constructor.9:;<=>?@ABCDEhijklmnopqrs' 23456789:;<=>?@ABCDE35647829:DE;<=>?@ABC23564789:;<=>?@ABCDEhijklmnopqrsD  BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone&HM FGHIJKLMN FGHIJKLMN FGHIJKLMN FGHIJKLMN BSD-style (see the file LICENSE)sjoerd@w3future.com experimental non-portableNone!"&2346=HJKMO,A trick to avoid GHC from detecting a cycle.PDeep cE recursively requires all parts of the datatype to be an instance of c and of t.QXTell 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.SS1 is a constraint type synonym. An instance is an T with exactly one constructor.TT# is a constraint type synonym. The tQ instance can be derived, and any generic representation will be an instance of u.UUZ 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.VFor primitive values like v, w, x and yf, the generic representation of a value contains itself. If you use generics recursively (f.e. using P), use V9 to detect primitive values and prevent an infinite loop.WQCreate a value (one for each constructor), given how to construct the components. z = { | W (Q :: Q }) z ~ =  | W (Q :: Q }) ~ XnCreate 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 -> X (Q :: Q Binary) get   ix Y(Generate ways to consume values of type t'. This is the contravariant version of X.Z'Get the index in the lists returned by W and X' 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 ( (Z t))  \ (Q :: Q Binary) put t )Note that this assumes a straightforward  instance of Put which binary unfortunately does not provide.[.Map over a structure, updating each component.\GMap 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 =     \ (Q :: Q Size) (  size) ]sMap each component of a structure to an action, evaluate these actions from left to right, and collect the results.^cCombine two values by combining each component of the structures with the given function. Returns ! if the constructors don't match._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 =  (Z s) (Z t)  _ (Q :: Q )  s t `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.aHImplement a nullary operator by calling the operator for each component.  = a (Q :: Q )   i = a (Q :: Q ) ( i) bwImplement a unary operator by calling the operator on the components. This is here for consistency, it is the same as [.  = b (Q :: Q )  cFImplement a binary operator by calling the operator on the components.  = c (Q :: Q )  () = c (Q :: Q ) () 2OPQRSTUuVWXYZ[\]^_`abcOPQRSTUVWXYZ[\]^_`abcWXZ[\]^_`YabcTSUQRPOV+OPQRSTUuVWXYZ[\]^_`abc       !""##$%&'()*+,-./012345678 !""()9:;*<=>.+?@ABCDEFGHI""78JKLM9:;NOP<=>QRSQTUVWXYZ[\]^_`abcdefghihjhkhldmndopdqrdmsdmtdoudqvdowdmxdmydz{dz|dm}dq~dzdzddzddddzd one-liner-0.4Generics.OneLiner.ADT1Generics.OneLiner.InfoGenerics.OneLiner.Functions1Generics.OneLiner.ADTGenerics.OneLiner.FunctionsGenerics.OneLinerghc-primGHC.Prim Constraint FieldInfo SelectorInfo selectorNameproject AssociativityNotAssociativeRightAssociativeLeftAssociativeFixityInfixPrefixCtorInfoctorNameisRecordfixityctor$fFunctorFieldInfo ADT1RecordADT1 Constraints ctorIndexctorInfobuildsA buildsRecAForExtract getExtract:~>NatgetNatbuildsmbuildsbuildatparam component!!~fmapADT foldMapADT traverseADTpureADTapADTbindADTmfixADT ADTRecordADTgmapgfoldMap gtraverseop0op1op2eqADT compareADT minBoundADT maxBoundADT showsPrecADT readPrecADT memptyADT mappendADTfromIntegerADTDeepConstraintDeepisAtomcreatecreateAconsumegzipWithmzipWithzipWithAtransformers-0.4.1.0Data.Functor.IdentityIdentityData.Functor.ConstantConstant$fADT1[] $fADT1Maybe$fADT[] $fADTMaybe $fADTEither $fADTBool$fADTRecord(,,,) $fADT(,,,)$fADTRecord(,,) $fADT(,,)$fADTRecord(,)$fADT(,) $fADTRecord()$fADT()base GHC.GenericsGenericADT' GHC.TypesIntFloatDoubleCharGHC.EnumminBoundGHC.ListheadGHC.Base$BoundedmaxBoundlast>>=!!fromEnumtoEnum Data.Monoid<>Monoidsucc.getSumSum Data.MaybeNothingmempty GHC.ClassescompareOrdGHC.Num fromIntegerNumnegatemappend+ ADTRecord' ctorIndex' ctorCountf0f1f2c0 Constraints'TFCo:R:DeepConstraintct$fDeepct$fADTRecord':+:$fADTRecord':+:0$fADTRecord'M1$fADTRecord'K1$fADTRecord':*:$fADTRecord'U1$fADT'M1$fADT'K1 $fADT':*:$fADT'U1 $fADT':+:$fADT'V1TFCo:R:Constraints'M1cTFCo:R:Constraints'K1cTFCo:R:Constraints':*:cTFCo:R:Constraints':+:cTFCo:R:Constraints'U1cTFCo:R:Constraints'V1c