What I would like to see is something like:
HsApp (HsApp (HsApp (HsVar "foldl'") (HsVar "+")) (HsLit 0)) (HsVar "xs")
We could derive ‘Show’ on everything but that would generate a LOT of new code, that would seldom be used. Also ‘Show’ doesn’t pretty-print so the result would be illegible.
I’m a bit dubious. Maybe a better thing might be to improve the existing pretty-printer so it gave you the cues you are looking for?