2017-01-29 8 views
3

機能全体に手動でSCCを取り付けることはできますか?たとえば、次のようにSCCをfに追加するにはどうすればよいですか?SCCを関数全体に手動で接続しますか?

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 

を記述する必要がしかし、それはcase文にletwhereと警備員を書き換える必要があるため、これはいらいらすることができるようにする代わりに、それはそうです。このような書き直しをしなくても、どうすれば同じ効果を得ることができますか? -fprof-autoはこれを行うことができるようです。しかし、SCCを少数の機能に手動で追加したいだけです。

答えて

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" #-} 
+0

ファンタスティック同様に、ありがとう! – Kevin

関連する問題