Import Upstream version 20180207
[hcoop/debian/mlton.git] / lib / mlton / set / universe.sig
1 (* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
3 *
4 * MLton is released under a BSD-style license.
5 * See the file MLton-LICENSE for details.
6 *)
7
8 signature UNIVERSE =
9 sig
10 include SET
11
12 structure B: T
13
14 datatype elt =
15 Base of B.t
16 | Pair of elt * elt
17 | Set of t
18 sharing type elt = E.t
19
20 val toBase: elt -> B.t
21 val toPair: elt -> elt * elt
22 val toSet: elt -> t
23
24 val cross: t * t -> t
25 val project1: t -> t
26 val project2: t -> t
27
28 val Union: t -> t
29 (* val Cross: t -> t *)
30
31 val lookup: t * E.t -> E.t option
32 val update: t * E.t * E.t -> t
33 val updateSet: t * t -> t
34 end