sig
  type t
  and v =
      VrNumber of int
    | VrString of string
    | VrThing of Thing.t
    | VrBool of bool
    | VrFunction of (int * (Expr.v list -> Expr.v))
    | VrExtern of int
    | VrHtml of Html.t list
    | VrInFile of Pervasives.in_channel
    | VrOutFile of Pervasives.out_channel
    | VrDir of Unix.dir_handle
    | VrFloat of float
    | VrArray of (int, Bigarray.int_elt, Bigarray.c_layout) Bigarray.Array1.t
    | VrError
  val scan : string -> Expr.t
  val eval : Expr.t -> Expr.v
  val string_of_var : Expr.v -> string
  val dump : (string -> unit) -> Expr.t -> unit
  val var_new : string -> Expr.v -> unit
  val var_del : string -> unit
  val var_get : string -> Expr.v
  val var_init : unit -> unit
  val var_restore : unit -> unit
end