Простая рекурсивная программа в OCaml, повторяющаяся до 10 - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать простую программу OCaml, используя рекурсивную функцию, которая проверяет ввод (x) и либо увеличивает на 1, либо уменьшает на 1, пока значение x не станет равным 10.

Это то, чтоУ меня сейчас -

let rec until_ten x =
  match x with
  10 -> 1
  | x > 10 -> until_ten x - 1
  | x < 10 -> until_ten x + 1
  ;;

Где я ошибся?

1 Ответ

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

@ TheoWinterhalter дал вам хороший ответ, но я немного расширю.

Выражение OCaml match принимает выражение и последовательность шаблонов. Шаблоны, в свою очередь, представляют возможные значения выражения с заполнителями для частей подструктуры.

В своем выражении match вы предоставляете логические тесты, а не шаблоны. Это не так, как работает match. Там нет шаблона, который соответствует числам, превышающим определенное значение. Шаблоны имеют структуру и конкретные значения (по существу).

Вы можете заменить match на if ... then ... else if ..., чтобы получить значимую функцию.

Вы можете, как предполагает @TheoWinterhalter, использовать match x with ... | x when x > 10 ..., но это просто сложный способ написания if заявления.

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