úÎ-‡+«    "Fixity 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 extract the value of r:   *Repr> extract r 17.281195923884734 And you can render r% to its textual representation using  :  *Repr> show r "3fromRational (3 % 2) + 2 + (3 + negate 4 * (5 - pi / sqrt 6))" Extract the value of the Repr. Extract the renderer of the Repr.  Construct a Repr( from the given value and its renderer. $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]"  !"#     $      !"#$%&'()repr-0.4 Text.ReprFixityRLNon PrecedenceRendererReprextractrendererreprpure dstring-0.4 Data.DStringDStringbaseGHC.Showshow funAppPrecenumtopLevelconstant showFuncArgfromfrom2toto2appapp2app2Showinfxbinapplyappliesargslistcommas unzipReprstup