【发布时间】:2013-02-23 11:44:36
【问题描述】:
我想在 OCaml 中创建一个 int -> ('a -> 'a) -> 'a -> 'a 类型的函数,它接受一个 int n (非否定)和一个函数 f 'a -> 'a 和类型为 'a 的参数 a。 f 应该被调用 n 次。
我尝试了 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
【问题讨论】:
标签: function functional-programming ocaml