手动将SCC附加到整个功能?

时间:2017-01-29 19:51:22

标签: haskell ghc

是否可以手动将SCC连接到整个功能?例如,如何在以下情况下将SCC附加到f

f x = g x
  where g x = ...

如果我写

f x = {-# SCC f #-} g x y
  where g = ...
        y = ...

然后gy不会被包含在SCC中。相反,似乎我必须写

f x = {-# SCC f #-}
      let g = ...
          y = ...
      in  g x y

但这可能很烦人,因为它需要将where重写为let并保护case语句。如果不进行所有这些重写,我怎样才能获得相同的效果? -fprof-auto似乎能够做到这一点。但我只想手动将SCC添加到少量功能中。

1 个答案:

答案 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" #-}