Paul Keir schrieb:
> Hi there,
>
> I'm writing a pretty printer using the Text.PrettyPrint library, and
> there's a pattern I'm coming across quite often. Does anyone know whether,
>
> text (a ++ b ++ c ++ d)
> or
> text a <+> text b <+> text c <+> text d
>
> runs quicker?

Hi Paul,

> text (a ++ b ++ c ++ d)

is the same as

> hcat (map text [a,b,c,d])

(horizontal concatenation without seperating spaces)
while

> text a <+> text b <+> text c <+> text d

corresponds to

> hsep (map text [a,b,c,d])

or

> text (unwords [a,b,c,d])

With <+>, hsep or hcat, pretty printing won't choose the best layout -
you tell the pretty printer to layout documents 'beside'.
For autolayout, see sep,cat and the paragraph-fill variants fsep and fcat.

Regarding performance: `unwords` will propably be a little faster (untested), but less flexible. There is no asymptotic overhead when using the pretty printer.

cheers,
benedikt

>
> Cheers,
> Paul
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to