type 'a window = | Min of 'a | Max of 'a | Counter | Previous of 'a | Sum of 'a type 'a t = | Empty | Expr of 'a t | Literal of string | Integer of string | Path of 'a | Concat of 'a t list | Function of string * 'a t list | Nvl of 'a t list | Join of string * 'a t list | Window of ('a t window * 'a t list * 'a t list) | BOperator of binary_operator * 'a t * 'a t | GEquality of binary_operator * 'a t * 'a t list | Function' of funct * 'a t list and binary_operator = | Equal | Different | Add | Minus | Division | LT | GT | And | Or and funct = | Upper | Trim val cmp : ('a -> 'a -> int) -> 'a t -> 'a t -> int (** Compare two expressions *) val fold_values : f:('b -> 'a -> 'b) -> init:'b -> 'a t -> 'b (** Fold over all the path presents inside the expression. Used for example to identify all the columns to extract from the file. The order is not guarantee to follow the order from the expression *) val map : f:('a -> 'b) -> 'a t -> 'b t (** The map function. Mainly used in the configuration migration. *) val name_of_operator : binary_operator -> string val name_of_window : 'a window -> string val map_window : f:('a -> 'b) -> 'a window -> 'b window val window_of_name : string -> 'a option -> 'a window val name_of_function : funct -> string