Module Lisp_eval

exception Signal of Lisp.t
val signal : string -> Lisp.t list -> 'a
val error : string -> 'a
val error_message : Lisp.t -> string
type 'h state = {
  1. vars : (string * Lisp.t) list;
  2. funs : (string * Lisp.t) list;
  3. subrs : (string * 'h subr) list;
  4. specials : (string * 'h subr) list;
  5. commands : (string * Lisp.t) list;
  6. docs : (string * string) list;
  7. specpdl : (string * Lisp.t option) list;
  8. host : 'h;
  9. fuel : int;
  10. failed : 'h state option Stdlib.ref;
}
and 'h subr = 'h state -> Lisp.t list -> Lisp.t * 'h state
exception Error of Lisp.t
val protect : 'h state -> ('h state -> 'a * 'h state) -> ('a, Lisp.t) Stdlib.result * 'h state
val raise_error : 'h state -> Lisp.t -> 'a
val create : ?fuel:int -> 'h -> 'h state
val define_subr : ?interactive:string -> ?doc:string -> string -> 'h subr -> 'h state -> 'h state
val define_special : string -> 'h subr -> 'h state -> 'h state
val eval : 'h state -> Lisp.t -> Lisp.t * 'h state
val apply : 'h state -> Lisp.t -> Lisp.t list -> Lisp.t * 'h state
val progn : 'h state -> Lisp.t list -> Lisp.t * 'h state
val load : 'h state -> string -> 'h state
val get_var : 'h state -> string -> Lisp.t option
val set_var : string -> Lisp.t -> 'h state -> 'h state
val function_of : 'h state -> string -> Lisp.t option
val interactive_spec : 'h state -> Lisp.t -> Lisp.t option
val documentation : 'h state -> Lisp.t -> string option