関数型プログラミング言語Haskell Part20
■ このスレッドは過去ログ倉庫に格納されています
0318デフォルトの名無しさん
2012/11/08(木) 21:19:45.25関数の評価回数を知りたいだけでしたら、プロファイリングすれば簡単にわかりますよ。
コンパイル時に3つのオプション "-rtsopts -prof -auto-all" を付けて、
実行ファイルの起動時にRTSオプション "+RTS -p" を付ければ、
*.prof ファイルができるんで、それを読めばいいです。
prof ファイルの一番下の表を見てください。
1列目に関数名(変数も関数)、2列目にモジュール名とあって、
4列目の "entries" の項目が評価回数です。
例えば z を返すバージョンの tak 関数を使って、
main :: IO
main = do
let z = tak 3 2 1
print z
を上記のようにコンパイルして実行してできた prof ファイルを見ると、
tak の評価回数は 5 と表記されています。
(実際に手計算で let z = tak 3 2 1 を簡約すると、
確かに5回 tak 関数が評価されていることが確認できます)
プロファイリングの詳細は「本物のプログラマはHaskellを使う」
の第45回の記事を参考にしてください。
こういうことではなく、プログラムの中でカウントする仕組みを作るには、
という趣旨の質問でしょうか?
■ このスレッドは過去ログ倉庫に格納されています