Îõ³h)(D&XÅ      !"#$%&'()*+,-./0123456789:;<=>?@ABCD0.2 Safe-Inferred (1Úãë%Ì0E kind-rationalGreatest Common Divisor of F numbers a and b.G kind-rational9An internal data type that is only used for defining the  pattern synonym. kind-rational Singleton type for a type-level & r. kind-rational(This type represents unknown type-level &. kind-rationalúThis class gives the rational associated with a type-level rational. There are instances of the class for every rational. kind-rationalComparison of type-level &s, as a function. kind-rationalWhether the type-level &Ö terminates. That is, whether it can be fully represented as a finite decimal number. kind-rationalH version of  r. Satisfied by all type-level &5s that can be represented as a finite decimal number. kind-rationalGet both the quotient and the ainder of the ision of the %erator of type-level & a by its $ominator, using the specified ing r.  forall (r :: ) (a :: &). ($ a  0) =>  r a  '( r a,  r a)  kind-rational ainder from  iding the %erator of the type-level & a by its $ominator, using the specified ing r.  forall (r :: ) (a :: &). ($ a  0) =>  r a  a   r a # 1  kind-rationalQuotient of the  ision of the %erator of type-level & a by its $ominator, using the specified ing r.  forall (r :: ) (a :: &). ($ a  0) =>  r a  a   r a # 1 %Use this to approximate a type-level & to an I. kind-rationala  b subtracts the type-level & b from the type-level & a. kind-rationala  b adds type-level &s a and b. kind-rationalrocal of the type-level &. Also known as multiplicative inverse. kind-rationala  b multiplies type-level &s a and b. kind-rationalolute value of a type-level &. kind-rationalSign of type-level &s, as a type-level I.J 0 if zero.J 1 if positive.K 1 if negative.  kind-rational  a type-level &. Also known as additive inverse.! kind-rationaln!d constructs and "s a type-level & with numerator n and denominator d.,This type-family accepts any combination of F, I and & as input. (!) :: F -> F -> & (!) :: F -> I -> & (!) :: F -> & -> & (!) :: I -> F -> & (!) :: I -> I -> & (!) :: I -> & -> & (!) :: & -> F -> & (!) :: & -> I -> & (!) :: & -> & -> & &It's not possible to pattern-match on n!d'. Instead, you must pattern match on x#y, where x#y ~ n!d." kind-rationalNormalize a type-level & so that a 00 denominator fails to type-check, and that the %.erator and denominator have no common factors.Only "d &2s can be reliably constrained for equality using L.All of the functions in the  KindRational module accept both " d and non-"#d inputs, but they always produce " d output.# kind-rationalPattern-match on a type-level &.NB: When  constructing a & number, prefer to use !<, which not only accepts more polymorphic inputs, but also "s the type-level &. Also note that while n # 0$ is a valid type, all tools in the  KindRational will reject such input.$ kind-rational"d $ominator of the type-level &.% kind-rational"d %erator of the type-level &.& kind-rationalType-level version of M. Use ! to construct one, use # to pattern-match on it.&= is mostly used as a kind, with its types constructed using !Í. However, it might also be used as type, with its terms constructed using ) or *!. One reason why you may want a &Ô at the term-level is so that you embed it in larger data-types (for example, this & embeds the I similarly offered by the  KindInteger- module). But perhaps more importantly, this & offers better safety than the M from Preludeê, since it's not possible to construct one with a zero denominator, or so large that operating with it would exhaust system resources. Notwithstanding this, for ergonomic reasons, all of the functions exported by this module take Prelude &s as input and produce Prelude &äs as outputs. Internally, however, the beforementioned checks are always performed, and fail with N, if necessary. If you want to be sure those O"s never happen, just filter your Prelude &s with *ï. In practice, it's very unlikely that you will be affected by this unless if you are unsafelly constructing Prelude &s.' kind-rational7A explicitly bidirectional pattern synonym relating an  to a  constraint.As an  expression: Constructs an explicit  r value from an implicit  r constraint:  @r ::  r =>  r As a pattern: Matches on an explicit  r value bringing an implicit  r constraint into scope: f :: 2 r -> .. f SRational = {- SRational r in scope -} ( kind-rational Shows the &+ as it appears literally at the type-level.This is remerent from normal P for &$, which shows the term-level value. Q 0 (1 (R @(1!2))) "z" == "1 % 2z" ( 0 (1 (R @(1!2))) "z" == "P 1 % 2z" ) kind-rationalMake a term-level  KindRational &- number, provided that the numerator is not 0é, and that its numerator and denominator are not so large that they would exhaust system resources. The & is "d.* kind-rationalTry to obtain a term-level  KindRational & from a term-level Prelude M. This can fail if the Prelude MÉ is infinite, or if it is so big that it would exhaust system resources. * . + == S T + . * == S U kind-rationalLike *, but Ns in situations where * fails with V.W kind-rationalLike U, but returns a Prelude M.+ kind-rationalConvert a term-level  KindRational & into a term-level Prelude M. * . + == S T + . * == S , kind-rationalTerm-level version of .Takes a Prelude M as input, returns a Prelude X.- kind-rationalTerm-level version of .Takes a Prelude M as input, returns a Prelude M.. kind-rationalTerm-level version of .Takes a Prelude M as input, returns a pair of Prelude Ms (quotient, remerence). forall (r :: ) (a :: M). ( a Y 0) => . r a Z (, r a, - r a) 0 kind-rationalTerm-level version of the  Terminates function. Takes a Prelude M as input.[ kind-rationalTerm-level version of the  Terminates function. Takes a  KindRational M as input.\ kind-rational Term-level  KindRational &# representation of the type-level & r.1 kind-rational Term-level Prelude M# representation of the type-level & r.2 kind-rationalConvert a term-level Prelude & into an unknown type-level &.3 kind-rationalÕWe either get evidence that this function was instantiated with the same type-level &s, or V.4 kind-rationalLike 3, but if the type-level &5s aren't equal, this additionally provides proof of ] or ^._ kind-rational8An internal function that is only used for defining the  pattern synonym.5 kind-rationalReturn the term-level Prelude M number corresponding to r in a  r value.6 kind-rationalConvert an explicit  r value into an implicit  r constraint.7 kind-rational Convert a Prelude M number into an  n value, where n is a fresh type-level &.8 kind-rationalSame as Prelude M.9 kind-rationalSame as Prelude M.` kind-rational Data.Type.Ord support for type-level &s.a kind-rationalThis constructor is unsafe/ because it doesn't check for the things that ) checks for.&At the term-level, safely construct a & using ) or * instead.&At the type-level, safely construct a & using !.8&#!"%$)*+(123'576 ,-. /048&#!"%$)*+(123'576 ,-. /04667!7â      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSOPTUV,UWXUYZU[\U[]U^_U`aUbcdU`efKgROhOh ijOPkOPlmnoðkind-rational-0.2-inplace KindRational kind-rationalP denominatorkind-integer-0.3-inplace KindInteger/=/=?====?RoundRoundUp RoundDown RoundZero RoundAway RoundHalfUp RoundHalfDown RoundHalfZero RoundHalfAway RoundHalfEven RoundHalfOdd SRational SomeRational KnownRational rationalSing CmpRational Terminates TerminatingDivRemRemDiv-+Recip*AbsSignNegate/ Normalize%DenNumRationalshowsPrecTypeLitrational fromPrelude toPreludedivremdivRemwithTerminating terminates rationalValsomeRationalVal sameRational cmpRational fromSRationalwithKnownRationalwithSomeSRational$fReadRational$fShowRational $fOrdRational $fEqRational$fTestCoercionRationalSRational$fTestEqualityRationalSRational$fShowSRational$fReadSomeRational$fShowSomeRational$fOrdSomeRational$fEqSomeRational$fKnownRationalr$fTerminatingrGCD ghc-bignumGHC.Num.NaturalNaturalKnownRationalegerInstanceghc-prim GHC.Types ConstraintIntegerN~baseGHC.Real GHC.ExceptionthrowGHC.ErrerrorGHC.Showshowshows Data.ProxyProxy GHC.MaybeJustGHC.BasefmapunsafeFromPreludeNothingunsafeCheckPreludeGHC.Num.Integer GHC.Classes terminates' rationalVal'LTGTknownRationalInstanceD:R:CompareRationalab:%