sig
  type t =
      Unit
    | Int of int64
    | Bool of bool
    | Float of float
    | String of string
    | Enum of Value.t list
    | Tuple of Value.t list
    | Dict of (string * Value.t) list
    | Sum of string * Value.t list
    | Null
    | Value of Value.t
    | Arrow of string
    | Rec of (string * int64) * Value.t
    | Var of (string * int64)
    | Ext of (string * int64) * Value.t
  val free_vars : Value.t -> (string * int64) list
  val equal : Value.t -> Value.t -> bool
  val to_string : Value.t -> string
  exception Parse_error of string
  val of_string : string -> Value.t
end