Types
=====

A workbook in Excel is a basically a 2D array of input/output cells. Each cell can have a value with one of following types

* **Blank** - an empty value. Mostly for blanks cells or used for optional arguments of functions.
* **Logical** - a boolean value
* **Number** - an equivalent of double, but without `NaN` or `Infinity`. Number also represents dates/timespans through serial datetime.
* **Text** - A text of up to 32767 characters
* **Error** - One of the excel errors, `#DIV/0`

In the future, we will call a union of these types a **scalar value**.

Workbook also contains formulas, a receipies that take a values and calculate a new values. Formulas are used in

* cells formula - in that case, the output of the formula is written into the cell
* names - although names are mostly used to refere to a range of cells, they are formulas and thus can contain any formula expression (e.g. `1+2`)
* array formulas - formula changes value of 2D array of cells.

Values used during formula evaluation can have the types that are in cell, but in addition can have also following types:

* **array** - a 2D array of scalar values.
* **reference** - A reference to a range of cells, possibly non-contiguous.
