mirror of
https://github.com/c-cube/linol.git
synced 2025-12-06 03:05:31 -05:00
22 lines
650 B
OCaml
22 lines
650 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 in_channel
|
|
type out_channel
|
|
|
|
val stdin : in_channel
|
|
val stdout : 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
|