rfn      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.com Safe-Inferred Type-level fmap for Maybe.  Type-level mplus for Maybe. "Returns a type-level boolean from  type-booleans. see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone nopqrstuvw nopqrstuvw nopqrstuvwsee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNoneConvenient synonym. type Equal a b = x (y a b) A polykinded proxy. $Template Haskell derivation for the  type-spine and  type-cereal  packages' z and {& type families, which support generic  instances of Compare.     see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone &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. '|}~  !"#$%&'()*+,#  !"#$%&'()*+,|}~   !"#$%&'()*+, see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone-./ -./-./see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone0The constraint  Each con sum corresponds to the constraing  forall dc in  sum. con dc. 1Fold through a type-level sum. 01010101 see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone2DT6 disbands a data type if all of its fields types have DC instances. 4The DCs3 of a data type is sum of all of its fields types. 5JAny fields type can be further represented as a product-of-fields and can / be injected back into the original data type. 7Codomain@ is the data type that contains the constructor that the fields  type dcA represents. It can also be applied to sums of fields types, in ( which case it just uses the left-most. 8Tag? returns a simulated type-level string that is the name of the  constructor that the dc fields type represents. 234567823456782345678None9 The default yoko derivations can be customised. ;FHow fields type names are derived from constructor names. Defaults to  (++ "_"). <EHow applications of higher-rank data types are represented. Defaults  to [(1, = ''Par1 'Par1 ' invmap), (2, = ''Par2 'Par2 'invmap2)]. =A => identifies the representation type, its constructor, and the + associated mapping function. For example,  is represented with  Mapping ''Par1 'Par1 'invmap. BThe default options.  yokoDefaults = YokoOptions id id. CDerive fields types and all yoko" instances for a given data type. DCustomized derivation. ?9:;<=>?@ABCD 9:;<=>?@ABCD CD9:;<=>?@AB)9:;<=>?@ABCDsee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone HoneC extends a function that consumes a fields type to a function that B consumes a disbanded data type containing just that fields type. IICombines 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. J f .|. g = one f I one gK f .|| g = one f I gL  f ||. g = f I one gM disbanded0 injects a fields type into its disbanded range Nband8s a disbanded data type back into its normal data type. Since  Disbanded is a type family, the range of band determines the t  type variable. Pinject,s a fields type into a sum of fields types. Q partition@s a sum of fields type into a specified sum of fields types and  the remaining sum. Rproject5s a single fields type out of a disbanded data type. SrepsC maps a disbanded data type to its sum-of-products representation. T precise_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.    precise_case default x $  ((C0_ ...) -> ...) K  ((C1_ ...) -> ...) J  ((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. U ig_from x = 'reps $ disband' x' is a convenience. It approximates the  instant-generics view, less the CEq annotations. EFGHIJKLMNOPQRSTUK  !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU?  &'()*,+"#!$% 8756423HILKJMNGT-/.OPQRSEFUEFGHIJKLMNOPQRSTUsee LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNoneVWXYZ[\]^_ VWXYZ[\]^_ ^\]Z[XYVW_ VWXYZ[\]^_ see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNoneT  !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSUVWXYZ[\]^_see LANGUAGE pragmas (... GHC) experimentalnicolas.frisby@gmail.comNone`Same as compos5 semantics, but with a generalized type and just for - converting between product representations. dFindDCs dcA dcBs returns a type-level Maybe. Just dcB is a fields  type dcB where 8 dcA ~ dcB. iThe generic version of convert; operates on disbanded data types. kUse the conversion cnv to convert from a to b. m4The applicative functor required by the conversion. `abcdefghijklm`abcdefghijklmmklijfhgedbc`a`abcdefhgijklm               ! " # $ $ % & & ' ' ( ) * + , - . / 0 1 2 3 4 5 678 9 : ; < = > ?@@ABCCDEFGHIJKLMNOPQRSTUVWXYZ[[\]^^__`Yabccdefghijklmnnopqrstuvwxyz{|}~              T U V W   lyoko-0.9Data.Yoko.TypeBasics Data.YokoRawData.Yoko.Each Data.Yoko.THData.Yoko.SmartPreciseCaseData.Yoko.HComposData.Yoko.MaybeKindData.Yoko.TH.InternalData.Yoko.RepresentationData.Yoko.TypeSumsData.Yoko.View Data.Yokotype-cereal-0.2Type.Serialize.BaseencodeMaybeMap MaybePlus1IsJustIfEqualProxy derive_data derive_pro DistMaybePlusGenericrepobjRepRecDepPar2Par1:+:RLNVoid:*:UunDepunRecmapRecunPar1unPar2unNfoldNmapNfoldPlusmapPlusmapTimes foldTimes:-: PartitionEmbedEacheachDTdisbandDCsDCrejoinCodomainTag YokoOptionsrenamermappingsMappingcontainerTypeName containerCtor methodName yokoDefaultsyokoTH yokoTH_with EachGenericEachRepConDCOfone|||.|..||||. disbandedbandembedinject partitionprojectreps precise_caseig_fromStartBuilder precise_case_DefaultAdHoc3Error_precise_case_requires_at_least_1_special_caseMapRsmapRsResultsInIncompatibleFieldsFindDCs WithMessageFoundDCMatch!NoCorrespondingConstructorFor_In_HComposhcomposConvertconvertIdiomDataTypethFaildataType dataType2DectvbNamepeelApp peelAppAcc expandSynmsubst type-ord-0.2 Type.Ord.BaseIsEQtype-ord-spine-cereal-0.2Type.Ord.SpineSerialize SpineComparetype-spine-0.2Type.Spine.BaseSpine SerializeCountRsAddSZ Partition_N partition_NCombineInjectAtinjectAtElemLocate TurnRightTurnLeftHere partition_embed_$fPartition_NTruexsubLsubR$fPartition_NFalsexsubLsubR$fPartition:+:subLsubR$fPartitionNsubLsubR $fEmbed:+:sup $fEmbedNsup$fInjectAtTurnRighta:+:$fInjectAtTurnLefta:+:$fInjectAtHereaNEach_each__ex $fEach_cxt:+: $fEach_cxtNIsDCOf $fIsDCOfdcConROrepPrepEobjPobjEFieldROrepFobjFM TargetKind TargetType TargetData BindingGroupMappingsRenamerTargetliftQrunMgenerateyoko0conName renameContvbKindtvbTypeapplyConT2TVBs conFieldspat_exp simpleClausehalvesfieldROyoko1composepostConEyoko2$fNameTargetKind$fNameTargetType$fNameTargetData$fNameBindingGroup$fNameMappings $fNameRenamer $fNameTargetrepEachobjEach$fEachGeneric:+:$fEachGenericN $fConDCOftdc$fBuilderAdHoc(->)$fBuilderAdHoc(->)0$fBuilderStart(->)$fBuilderStart(->)0$fMapRscnvmsgdcdc'Par2Par2$fMapRscnvmsgdcdc'Par1Par1$fMapRscnvmsgdcdc':*::*:$fMapRscnvmsgdcdc'UU$fMapRscnvmsgdcdc'DepDep$fMapRscnvmsgdcdc'RecRec$fHComposcnvNb$fHComposcnv:+:t$fConvert(->)xy