我必须解决的一个问题自然数的一个独特的定义:类型化球拍:自然数
(define-type Nat (U 'Zero Succ))
(define-struct Succ ([prev : Nat]) #:transparent)
所以基本上,0 = 'Zero, 1 = (Succ 'Zero), 2 = (Succ (Succ 'Zero))....
等
使用这种形式,而不将其转换为整数,我写了递归函数来添加,减去和乘以自然数。对于附加功能,我已经试过这
(: nat+ : Nat Nat -> Nat)
(define (nat+ n m)
(match '(n m)
['('Zero 'Zero) 'Zero]
['((Succ p) 'Zero)
n]
['('Zero (Succ p))
m]
['((Succ p) (Succ t))
(nat+ p (Succ m))]))
,但我得到的错误
号码:未绑定的标识在模块中:P。
有没有人有写这种类型的递归函数的任何建议。