1signature Coding =
2sig
3
4  type 'a reader = (string * int, 'a) optmonad.optmonad
5  val getc : char reader
6  val literal : string -> string reader
7  val takeP : (char -> bool) -> string reader
8  val || : 'a reader * 'a reader -> 'a reader
9  val >- : 'a reader * ('a -> 'b reader) -> 'b reader
10  val >> : 'a reader * 'b reader -> 'b reader
11  val >* : 'a reader * 'b reader -> ('a * 'b) reader
12  val >-> : 'a reader * 'b reader -> 'a reader
13  val fail : 'a reader
14  val return : 'a -> 'a reader
15  val eof : unit reader
16  val chop : int -> string reader
17  val length_encoded : (string -> 'a option) -> 'a reader
18  val lift : 'a reader -> string -> 'a option
19  val map : ('a -> 'b) -> 'a reader -> 'b reader
20  val many : 'a reader -> 'a list reader
21
22  structure StringData : sig
23    val encode : string -> string
24    val decode : string -> string option
25    val reader : string reader
26
27    val encodel : string list -> string
28    val decodel : string -> string list option
29  end
30
31  structure IntData : sig
32    val encode : int -> string
33    val decode : string -> int option
34    val reader : int reader
35  end
36
37  structure CharData : sig
38    val encode : char -> string
39    val decode : string -> char option
40    val reader : char reader
41  end
42
43  structure BoolData : sig
44    val encode : bool -> string
45    val decode : string -> bool option
46    val reader : bool reader
47  end
48
49  structure OptionData : sig
50    val encode : ('a -> string) -> 'a option -> string
51    val decode : 'a reader -> string -> 'a option option
52    val reader : 'a reader -> 'a option reader
53  end
54
55  structure PairData : sig
56    val encode : ('a -> string) * ('b -> string) -> 'a * 'b -> string
57    val decode : 'a reader * 'b reader-> string -> ('a * 'b) option
58    val reader : 'a reader * 'b reader -> ('a * 'b) reader
59  end
60
61  structure KernelNameData : sig
62    val encode : KernelSig.kernelname -> string
63    val decode : string -> KernelSig.kernelname option
64    val reader : KernelSig.kernelname reader
65  end
66
67
68end
69