Currently encloseSep is defined like
encloseSep l r s ds = case ds of
[] -> l <> r
[d] -> l <> d <> r
_ -> cat (zipWith (<>) (l : repeat s) ds) <> r
Taking in mind that cat = group . vcat the last line is equivalent to
_ -> group (vcat (zipWith (<>) (l : repeat s) ds)) <> r
This works fine in case we want r to be in one line with last element:
But if we want it to be at the next line:
it (with r = line <> "]") won't group correctly:
since r is out of group scope in the current definition of encloseSep.
I propose to change last line in the definition of the encloseSep in such way, that r will be grouped in all cases:
encloseSep l r s ds = group $ case ds of
[] -> l <> r
[d] -> l <> d <> r
_ -> vcat (zipWith (<>) (l : repeat s) ds) <> r
This won't change behavior when r doesn't contain line (like list and tupled), but will produce better behavior in this case.
Currently
encloseSepis defined likeTaking in mind that
cat = group . vcatthe last line is equivalent toThis works fine in case we want
rto be in one line with last element:But if we want it to be at the next line:
it (with
r = line <> "]") won't group correctly:since
ris out ofgroupscope in the current definition ofencloseSep.I propose to change last line in the definition of the
encloseSepin such way, thatrwill be grouped in all cases:This won't change behavior when
rdoesn't containline(likelistandtupled), but will produce better behavior in this case.