Import Upstream version 20180207
[hcoop/debian/mlton.git] / mlton / atoms / type-ops.sig
CommitLineData
7f918cf1
CE
1(* Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh
2 * Jagannathan, and Stephen Weeks.
3 * Copyright (C) 1997-2000 NEC Research Institute.
4 *
5 * MLton is released under a BSD-style license.
6 * See the file MLton-LICENSE for details.
7 *)
8
9signature TYPE_OPS_STRUCTS =
10 sig
11 structure Tycon: TYCON
12
13 type t
14
15 val con: Tycon.t * t vector -> t
16 val deConOpt: t -> (Tycon.t * t vector) option
17 val layout: t -> Layout.t
18 end
19
20signature TYPE_OPS =
21 sig
22 (* Don't want to include TYPE_OPS_STRUCTS because don't want to propagate
23 * the Tycon structure, which will cause duplicate specifications later
24 * on.
25 *)
26 type realSize
27 type tycon
28 type wordSize
29 type t
30
31 val array: t -> t
32 val arrow: t * t -> t
33 val bool: t
34 val con: tycon * t vector -> t
35 val cpointer: t
36 val deArray: t -> t
37 val deArrow: t -> t * t
38 val deArrowOpt: t -> (t * t) option
39 val deConOpt: t -> (tycon * t vector) option
40 val deRef: t -> t
41 val deTuple: t -> t vector
42 val deTupleOpt: t -> t vector option
43 val deVector: t -> t
44 val deWeak: t -> t
45 val exn: t
46 val intInf: t
47 val isTuple: t -> bool
48 val list: t -> t
49 val real: realSize -> t
50 val reff: t -> t
51 val thread: t
52 val tuple: t vector -> t
53 val unit: t
54 val unitRef: t
55 val vector: t -> t
56 val weak: t -> t
57 val word: wordSize -> t
58 val word8: t
59 val word8Vector: t
60 val word32: t
61 end