преобразовать int в натуральное число в ocaml - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь написать функцию, которая преобразует целые числа в натуральные числа в OCaml.Вот мой код

type nat = Zero | Succ of nat 
let rec int_to_nat (x:int):nat option=
    if x<0 then
        None
    else if x=0 then
        Some Zero
    else
        Succ(int_to_nat (x-1));;

Компилятор предлагает «У этого варианта выражения, как ожидается, будет опция типа nat. Ошибка конструктора Succ не относится к опции типа».Я не понимаю, что это значит.

1 Ответ

0 голосов
/ 28 сентября 2019

Ожидается опция nat.Вот что я изменил

type nat = Zero | Succ of nat option
let rec int_to_nat (x:int):nat option=
    if x<0 then
        None
    else if x=0 then
        Some Zero
    else
        Some Succ(int_to_nat (x-1));;
...