sequence.mli 852 Bytes
Newer Older
1
2
val nil_type: Types.t
val nil_node: Types.Node.t
3
val nil_atom: Atoms.v
4
5
6
val any: Types.t
val seqseq: Types.t
val string: Types.t
7

8
9
10
val concat: Types.t -> Types.t -> Types.t
val flatten: Types.t -> Types.t
val map: (Types.t -> Types.t) -> Types.t -> Types.t
11

12
val map_tree: 
13
  (Types.t -> Types.t * Types.t) -> Types.t -> Types.t
14
 (* input type -> (result, residual) *)         (* sequence type *)
15

16
val star: Types.t -> Types.t
17
  (* For a type t, returns [t*] *)
18
val plus: Types.t -> Types.t
19

20
val approx: Types.t -> Types.t
21
22
23
24
25
26
  (*  For a type t <= [Any*], returns the least type s such that:
      t <= [s*]
      
      In general, for an arbitrary type, returns the least type s such that:
      t <= (X where X = (s, X) |  Any \ (Any,Any))
  *)
27
28

  (** given a list of descrs create the sequence type from them *)
29
val seq_of_list: Types.t list -> Types.t
30