r -> (a -> r) -> t a -> r
foldMapBy f z g = reifyFold f z (foldMap (M #. g))

foldMapByOf :: (forall s. Getting (M r s) t 
foldByOf :: (forall i. Getting (M a i) s a) -> (a -> a -> a) -> a -> s -> a
foldByOf l f z = reifyFold f z (foldMapOf l M)
foldByOf l f z = reifyFold f z (foldMapOf l M)