我有许多带有默认参数的功能,例如
let h_foo a b = a * b
let foo ?(f_heuristic=h_foo) a b = f_heuristic a b
(* caller of foo where may want to change `f_heuristic` *)
let fn ?(f=foo) a b =
f a b
fn 5 6 (* => 30 *)
但是,我希望能够使用不同的默认值调用包装函数,以使用包装函数的默认值。我遇到以下错误,这使我感到困惑,而且我不知道如何解决。
fn ~f:(fun a b -> a + b) 5 6
(* Line 1,characters 6-24:
* Error: This function should have type
* ?f_heuristic:(int -> int -> int) -> int -> int -> int
* but its first argument is not labelled *)
这在Ocaml中可行吗,还是错误的方法? 谢谢