我无法理解构造函数的原理以及它的工作原理。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(SO))))''作为4'仅仅是一个方便你不应该让你分心。如果你想知道构造函数是什么,那么用构造函数'Z'(零)和'N'(下一个)定义你自己的类型'naturals'。那么没有什么魔法会发生。 – 2011-02-23 12:05:53