0

I have written SML code to recursively add two numbers of datatype nat. A function peanify to convert integer to nat. A function decimal to convert nat to integer.

Wanted help with syntax to test fun plus.

Say I want to test for 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))

Expected Result-: val it = Succ (Succ (Succ Zero)) : nat

hjuk12
  • 111
  • 5

1 Answers1

0

You can write:

val it = plus (peanify 2) (peanify 1)
ruakh
  • 175,680
  • 26
  • 273
  • 307