我正在研究“软件基础”这本书,并且正在探讨第二章中的最后一个问题。该问题要求将自然数转换为二进制数,其中以下列方式定义了二进制数:
- [is] zero,
- [is] twice a binary number, or
- [is] one more than twice a binary number.
我的思维过程是,如果自然数为偶数,则可以表示为
double(nat_to_bin n)
但是,在我的Fixpoint定义中,当我尝试编写
(evenb n' = true) => double(nat_to_bin)
我出错了,因为evenb n'不是nat的构造函数。我有什么办法可以创建一个条件,使上面的行成为有效的函数定义,而无需更改nat的定义?
答案 0 :(得分:2)
没关系,我想出了一个解决方案。我可以写这个词
match (evenb n') with
| true => ....
尽管带我一会儿。