(** profile s
* returns a profiling function; [s] is used for labelling the total time at
the end of the execution *)
-val profile : string -> ('a -> 'b) -> 'a -> 'b
+type profiler = { profile : 'a 'b. ('a -> 'b) -> 'a -> 'b }
+val profile : string -> profiler