sig
  type source = in_channel
  val parse : source -> 'a t -> ('a, error) result
  val parse' : source -> 'a t -> ('a, string) result
  val parse_exn : source -> 'a t -> 'a
end