是否可以手动将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添加到少量功能中。
答案 0 :(得分:2)
在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" #-}