úÎ2‡,Ïd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d ef    ghij the product type constructor `(,)` is a bifunctor from   $times$  to , so that we have the  bifunctorial map  ( which allows two separate isomorphisms + to work on the two components of a tuple. !.The mediating arrow for sums constructed with k. 5 This is not a proper partial isomorphism because of l. "Nested products associate. #Products commute. $`()`# is the unit element for products. %Products distribute over sums. &` element x`$ is the partial isomorphism between `()` and the # singleton set which contains just x. 'For a predicate p, `subset p` is the identity isomorphism 0 restricted to elements matching the predicate. ()*+,-./ !"#$%&'()*+,-./ !"#$&'()%*+,-./ !"#$%&'()*+,-./012012012012 3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG3456789:;<=>?@ABCDEFGFGBCDE>?@A;<=:34567893456789456789:;<=<=>?@A?@ABCDECDEFGGHIJKLMM parses/ prints a fixed text and consumes/produces a unit value. NThis variant of G ignores its left result. 1 In contrast to its counterpart derived from the  Applicative class, the ignored  parts have type `delta ()` rather than ` delta beta`( because otherwise information relevant $ for pretty-printing would be lost. OThis variant of G ignores its right result. 1 In contrast to its counterpart derived from the  Applicative class, the ignored  parts have type `delta ()` rather than ` delta beta`( because otherwise information relevant $ for pretty-printing would be lost. PThe P function combines N and O in the obvious way. QThe Q combinator is used to parse a , left-associative chain of infix operators. RSTUVWXX1 marks a position where whitespace is allowed to ? occur. It accepts arbitrary space while parsing, and produces  no space while printing. YY8 marks a position where whitespace is desired to occur. : It accepts arbitrary space while parsing, and produces a ( single space character while printing. ZZ2 marks a position where whitespace is required to @ occur. It requires one or more space characters while parsing, 7 and produces a single space character while printing. [\]^_`HIJKLMNOPQRSTUVWXYZ[\]^_`KLMVWHIUQNOPJRSTXZY[\]^_`HIJKLMNOPQRSTUVWXYZ[\]^_` a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`amnbocabcabcabcp    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn opqrstuvwuxylz{|roundtrip-0.2.0.1Control.Isomorphism.Partial.IsoControl.Isomorphism.Partial.TH(Control.Isomorphism.Partial.Constructors Control.Isomorphism.Partial.Prim#Control.Isomorphism.Partial.DerivedText.Roundtrip.ClassesText.Roundtrip.CombinatorsText.Roundtrip.SpecPrinterControl.Isomorphism.PartialText.RoundtripIsoisoLRisoRLisoName isoShowSL isoShowSR unsafeMakeIsounsafeMakeIso'unsafeMakeNamedIsounsafeMakeNamedIsoLunsafeMakeNamedIsoRunsafeMakeNamedIsoLRisoShowLisoShowRisoFailedErrorMessageLisoFailedErrorMessageRdefineIsomorphismsdefineIsomorphisms'nilcons listCasesleftrightnothingjust IsoFunctor<$>inverseapplyunapplyidIsoignore***||| associatecommuteunit distributeelementsubset namedSubset iterateIso readShowIsoreadShowTextIso textStringIsolazyStrictTextIso listMapIsomaybeUnitBoolIsofoldlswap23 fixedValue XmlSyntax xmlBeginDoc xmlEndDoc xmlBeginElem xmlEndElem xmlAttrValuexmlTextNotEmpty Attribute StringSyntaxtokenanyTokenSyntaxpurerule ruleInfix Alternative<|><||>emptyProductFunctor<*>manymany1<+>charchar'string*><*betweenchainl1optional optionalBooloptionalWithDefaultsepBycommadot skipSpaceoptSpacesepSpacexmlEatWhiteSpacexmlElemxmlAttr xmlFixedAttrxmlText xmlString SpecPrinter specPrinterrunSpecPrintermakeShowisoFailedErrorMessage defFromCon funCreationwildcard checkInfixbase Data.EitherEither Control.Monadmplus unSpecPrinter formatName