SML: Синтаксис рекурсивного сложного теста - PullRequest
0 голосов
/ 10 октября 2019

Я написал SML-код для рекурсивного добавления двух чисел типа данных nat. Функция peanify для преобразования целого числа в nat. Десятичная функция для преобразования nat в целое число.

Требуется помощь по синтаксису для проверки веселья плюс.

Скажем, я хочу проверить на 2 + 1

datatype nat = Zero | Succ of nat

fun peanify (x:int) : nat =
    if x=0 then Zero
    else Succ (peanify (x-1))

fun decimal (n:nat) : int =
    case n of
         Zero => 0
       | (Succ n) => 1 + (decimal n)

fun plus (x : nat) : (nat -> nat) =
    case x of
         Zero => (fn y => y)
       | Succ x' => (fn y => Succ (plus x' y))

Ожидаемый результат-: val it = Сукк (Succ (Succ Zero)): nat

1 Ответ

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

Вы можете написать:

val it = plus (peanify 2) (peanify 1)
...