手动将 SCC 附加到整个函数?
Manually attaching SCC to an entire function?
是否可以手动将 SCC 附加到整个函数?例如,下面如何将 SCC 附加到 f
?
f x = g x
where g x = ...
如果我写
f x = {-# SCC f #-} g x y
where g = ...
y = ...
那么 g
和 y
将不会包含在 SCC 中。相反,似乎我必须写
f x = {-# SCC f #-}
let g = ...
y = ...
in g x y
但这可能很烦人,因为它需要将 where
重写为 let
并将守卫重写为 case
语句。如果不进行所有这些重写,我如何才能获得相同的效果? -fprof-auto 似乎可以做到这一点。但是我只想给少数函数手动添加SCC。
这似乎在 GHC 的下一个主要版本 (8.2) 中成为可能,请参阅此票证 #12116(它显示了与您遇到的相同的解决方法和问题)。
根据 GHC 主分支的 users guide,您可以将注释放在与 f
声明相同的级别。喜欢
f x = g x y
where g = ...
y = ...
{-# SCC f #-}
或
f x = g x y
where g = ...
y = ...
{-# SCC f "some_cc_name" #-}
是否可以手动将 SCC 附加到整个函数?例如,下面如何将 SCC 附加到 f
?
f x = g x
where g x = ...
如果我写
f x = {-# SCC f #-} g x y
where g = ...
y = ...
那么 g
和 y
将不会包含在 SCC 中。相反,似乎我必须写
f x = {-# SCC f #-}
let g = ...
y = ...
in g x y
但这可能很烦人,因为它需要将 where
重写为 let
并将守卫重写为 case
语句。如果不进行所有这些重写,我如何才能获得相同的效果? -fprof-auto 似乎可以做到这一点。但是我只想给少数函数手动添加SCC。
这似乎在 GHC 的下一个主要版本 (8.2) 中成为可能,请参阅此票证 #12116(它显示了与您遇到的相同的解决方法和问题)。
根据 GHC 主分支的 users guide,您可以将注释放在与 f
声明相同的级别。喜欢
f x = g x y
where g = ...
y = ...
{-# SCC f #-}
或
f x = g x y
where g = ...
y = ...
{-# SCC f "some_cc_name" #-}