DataOp consists of elements that represent operations on Data, including #i , representing the selection of the ith component of a tuple (for each i > 0 ); similarly, DataPred consists of elements that represent predicates on Data, including _ = _ , representing the equality of two elements of Datum. By using such representations of operations and predicates, the need for a higherorder metanotation (letting data operations and predicates themselves be arguments of primitive actions) is avoided. |