
Awesome! Thanks to you all. I'll start with hsep[map a, b, c, d] and then I can try changing hsep for other things. Paul -----Original Message----- From: Benedikt Huber [mailto:benjovi@gmx.net] Sent: Fri 15/08/2008 14:53 To: Paul Keir Cc: haskell-cafe@haskell.org Subject: Re: Pretty Print, text or ++? 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