quchen / prettyprinter

A modern, extensible and well-documented prettyprinter.
BSD 2-Clause "Simplified" License
293 stars 34 forks source link

Use `Foldable` instead of list? #236

Open andreasabel opened 1 year ago

andreasabel commented 1 year ago

I see that some functions, like concatWith work for any Foldable instead of just for list.

Is there a reason why the other list functions are not generalized to Foldable? E.g.

hsep :: [Doc ann] -> Doc ann

I am trying to be progressive, using Data.List.NonEmpty and other list variants in my code base, but then I always have to sprinkle an extra toList in.

Unless there are reasons (like breaking type inference), I think all such list functions should be generalized to Foldable. (Even if type inference is broken for legacy users, such a generalization could maybe be pushed in a major-major version bump like 2.0...)

Update: I found a prior discussion on this, but maybe time is ripe for a revision: