Rel.Bag
Bags specification language.
Bags are multisets of values (rows).
TODO
row
we could likely get to a scheme where we work directly with Row
in the language (for now we only work with Col
) which should help SQL execution boilerplate. What happens to higher-order ?type unordered = unit order
The type for unordered.
The type for bags, multisets of values o type 'a
and an effect 'e
that can be applied on it.
val empty : ( 'a, 'e ) t
empty
is the empty bag.
union b0 b1
has the values of b0
and those of b1
.
foreach b f
are the values of b
mapped by f
and unioned.
where c e
is the bag e ()
if b
whenever c
is true
.
val pp : Stdlib.Format.formatter -> ( 'a, _ ) t -> unit
XXX. Fundamentaly this has nothing to do here.
val row : ( 'a -> 'r ) -> ( 'a -> 'r ) value
val inj : 'a -> 'a value