我希望创建一个OCaml类型为int -> ('a -> 'a) -> 'a -> 'a的函数,该函数接受一个整数n(非负数),一个返回' a ->' a的函数f和一个类型为'a的参数a。 f应该在a上调用n次。
我尝试了三种不同的方法,但只能获得int -> ('a -> 'b) -> 'a -> 'b,以下是我尝试的一些内容。
第二个更接近答案,但我不知道如何将int转换为('a -> 'a) -> 'a -> 'a。
我尝试了三种不同的方法,但只能获得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。
pred
是succ
的对偶,它返回其(整数)参数的前驱,即该值减一。 - didiercincr
和decr
。 - didierc