我无法理解构造函数的原理及其工作原理。
例如,在 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 中一些非常聪明的背景魔法。