val repr: (ScTypes.refs -> ScTypes.types option ScTypes.Refs.range) -> ScTypes.expression -> ScTypes.types (** 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 result (** Numeric (any format) *) val f_num: DataType.Num.t result (** Date *) val f_date: DataType.Num.t result (** Number *) val f_number: DataType.Num.t result (** Boolean result *) val f_bool: DataType.Bool.t result (** String *) val f_string: DataType.String.t result (** Catalog *) val register0: string -> (* The function name *) 'a result -> (* The return type *) (unit -> 'a) (* The function to call *) -> unit val register1: string -> (* The function name *) 'a typ -> (* The signature *) 'b result -> (* The return type *) ('a -> 'b) (* The function to call *) -> unit val register2: string -> (* The function name *) ('a typ * 'b typ) ->(* The signature *) 'c result -> (* 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 result -> (* 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