Search in sources :

Example 1 with Plus

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)));
}
Also used : Times(catdata.fql.decl.SigExp.Times) Plus(catdata.fql.decl.SigExp.Plus) Pair(catdata.Pair)

Example 2 with Plus

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));
}
Also used : Plus(catdata.fql.decl.SigExp.Plus) Pair(catdata.Pair)

Example 3 with Plus

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);
}
Also used : Plus(catdata.fql.decl.SigExp.Plus) LinkedList(java.util.LinkedList) Pair(catdata.Pair)

Example 4 with Plus

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)));
}
Also used : Times(catdata.fql.decl.SigExp.Times) Plus(catdata.fql.decl.SigExp.Plus) Pair(catdata.Pair)

Example 5 with Plus

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));
}
Also used : Plus(catdata.fql.decl.SigExp.Plus) Pair(catdata.Pair)

Aggregations

Pair (catdata.Pair)6 Plus (catdata.fql.decl.SigExp.Plus)6 Times (catdata.fql.decl.SigExp.Times)3 LinkedList (java.util.LinkedList)2 Quad (catdata.Quad)1 Triple (catdata.Triple)1 FQLException (catdata.fql.FQLException)1 Fn (catdata.fql.Fn)1 Arr (catdata.fql.cat.Arr)1 FinCat (catdata.fql.cat.FinCat)1 Inst (catdata.fql.cat.Inst)1 Apply (catdata.fql.decl.MapExp.Apply)1 Case (catdata.fql.decl.MapExp.Case)1 Comp (catdata.fql.decl.MapExp.Comp)1 Const (catdata.fql.decl.MapExp.Const)1 Curry (catdata.fql.decl.MapExp.Curry)1 Dist1 (catdata.fql.decl.MapExp.Dist1)1 Dist2 (catdata.fql.decl.MapExp.Dist2)1 FF (catdata.fql.decl.MapExp.FF)1 Fst (catdata.fql.decl.MapExp.Fst)1