如何在该编码下添加数字?

时间:2016-05-07 16:28:26

标签: haskell

作为一个有趣的实验,我正在寻找自然数的二进制表示,其中log2的实现最简单。这是我提出的编码:

data N = A N | B N | E

其中:

1       E
2       (A E)
3       (B E)
4       (A (A E))
5       (A (B E))
6       (B (A E))
7       (B (B E))
8       (A (A (A E)))
9       (A (A (B E)))
10      (A (B (A E)))
11      (A (B (B E)))
12      (B (A (A E)))
13      (B (A (B E)))
14      (B (B (A E)))
15      (B (B (B E)))
16      (A (A (A (A E))))

这使得log2变得微不足道:您只计算AB的数量!在该编码上,通常的“全加器”算法不再起作用。有没有简单的算法可以将两个N的数量相加?

0 个答案:

没有答案