Data.Derive.Fold
makeFold