SML:递归加法测试用例语法

SML: Recursive addition test case syntax

我已经编写了 SML 代码来递归地添加两个数据类型 nat 的数字。将整数转换为 nat 的函数 peanify。将 nat 转换为整数的函数 decimal。

需要语法方面的帮助来测试 fun plus。

说我想测试 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 (Succ 零)) : nat

你可以这样写:

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