
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