Custom folds and traversals of subparts.
Bugfix: genFoldMap order is unexpected

foldr (<>) a [b,c,d]  == b <> c <> d <> a
foldr1 (<>) [a,b,c,d] == a <> b <> c <> d