+
+Note [Inlining for foldr]
+~~~~~~~~~~~~~~~~~~~~~~~~~
+Inline foldr only in the final stage (0), after the foldr rules
+have had a chance
+
+Notice that we write foldr with just *two* arguments so that it'll inline
+when given just those two arguments. Those are the ones that allow it to
+be specialised for its argument functions. If you give it *three* args
+then a definition like
+ unpack = foldr unpk_fn unpk_arg
+does not get foldr inlined. But now 'unpack' will probably be inlined at
+every call site (being small and arity 1), and *that* will make foldr inline!
+So we get a copy of foldr at every call of unpack. This is particularly
+bad for literal strings.