sig
  exception CircularDefinition of Ast.typ * Ast.typ
  exception InexhaustiveMatch of Ast.expr
  exception ParseError of string
  exception RuntimeError of string
  exception TypeError of Ast.expr * Ast.typ
  exception UnboundVariable of string
  exception UndefinedValue of Ast.expr
  exception UnificationError of Ast.typ * Ast.typ
  val circular : Ast.typ -> Ast.typ -> 'a
  val inexhaustive : Ast.expr -> 'a
  val parse_error : string -> 'a
  val runtime_error : string -> 'a
  val type_error : Ast.expr -> Ast.typ -> 'a
  val unify_error : Ast.typ -> Ast.typ -> 'a
  val unbound_var : string -> 'a
  val undefined : Ast.expr -> 'a
  val show_circular : Ast.typ -> Ast.typ -> unit
  val show_inexhaustive : Ast.expr -> unit
  val show_parse_error : string -> unit
  val show_runtime_error : string -> unit
  val show_type_error : Ast.expr -> Ast.typ -> unit
  val show_unbound : string -> unit
  val show_undefined : Ast.expr -> unit
  val show_unify_error : Ast.typ -> Ast.typ -> unit
end