【发布时间】:2011-02-23 11:28:08
【问题描述】:
我无法理解构造函数的原理及其工作原理。
例如,在 Coq 中,我们被教导这样定义自然数:
Inductive nat : Type :=
| O : nat
| S : nat -> nat.
并且被告知S 是一个构造函数,但这究竟是什么意思?
如果我这样做:
Check (S (S (S (S O)))).
我知道它是4,类型为nat。
这是如何工作的,Coq 是如何知道(S (S (S (S O)))) 代表4?
我想这个问题的答案是 Coq 中一些非常聪明的背景魔法。
【问题讨论】:
-
(S (S (S (S O))))的漂亮打印为4只是一种方便,您不应该让您分心。如果您想了解构造函数是什么,请使用构造函数Z(为零)和N(下一个)定义您自己的类型naturals。那么魔法就不会发生了。
标签: constructor coq