ここに問題があります。私は別の関数を使ってf#で関数の時間を計る必要があります。私は、引数として持つ根本的に間違っている おそらく何かをタプル(S、N)を取る関数アッカーマンを持って fで任意の関数を時間を計る方法#
time ackermann (2,9);;
を言って呼び出ししようとしているコード
let time f a =
let start = System.DateTime.Now in
let res = (fun f a -> f(a)) in
let finish = System.DateTime.Now in
(res, finish - start)
のこの作品を持っていますこれは私が解決策から遠く離れているとは思えません。
提案がありますか?
Oh btw。エラーメッセージは次のようになります。
stdin(19,1):エラーFS0030:値の制限。値 'it'は、汎用タイプ を持つと推測されています。(( '' _a - > '_b) - >' _a - > '_b)* System.TimeSpan
' it 'を単純データ用語明示的な引数を持つ関数にするか、汎用的でない場合は型の注釈を追加します。
あなたの質問には関係ありませんが、[Ackermann関数](http://en.wikipedia.org/wiki/Ackermann_function )は、計算可能であるがプリミティブではない再帰関数の総称的な例である。この関数の実行時間を測定することは悪い考えです:) – pad