The call noinline f arranges that f will not be
inlined. It is removed during CorePrep so that its use imposes no
overhead (besides the fact that it blocks inlining.)
Specify that an Implementation should be annotated with a
NOINLINE pragma. Under GHC versions earlier than 6.12 this is a no-op,
because those Template Haskell implementations do not support pragmas.
This attribute indicates that the inliner should never inline this
function in any situation. This attribute may not be used together
with the alwaysinline attribute.