Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
model.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
type t = (Symbol.t, Value.t) Hashtbl.t let get_symbols (model : t) : Symbol.t List.t = Hashtbl.to_seq_keys model |> List.of_seq let get_bindings (model : t) : (Symbol.t * Value.t) List.t = Hashtbl.to_seq model |> List.of_seq let evaluate (model : t) (symb : Symbol.t) : Value.t Option.t = Hashtbl.find_opt model symb let hashtbl_iter f tbl = Hashtbl.iter (fun k v -> f (k, v)) tbl let pp_print_hashtbl ~pp_sep pp_v fmt v = Format.pp_print_iter ~pp_sep hashtbl_iter pp_v fmt v let pp_bindings fmt model = pp_print_hashtbl ~pp_sep:(fun fmt () -> Format.fprintf fmt "@\n") (fun fmt (key, data) -> let t = Symbol.type_of key in Format.fprintf fmt "(%a %a %a)" Symbol.pp key Ty.pp t Value.pp data ) fmt model let pp fmt model = Format.fprintf fmt "(model@\n @[<v>%a@])" pp_bindings model let to_string (model : t) : String.t = Format.asprintf "%a" pp model