- 318 名前:デフォルトの名無しさん mailto:sage [2012/11/08(木) 21:19:45.25 ]
- >>316
関数の評価回数を知りたいだけでしたら、プロファイリングすれば簡単にわかりますよ。 コンパイル時に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回の記事を参考にしてください。 こういうことではなく、プログラムの中でカウントする仕組みを作るには、 という趣旨の質問でしょうか?
|

|