在不强制类型的情况下不累积Psum(多态高阶函数)

时间:2019-02-19 08:44:08

标签: ocaml

对于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);

1 个答案:

答案 0 :(得分:1)

提示:您应该在某个时候使用accum