sig
type t = Validate.t
type 'a check = 'a -> t
val pass : t
val fail : string -> t
val fails : string -> 'a -> ('a -> Sexplib.Sexp.t) -> t
val of_list : t list -> t
val name : string -> t -> t
val name_list : string -> t list -> t
val fail_fn : string -> 'a check
val pass_bool : bool check
val pass_unit : unit check
val protect : 'a check -> 'a check
val result : t -> unit Or_error.t
val errors : t -> string list
val maybe_raise : t -> unit
val valid_or_error : 'a -> 'a check -> 'a Or_error.t
val field : 'record -> ('record, 'a) Fieldslib.Field.t -> 'a check -> t
val field_folder :
'record ->
'a check -> t list -> ('record, 'a) Fieldslib.Field.t -> t list
val all : 'a check list -> 'a check
val of_result : ('a -> (unit, string) Result.t) -> 'a check
val of_error : ('a -> unit Or_error.t) -> 'a check
val booltest : ('a -> bool) -> if_false:string -> 'a check
val pair : fst:'a check -> snd:'b check -> ('a * 'b) check
val list_indexed : 'a check -> 'a list check
val list : name:('a -> string) -> 'a check -> 'a list check
val first_failure : t -> t -> t
val of_error_opt : string option -> t
val alist : name:('a -> string) -> 'b check -> ('a * 'b) list check
end