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