コンストラクターとは何か、およびその仕組みの原則を理解するのに苦労しています。
たとえば、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 の非常に巧妙なバックグラウンド マジックだと思います。