type t = | Basic: 'a ScTypes.Type.t -> t (** A direct type *) | Formula: formula -> t (** A formula *) | Undefined: t (** The content is not defined *) and formula = | Expression of ScTypes.Expr.t (** A valid Expr.t *) | 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 -> Functions.C.t -> ((int * int) -> ScTypes.Result.t option) -> ScTypes.Result.t (** 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