在 Uni,我们面临一个挑战,即使用累加器创建 Peano 数的尾递归加法。我们不允许使用任何库函数或我们创建的其他函数,但我们可以将累加器“隐藏”在辅助函数中
这是类型
type Peano =
| O
| S of Peano
我被困在如何执行累加器上,因为它对定义的类型没有任何操作,即以下是不可能的
let tailAdd p1 p2 =
let rec aux p1 p2 acc =
match p1, p2 with
| O, _ -> acc
| S v, b -> aux v b (acc + v)
aux p1 p2 O
帮助 xD