Новое в 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);