type t val eval: (ScTypes.refs -> ScTypes.result option ScTypes.Refs.range) -> ScTypes.expression -> ScTypes.result val repr: Format.formatter -> t -> unit val get_catalog: unit -> t (** Type definitions *) type 'a typ val t_bool: DataType.Bool.t typ val t_int: DataType.Num.t typ val t_string: UTF8.t typ val t_list: 'a typ -> 'a list typ (** Result formats *) type 'a returnType (** Numeric (any format) *) val f_num: DataType.Num.t returnType (** Date *) val f_date: DataType.Num.t returnType (** Number *) val f_number: DataType.Num.t returnType (** Boolean result *) val f_bool: DataType.Bool.t returnType (** String *) val f_string: DataType.String.t returnType (** Catalog *) val register0: string -> (* The function name *) 'a returnType -> (* The return type *) (unit -> 'a) (* The function to call *) -> unit val register1: string -> (* The function name *) 'a typ -> (* The signature *) 'b returnType -> (* The return type *) ('a -> 'b) (* The function to call *) -> unit val register2: string -> (* The function name *) ('a typ * 'b typ) ->(* The signature *) 'c returnType -> (* The return type *) ( 'a -> 'b -> 'c) (* The function to call*) -> unit val register3: string -> (* The function name *) ('a typ * 'b typ * 'c typ) ->(* The signature *) 'd returnType -> (* The return type *) ( 'a -> 'b -> 'c -> 'd) (* The function to call*) -> unit (** [wrap f] run [f] inside a context where there is no functions *) val wrap: (unit -> 'a) -> 'a