flix

0.67.2

Fixpoint3.Ast.Ram.RamTerm

enum RamTermSource
case Lit(Boxed, Type)case ProvMax(Vector[(RowVar, Int32)])case RowLoad(RowVar, Int32, Type, RelSym)case Meet(Boxed -> (Boxed -> Boxed), RamTerm, (RowVar, RelSym), Type)case App1(Boxed -> Boxed, RamTerm, Type)case App2(Boxed -> (Boxed -> Boxed), RamTerm, RamTerm, Type)case App3(Boxed -> (Boxed -> (Boxed -> Boxed)), RamTerm, RamTerm, RamTerm, Type)case App4(Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed))), RamTerm, RamTerm, RamTerm, RamTerm, Type)case App5(Boxed -> (Boxed -> (Boxed -> (Boxed -> (Boxed -> Boxed)))), RamTerm, RamTerm, RamTerm, RamTerm, RamTerm, Type)

Represents a Relational Algebra Machine (RAM) term.

Lit(val, id) represents the literal val.

ProvMax([(rv1, i1), (rv2, i2), (rv3, i3), ...]) where represents computing max(rv1[i1], rv2[i2], rv3[i3], ...).

RowLoad(x, i, type, relSym) represents an index into the tuple bound to the local variable x, i.e. x[i]. x is a tuple from relSym.

Meet(meet, term, (rv, relSym), id) represents the meet of term with the lattice element of rv.

App1(f, term1) represents f(term1).

App2(f, term1, term2) represents f(term1, term2).

App3(f, term1, term2, term3) represents f(term1, term2, term3).

App4(f, term1, term2, term3, term4) represents f(term1, term2, term3, term4).

App5(f, term1, term2, term3, term4, term5) represents f(term1, term2, term3, term4, term4).

Instances

instance ToString[RamTerm]Source