Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move grouping in encloseSep #245

Open
Lev135 opened this issue Jun 1, 2023 · 0 comments
Open

Move grouping in encloseSep #245

Lev135 opened this issue Jun 1, 2023 · 0 comments

Comments

@Lev135
Copy link

Lev135 commented Jun 1, 2023

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:

[ 1
, 2
, 3 ]

But if we want it to be at the next line:

[ 1
, 2
, 3
]

it (with r = line <> "]") won't group correctly:

[ 1, 2, 3
]

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant