Biz*_*zle 3 ocaml functional-programming function
我想在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;;
Run Code Online (Sandbox Code Playgroud)
这使
val f : int -> ('a -> 'b) -> 'a -> 'c = <fun>
Run Code Online (Sandbox Code Playgroud)
我试过了
let rec f n g a =
if n > 0 then f (n-1) g a
else g a
;;
Run Code Online (Sandbox Code Playgroud)
这给了我
val f : int -> ('a -> 'b) -> 'a -> 'b = <fun>
Run Code Online (Sandbox Code Playgroud)
第二个更接近,但我对如何获得int - >('a - >'a) - >'a - >'a感到茫然
我不太确定你要做什么.我想这是下面的功能:
let rec foldi i f acc =
if i <= 0 then acc else foldi (pred i) f (f acc)
Run Code Online (Sandbox Code Playgroud)
以递归方式将i函数的次数乘以f一个值acc,然后再映射到其结果.foldi虽然可能不是最好的名字.