
On Wed, Dec 23, 2020 at 07:19:37PM -0600, chessai wrote:
On mobile, but I don't see how you're compiling? Is it at least with -O1?
On Wed, Dec 23, 2020, 18:26 Keith
wrote: There's no benefit to optimizing default Foldable methods for data types that already have specialized methods.
foldMap' does not care about the nesting of the structure like foldl', so it's a better default choice.
What I worry more about is that getSum . foldl' (\ z x -> z <> Sum x) mempty is compiling to different code than foldl' (+) 0.
Well, perhaps the same sort of "lifting" concerns that motivated: getSum #. foldMap' Sum in the default definition. With (#.) just ignoring the `getSum` and pretending that foldMap' already returns the correct result. FWIW, my builds were with "-O2". -- Viktor.