type t = | Basic: 'a ScTypes.types -> t (** A direct type *) | Formula: formula -> t (** A formula *) | Undefined: t (** The content is not defined *) and formula = | Expression of ScTypes.expression (** A valid expression *) | Error of int * UTF8.t (** When the expression cannot be parsed *) (** Load an expression *) val load: UTF8.t -> t val load_expr: t -> t val is_defined: t -> bool (** Evaluate the expression *) val eval: t -> (ScTypes.refs -> ScTypes.result option ScTypes.Refs.range) -> ScTypes.result (** Collect all the cell referenced in the expression *) val collect_sources: t -> Cell.Set.t (** Represent an expression *) val show: t -> UTF8.t val shift: (int * int) -> t -> t val (=): t -> t -> bool