linol/src/sigs.ml
2024-05-22 14:28:42 +01:00

23 lines
675 B
OCaml

(** {2 Parametrized IO Interface} *)
module type IO = sig
type 'a t
val return : 'a -> 'a t
val failwith : string -> 'a t
val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t
val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t
val ( and+ ) : 'a t -> 'b t -> ('a * 'b) t
type env
type in_channel
type out_channel
val stdin : env -> in_channel
val stdout : env -> out_channel
val read : in_channel -> bytes -> int -> int -> unit t
val read_line : in_channel -> string t
val write : out_channel -> bytes -> int -> int -> unit t
val write_string : out_channel -> string -> unit t
val fail : exn -> unit t
val catch : (unit -> 'a t) -> (exn -> 'a t) -> 'a t
end