diff options
Diffstat (limited to 'typing.cpp')
-rw-r--r-- | typing.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -185,15 +185,15 @@ substitute(ATuple* tup, AST* from, AST* to) substitute(dynamic_cast<ATuple*>(tup->at(i)), from, to); } -TSubst -compose(const TSubst& delta, const TSubst& gamma) // TAPL 22.1.1 +TEnv::Subst +compose(const TEnv::Subst& delta, const TEnv::Subst& gamma) // TAPL 22.1.1 { - TSubst r; - for (TSubst::const_iterator g = gamma.begin(); g != gamma.end(); ++g) { - TSubst::const_iterator d = delta.find(g->second); + TEnv::Subst r; + for (TEnv::Subst::const_iterator g = gamma.begin(); g != gamma.end(); ++g) { + TEnv::Subst::const_iterator d = delta.find(g->second); r.insert(make_pair(g->first, ((d != delta.end()) ? d : g)->second)); } - for (TSubst::const_iterator d = delta.begin(); d != delta.end(); ++d) { + for (TEnv::Subst::const_iterator d = delta.begin(); d != delta.end(); ++d) { if (gamma.find(d->first) == gamma.end()) r.insert(*d); } @@ -213,10 +213,10 @@ substConstraints(TEnv::Constraints& constraints, AType* s, AType* t) } } -TSubst +TEnv::Subst TEnv::unify(const Constraints& constraints) // TAPL 22.4 { - if (constraints.empty()) return TSubst(); + if (constraints.empty()) return Subst(); AType* s = constraints.begin()->first; AType* t = constraints.begin()->second; Constraints cp = constraints; @@ -226,10 +226,10 @@ TEnv::unify(const Constraints& constraints) // TAPL 22.4 return unify(cp); } else if (s->var() && !t->contains(s)) { substConstraints(cp, s, t); - return compose(unify(cp), TSubst(s, t)); + return compose(unify(cp), Subst(s, t)); } else if (t->var() && !s->contains(t)) { substConstraints(cp, t, s); - return compose(unify(cp), TSubst(t, s)); + return compose(unify(cp), Subst(t, s)); } else if (s->kind == AType::EXPR && s->kind == t->kind && s->size() == t->size()) { for (size_t i = 0; i < s->size(); ++i) { AType* si = dynamic_cast<AType*>(s->at(i)); @@ -245,9 +245,9 @@ TEnv::unify(const Constraints& constraints) // TAPL 22.4 } void -TEnv::apply(const TSubst& substs) +TEnv::apply(const TEnv::Subst& substs) { - FOREACH(TSubst::const_iterator, s, substs) + FOREACH(Subst::const_iterator, s, substs) FOREACH(Frame::iterator, t, front()) if (*t->second == *s->first) t->second = s->second; |