对于OCaml和函数式编程来说,它是一个整体,因此我在保持类型不明确方面遇到了一些问题。我正在尝试制作一个函数,该函数需要一个符号累加(看起来像(+)或(-。)或(*)等)和一个函数f。我当前的实现如下,如果我传入了(** f(x)= 3x ^ 2 + 5x + 6 **),但我总是得到'6'而不是'276',因为在其他部分,我是不对前几轮的结果求和,所以我得到的最终值为“ 6”。
由于+,我收到类型错误,因此当我在其中插入浮点数时会中断。我该如何克服这个问题(让部分接受浮点数或整数,但实际上是累积答案)?
let rec powerSum(sign )(f):'a =
fun x ->
if x = 0 then
f (x)
else if x < 0 then
raise(Failure "Error arg isn't '+'")
else
powerSum sign f (x-1);
答案 0 :(得分:1)
提示:您应该在某个时候使用accum
。