
Christian Maeder wrote:
@@ -607,8 +611,13 @@
Myline number may be wrong, because I used an older version of the module. After the introduction of above_ and beside_ it also makes sense to move the call of reduceDoc to the last argument (and remove this calls in reduceDoc and above). The patch for this is below. I cannot observe speed differences, though. Christian @@ -461,8 +461,8 @@ type RDoc = Doc reduceDoc :: Doc -> RDoc -reduceDoc (Beside p g q) = beside p g (reduceDoc q) -reduceDoc (Above p g q) = above p g (reduceDoc q) +reduceDoc (Beside p g q) = beside p g q +reduceDoc (Above p g q) = above p g q reduceDoc p = p @@ -562,15 +562,15 @@ above_ :: Doc -> Bool -> Doc -> Doc above_ Empty _ q = q above_ p _ Empty = p -above_ p g q = Above p g q +above_ p g q = Above p g (reduceDoc q) p $$ q = above_ p False q p $+$ q = above_ p True q above :: Doc -> Bool -> RDoc -> RDoc above (Above p g1 q1) g2 q2 = above p g1 (above q1 g2 q2) -above p@(Beside _ _ _) g q = aboveNest (reduceDoc p) g 0 (reduceDoc q) -above p g q = aboveNest p g 0 (reduceDoc q) +above p@(Beside _ _ _) g q = aboveNest (reduceDoc p) g 0 q +above p g q = aboveNest p g 0 q aboveNest :: RDoc -> Bool -> Int -> RDoc -> RDoc -- Specfication: aboveNest p g k q = p $g$ (nest k q) @@ -614,7 +614,7 @@ beside_ :: Doc -> Bool -> Doc -> Doc beside_ Empty _ q = q beside_ p _ Empty = p -beside_ p g q = Beside p g q +beside_ p g q = Beside p g (reduceDoc q) p <> q = beside_ p False q p <+> q = beside_ p True q