我想在 OCaml 中创建一个 int -> ('a -> 'a) -> 'a -> 'a 类型的函数,它需要一个 int n (非否定)和一个函数 f 'a -> 'a 和'a 类型的参数 a。f 应该被调用一次。
我尝试了 3 种不同的方法,但只能得到 int -> ('a -> 'b) -> 'a -> 'b,这是我尝试过的一些方法。
let rec f n g a =
g a;
f (n-1) g a;;
这使
val f : int -> ('a -> 'b) -> 'a -> 'c = <fun>
我试过了
let rec f n g a =
if n > 0 then f (n-1) g a
else g a
;;
这给了我
val f : int -> ('a -> 'b) -> 'a -> 'b = <fun>
第二个更接近,但我不知道如何获得 int -> ('a -> 'a) -> 'a -> 'a