c\@]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\  Safe-Infered Type-level fmap for Maybe.  Type-level mplus for Maybe. "Returns a type-level boolean from  type-booleans.  Safe-Infered]^_`a]^_`a]^_`asee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-InferedConvenient synonym. type Equal a b = b (c a b) A polykinded proxy. $Template Haskell derivation for the  type-spine and  type-cereal  packages' d and e& type families, which support generic  instances of c.  fghijklmno   see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone +A disbanded data type is an application of DCsOf t to a sum of fields  types all of which have t as their range. The use of DCsOf's first ' parameter throughout the API (e.g. in 0) supplants many ascriptions. &We avoid empty sums with a type-level Maybe.  DistMaybePlus performs , sum union on lifted sums, only introducing :+: when both arguments are  Justs. DConverts between a fields type and its product-of-fields structure. KA mapping to the structural representation of a fields type: just products ? of fields, no sums -- fields types have just one constructor. A recursive occurrence. A non-recursive occurrence. +Representation of binary type application. f is a genuine *->*->*  type, not a representation. a and b are representations. *Representation of unary type application. f is a genuine *->* type,  not a representation. a is a representation.  Sum union. The singleton sum. KThe empty sum. Used as an error type instead of a represention type, since N data types with no constructors are uninteresting from a generic programming  perspective -- there'(s just not much to be done generically. Product union. !The empty product. 0ICombines two functions that consume disbanded data types into a function N that consumes their union. All fields types must be from the same data type. (  !"#$%&'()*+,-./0p'  !"#$%&'()*+,-./0   !"#$%&'()*+,-./0psee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-Infered1The constraint  Each con sum corresponds to the constraing  forall dc in  sum. con dc. 2Fold through a type-level sum. 12qrs121212qrs  Safe-Inferedtututu  Safe-Infered345vwxyz{|}~ 345vwxy345vwxyz{|}~ see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-Infered6DT6 disbands a data type if all of its fields types have DC instances. 8&A disbanded data type is the data type's DCs annotated with it. 9The DCs3 of a data type is sum of all of its fields types. :JAny fields type can be further represented as a product-of-fields and can / be injected back into the original data type. <Range@ is the data type that contains the constructor that the fields  type dc represents. =Tag? returns a simulated type-level string that is the name of the  constructor that the dc fields type represents. 6789:;<=6789:;<=6789:;<=None> The default yoko derivations can be customised. @FHow fields type names are derived from constructor names. Defaults to  (++ "_"). AEHow applications of higher-rank data types are represented. Defaults  to [(1, B ''Par1 'Par1 ' invmap), (2, B ''Par2 'Par2 'invmap2)]. BA B> identifies the representation type, its constructor, and the + associated mapping function. For example,  is represented with  Mapping ''Par1 'Par1 'invmap. GThe default options.  yokoDefaults = YokoOptions id id. HDerive fields types and all yoko" instances for a given data type. ICustomized derivation. >?@ABCDEFGHI >?@ABCDEFGHI HI>?@ABCDEFG >?@ABCDEFGHIsee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-Infered MoneC extends a function that consumes a fields type to a function that B consumes a disbanded data type containing just that fields type. N f .|. g = one f 0 one gO f .|| g = one f 0 gP  f ||. g = f 0 one gQ disbanded0 injects a fields type into its disbanded range Rband8s a disbanded data type back into its normal data type. Since 8 is a type family, the range of band determines the t  type variable. Sinject,s a fields type into a sum of fields types. T partition@s a sum of fields type into a specified sum of fields types and  the remaining sum. Uproject5s a single fields type out of a disbanded data type. VrepsC maps a disbanded data type to its sum-of-products representation. W exact_case6 is an exactly-typed case: the second argument is the N discriminant, the first argument is the default case, and the third argument & approximates a list of alternatives.    exact_case default x $  ((C0_ ...) -> ...) O  ((C1_ ...) -> ...) N  ((C2_ ...) -> ...) In this example, C0_, C1_, and C2_$ are fields types. The other fields 3 types for the same data type are handled with the default function. X ig_from x = 'reps $ disband' x' is a convenience. It approximates the  instant-generics view, less the CEq annotations. JKLMNOPQRSTUVWXN  !"#$%&'()*+,-./03456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXB !"  0/()*+,.-$%#&' =<:;9867MPONQRLW354STUVJKXJKLMNOPQRSTUVWXsee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-InferedY FindDCs s sum returns a type-level Maybe. Just dc is a fields type  dc where = dc ~ s. ZThe conversion cnv can convert from a to t. \4The applicative functor required by the conversion. YZ[\YZ[\\Z[Y YZ[\   !"#$$%&&''()*+,-./01234567 8 9 : ; < = > ? @ A BCCDEFFGHIJKLMNOPQRSTUVWXYZ[\]^_``abcdefghijkl mnopnoqnornosnotnounovnownoxnoyz{|} ~  V W X  yoko-0.3.2Data.Yoko.TypeBasics Data.YokoData.Yoko.Each Data.Yoko.THData.Yoko.HComposData.Yoko.MaybeKindData.Yoko.TH.InternalData.Yoko.RepresentationData.Yoko.TypeSumsAuxData.Yoko.TypeSumsData.Yoko.Viewtype-cereal-0.1.1Type.Serialize.BaseencodeMaybeMap MaybePlus1IsJustJustNothingEqualProxyderiveDCsOf DistMaybePlusGenericrepobjRepRecDepPar2Par1:+:RLNVoid:*:UunDepunRecmapRecunPar1unPar2unNfoldNmapNfoldPlusmapPlusmapTimes foldTimesunDCsOf|||Eacheach:-: PartitionEmbedDTdisband DisbandedDCsDCrejoinRangeTag YokoOptionsrenamermappingsMappingcontainerTypeName containerCtor methodName yokoDefaultsyokoTH yokoTH_with EachGenericEachRepConDCOfone.|..||||. disbandedbandinject partitionprojectreps exact_caseig_fromFindDCsHComposhcomposIdiomDataTypethFaildataType dataType2Dec type-ord-0.1 Type.Ord.BaseIsEQtype-ord-spine-cereal-0.1Type.Ord.SpineSerializeComparetype-spine-0.1.2Type.Spine.Stage0Spine Serializetype-booleans-0.1 Type.BooleansTrueFalseIfAndOrNotNandNorXorBeq$fFunctorDCsOf$fEach_cxtDCsOf $fEach_cxt:+: $fEach_cxtN Partition_N partition_Nembed$fPartition_NTruexsubLsubR$fPartition_NFalsexsubLsubR$fPartition:+:subLsubR$fPartitionNsubLsubR $fEmbed:+:sup $fEmbedNsup$fInjectAtTurnRighta:+:$fInjectAtTurnLefta:+:$fInjectAtHereaN $fIsDCOfdc$fNameTargetKind$fNameTargetType$fNameTargetData$fNameBindingGroup$fNameMappings $fNameRenamer $fNameTarget$fEachGeneric:+:$fEachGenericN $fConDCOftdc$fHComposRscnv:*::*:$fHComposRscnvUU$fHComposRscnvDepDep$fHComposRscnvRecRec$fHComposcnvNt$fHComposcnv:+:t$fHComposcnvDCsOft