私は機能を持っています:
{-# INLINE f #-}
f x =
\ y ->
\z -> ...
そのように定義されています (トリックについてはGHC のドキュメントを参照してください)。
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を裏切るには?
更新
現実の世界では(ハァッ):