One aspect that I see discussed less often is the idea of 'builder combinators', which are kind of the inverse of parser combinators. There are multiple libraries in Haskell which make it very easy to write HTML/SVG/... this way:
https://hackage.haskell.org/package/blaze-html
https://hackage.haskell.org/package/blaze-svg
I haven't needed to do the same with SQL but I imagine that this already exists as well