OCaml で一般的なタイマー関数を実装しようとしています。これは、入力として任意のアリティの関数を受け取り、型'rを返し、次の関数を返します。
- 同じアリティと入力パラメータのタイプ、および
float * 'rフロートが関数で費やされた時間のメトリックとなる戻り値の型(たとえば、によって報告されSys.time()ます)
問題は、任意のアリティの関数を処理できるように実装できないことです。たとえば、次のコード:
タイマーを f =
timerf xy = とする
let t0 = Sys.time ()
in let 結果 = fxy
in let diff = Sys.time() -. t0
in diff、結果
タイマーで
入力アリティ 2 の関数でのみ動作します。任意のアリティの関数を処理するために一般化する方法は明らかではありません。部分関数アプリケーションが魔法のように難問を解決してくれることを期待していましたが、うまくいきません。