ocamlc の極めて極めて内部的なこと
ほとんど個人的メモです。
Identifier について。
- 型も値も structure 中では pos >= 0 の固有 id を持つ。このため、type t と let t = が存在しても混乱しない。
- 型は structure 中に同名の物は出現できない。リンク時にも値を作らない。よって、structure 外部には pos = -1 として export する。
- 値は structure 中に同名の物が複数出現してもよい。値を生成するため、structure 外部には coercion した後の pos >= 0 が付く。
外部からは t:-1 として見える型を、structure 中に求めるとして、t:92, t:95 という identifier があったとしても、これだけの情報では t:-1 が t:92 か t:95 か判らない。どちらが型定義に関係するか判っていなければ区別が付かない。
うー、そういうとっても細かい情報。