$ -base +pretty

($$) :: Doc -> Doc -> Doc
pretty Text.PrettyPrint.HughesPJ, pretty Text.PrettyPrint
Above, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example: > text "hi" $$ nest 5 (text "there") lays out as > hi there rather than > hi > there $$ is associative, with identity empty, and also satisfies * (x $$ y) <> z = x $$ (y <> z), if y non-empty.
($+$) :: Doc -> Doc -> Doc
pretty Text.PrettyPrint.HughesPJ, pretty Text.PrettyPrint
Above, with no overlapping. $+$ is associative, with identity empty.