Псум не накапливается (Полиморфная функция высшего порядка) без форсирования типа - PullRequest
0 голосов
/ 19 февраля 2019

Новое в 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 голосов
/ 19 февраля 2019

Подсказка: в какой-то момент вы должны использовать accum.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...