我有这个功能:
{-# INLINE f #-}
f x =
\ y ->
\z -> ...
它是这样定义的(有关技巧,请参阅GHC 文档),因为我需要 2 阶段应用程序内联,例如。
comp (f a) ...
...
comp pAppliedF b1 b2 ... =
f'1 = pAppliedF b1 -- I need these 2 functions inlined
f'2 = pAppliedF b2
但是,我得到Core
这样的:
fa = \ y z -> ...
...
-- `comp` is inlined
-- Even though there are happy partial applications:
let f'1 = fa smth1
f'2 = fa smth2
in ...
如何在这里智取 GHC?
更新
在现实世界中(呵呵):