Ошибка в коде: «Это функция, которую нельзя применить» - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в Окамле. Я не уверен, почему следующее не работает:

    let nDivM m n = n/m
    let rec decimalToM m n = if (n < m) then n+n
    else ((n mod m) * n) + decimalToM(m nDivM)

Выше указано, что это базовый преобразователь (M - это база). Я ожидал int, но сейчас он не запускается.

1 Ответ

1 голос
/ 15 октября 2019

Проблема заключается в следующем подвыражении:

decimalToM(m nDivM)

Подвыражение (m nDivM) является синтаксически вызовом m в качестве функции, передавая nDivM в качестве параметра.

Поскольку nDivM - это функция, вы не можете исправить это полностью, просто переместив скобки. Мне кажется, вам нужно предоставить некоторые аргументы для nDivM. Затем вы должны убедиться, что ваши круглые скобки правильные.

Если f является функцией двух аргументов, то способ вызова в OCaml: f x y. Обратите внимание, что скобки не требуются (если x или y не является более сложным выражением).

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