* (   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. HTo 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   L is that the rendering of numeric expression involves lots of left-factored  appends i.e.: ((a ++ b) ++ c) ++ d. A   has a O(1) append operation  while a  ' just has a O(n) append. So choosing a   is more  efficient. Repr a is a value of type a- paired with a way to render that value to a : string which will contain a representation of the value.  Note that Repr a9 is overloaded for all the numeric classes provided that  aE has instances for the respected classes. This allows you to write a  numeric expression of type Repr a. For example:   / *Repr> let rd = 1.5 + 2 + (3 + (-4) * (5 - pi / sqrt 6)) :: Repr Double You can extract the value of rd:    *Repr> value rd  17.281195923884734 And you can than render rd to its textual representation:   *Repr> render rd  "efromRational (3 % 2) + fromInteger 2 + (fromInteger 3 + negate (fromInteger 4) * (fromInteger 5 - pi / sqrt (fromInteger 6)))"  Extract the value of the Repr. Extrac the renderer of the Repr.  Render a  top-level value to a  .  Note that:  render r =  $  r 0  x <?> s0 annotates the rendering with the given string. The output wil look like: " ({- s -} ...)" where ... is the rendering of  x. MThis combinator is handy when you want to render the ouput of a function and F you want to see how the parameters of the function contribute to the A result. For example, 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"  Construct  from a given value and string. $Precedence of function application.         !"#repr-0.1ReprFixityRLNon PrecedenceRenderervaluerendererrenderdstring-0.3.0.2 Data.DStringDStringbaseGHC.BaseStringSto-string-class-0.1.2Data.String.ToStringtoStringenumconstant funAppPrecfromfrom2toto2appapp2infxtupargsapply