タグの解釈
タグの基本はラベル(マーカー)。型情報としての利用は付随的/二次的であり、ラベルをインスタンス型情報として流用しているに過ぎない。利用可能な範囲も限定的である。
バリデータをvalidateとすると:
- 基本は、validate(x, T) Tは型表現
- validate(x) → validate(x, tag(x)) と補完する。
- tag(x) = t (タグ名)として、tをレジストリから探す
- tが見つからないときの処理を細工する
- validate(x, t)のときは、tが見つからないなら、人間またはプログラムのミスと判断する。
- validate(x, t = tag(t)) のときは、見つからなくてもエラーとはしない。
function validate(x, schema) {
if (schema) {
validateAgainst(x, schema);
} else {
validateSolely(x);
}
}function validateSolely(x) {
var t = tag(x);
var schema = findSchema(t); // 名前からなんらかの検証用実体を探す
if (schema) {
return validateAgainst(x, schema);
} else {
true;
}
}