main = print $ product [1..100] ghc-core-html --ghc-option=-ddump-simpl --ghc-option=-dsuppress-all fact.hs
you can see
main_go (plusInteger x_a3Sq main4) (timesInteger eta_B1 x_a3Sq);
typicall the [1..100] gets compiled to (enumFromTo 1 100) and it can be desugared further..
so, yeah, foldmap compiles to foldr which may compile down further
GHC rewrites most of the common built-in functions to eliminate intermediate trees and lists. You can see a list https://downloads.haskell.org/~ghc/7.0.1/docs/html/users_gui... (section 7.14.4; ctrl-f "good producer").
you can see
where it compiles to a recursive loop with an accumulatortypicall the [1..100] gets compiled to (enumFromTo 1 100) and it can be desugared further..
so, yeah, foldmap compiles to foldr which may compile down further