Module Datalog.Column
Datalog tables are represented as a nesting of multiple maps; for instance, a binary relation on integers is represented as a unit Int.Map.t Int.Map.t.
A Column represents a single argument of a relation, and contains enough information to be combined with other columns into a n-ary relation.
Note: The Column.id and Column.hlist types encode some precise type-level information that enables an easy-to-use syntax for the create_relation function below. Understanding the type parameters for Column.id and Column.hlist is not necessary to use this module.
A value of type ('t, 'k, 'v) id represents a column with keys of type 'k.
The 't and 'v parameters are only relevant when applied to a column that is part of a schema.
type (_, _, _) hlist = | [] : ('v, Flambda2_datalog.Datalog.nil, 'v) Flambda2_datalog.Datalog.Column.hlist| :: : ('t, 'k, 's) Flambda2_datalog.Datalog.Column.id * ('s, 'ks, 'v) Flambda2_datalog.Datalog.Column.hlist -> ('t, 'k -> 'ks, 'v) Flambda2_datalog.Datalog.Column.hlist
module type S = sig ... endmodule Make
(X : sig ... end) :
Flambda2_datalog.Datalog.Column.S with type t = int