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 か判らない。どちらが型定義に関係するか判っていなければ区別が付かない。

うー、そういうとっても細かい情報。