sequence.mli 954 Bytes
Newer Older
1
val nil_type: Types.descr
2
val nil_node: Types.node
3
val nil_atom: Atoms.v
4
5
val any: Types.descr
val seqseq: Types.descr
6
val string: Types.descr
7
8
9
10

val concat: Types.descr -> Types.descr -> Types.descr
val flatten: Types.descr -> Types.descr
val map: (Types.descr -> Types.descr) -> Types.descr -> Types.descr
11

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

val star: Types.descr -> Types.descr
  (* For a type t, returns [t*] *)
18
val plus: Types.descr -> Types.descr
19
20
21
22
23
24
25
26

val approx: Types.descr -> Types.descr
  (*  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
29
30

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