úÎ;Œ7M     #Bas van Dijk <v.dijk.bas@gmail.com>SafeFixity of operators. Right associative operator. Left associative operator. No fixity information. 6The precedence of operators and function application. = Operators usually have a precedence in the range of 0 to 9. 0 Function application always has precedence 10. >To render you need to supply the precedence and fixity of the enclosing context. 8For more documentation about precedence and fixity see:  4http://haskell.org/onlinereport/decls.html#sect4.4.2 "The reason the renderer returns a , instead of for example a String Jhas to do with efficiency. The rendering of expressions involves lots of left-factored appends i.e.: ((a ++ b) ++ c) ++ d. A  , which is equivalent to a ShowS&, has a O(1) append operation while a String has a O(n) append. Repr ± is a value of type ±+ paired with a way to render that value to its textual representation. Repr#s follow the property that given a Repr r if you evaluate the textual representation of r you should get the value or r.  Note that Repr ±% has an instance for most classes in base provided that ± Lhas instances for the respected classes. This allows you to write a numeric expression of type Repr ±. For example:   -*Repr> let r = 1.5 + 2 + (3 + (-4) * (5 - pi / sqrt 6)) :: Repr Double You can  the value of r:   *Repr> extract r 17.281195923884734 And you can render r% to its textual representation using :  *Repr> show r "*1.5 + 2.0 + (3.0 + negate 4.0 * (5.0 - pi / sqrt 6.0))" Extract the value of the Repr. Extract the renderer of the Repr. $Precedence of function application. x <?> s0 annotates the rendering with the given string. The rendering wil look like: "({- s -} ...)" where ... is the rendering of x. QThis combinator is handy when you want to render the ouput of a function and you Mwant to see how the parameters of the function contribute to the result. For 4example, suppose you defined the following function f:   &f p0 p1 p2 = p0 ^ 2 + sqrt p1 * ([p2..] !! 10) You can then apply f4 to some parameters annotated with some descriptive ;strings (the name of the parameter is usally a good idea):   f (1 <?> "p0") (2 <?> "p1") (3 <?> "p2") #The rendering will then look like:  "({- p0 -} fromInteger 1) * ({- p0 -} fromInteger 1) + sqrt ({- p1 -} (fromInteger 2)) * enumFrom ({- p2 -} (fromInteger 3)) !! 10" pure x constructs a  which has x as value and the showed x as rendering. For example:  *Repr> let r = pure [1,2,3] *Repr> extract r [1,2,3] *Repr> show r "[1,2,3]"  Construct a Repr( from the given value and its renderer.  For example: pi =    "pi"  For example:  toInteger =     For example: (<) =  ( ) For example: abs =  ! "abs"  For example: div =  " "div"  For example: (+) =   6 (#) "+" 9$ %&'() *+, -./0123456789:;<=>?@ABCDEFGHI  3$ %&'() *+, -./0123456789:;<=>?@ABCDEFGHI#Bas van Dijk <v.dijk.bas@gmail.com>Safe Lifts Prelude.J into s Lifts Prelude.K into a  Lifts Prelude.L into a  Lifts Prelude.M into s Lifts Prelude.N into s Lifts Prelude.O into s Lifts Prelude.P into s Lifts Prelude.Q into s Lifts Prelude.R into s    S      !"#$!%&!'()*+!,-!'.!,/ 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST!,!'!'!'!'!'!'!'!'U repr-0.4.1.3 Text.Repr Prelude.ReprFixityRLNon PrecedenceRendererReprextractrendererpurereprconstanttoto2appapp2infxsubtractevenoddgcdlcm^^^ fromIntegral realToFracdstring-0.4.0.4 Data.DStringDStringbaseGHC.Showshow funAppPrec GHC.FloatpiGHC.Real toIntegerghc-prim GHC.Classes<GHC.Numabsdiv+enum unzipReprsmapReprmapRepr2 runRenderer showFuncArgfromfrom2app2Showbinapplyappliesargslistcommastup $fRandomRepr$fExceptionRepr$fStorableRepr$fIxRepr$fHasResolutionRepr $fBitsRepr $fMonoidRepr $fBoundedRepr$fEqRepr $fOrdRepr $fEnumRepr$fRealFloatRepr$fRealFracRepr$fFloatingRepr$fFractionalRepr$fIntegralRepr $fRealRepr $fNumRepr$fIsStringRepr $fReadRepr $fShowRepr