use of catdata.fql.decl.SigExp.Plus in project fql by CategoricalData.
the class MapExpChecker method visit.
@Override
public Pair<SigExp, SigExp> visit(FQLProgram env, Dist1 e) {
SigExp aa = e.a.typeOf(env);
SigExp bb = e.b.typeOf(env);
SigExp cc = e.c.typeOf(env);
return new Pair<>(new Times(aa, new Plus(bb, cc)), new Plus(new Times(aa, bb), new Times(aa, cc)));
}
use of catdata.fql.decl.SigExp.Plus in project fql by CategoricalData.
the class MapExpChecker method visit.
@Override
public Pair<SigExp, SigExp> visit(FQLProgram env, Inl e) {
SigExp a = e.s.typeOf(env);
SigExp b = e.t.typeOf(env);
return new Pair<>(a, new Plus(a, b));
}
use of catdata.fql.decl.SigExp.Plus in project fql by CategoricalData.
the class MapExpChecker method visit.
@Override
public Pair<SigExp, SigExp> visit(FQLProgram env, Case e) {
List<String> l = new LinkedList<>(seen);
Pair<SigExp, SigExp> lt = e.l.accept(env, this);
seen = l;
Pair<SigExp, SigExp> rt = e.r.accept(env, this);
seen = l;
if (!lt.second.equals(rt.second)) {
throw new RuntimeException("target schema mismatch on " + e + ": " + lt.second + " and " + rt.second);
}
return new Pair<>(new Plus(lt.first, rt.first), lt.second);
}
use of catdata.fql.decl.SigExp.Plus in project fql by CategoricalData.
the class MapExpChecker method visit.
@Override
public Pair<SigExp, SigExp> visit(FQLProgram env, Dist2 e) {
SigExp aa = e.a.typeOf(env);
SigExp bb = e.b.typeOf(env);
SigExp cc = e.c.typeOf(env);
return new Pair<>(new Plus(new Times(aa, bb), new Times(aa, cc)), new Times(aa, new Plus(bb, cc)));
}
use of catdata.fql.decl.SigExp.Plus in project fql by CategoricalData.
the class MapExpChecker method visit.
@Override
public Pair<SigExp, SigExp> visit(FQLProgram env, Inr e) {
SigExp a = e.s.typeOf(env);
SigExp b = e.t.typeOf(env);
return new Pair<>(b, new Plus(a, b));
}
Aggregations