Column Head
First cell in a column; it contains a label identifying the semantic of the following (column) data cells.
Row Head
First cell in a row; it contains a label identifying the semantic of the following (row) data cells.
Head Column
The first column; it contains row heads.
Head Row
The first Row; it contains column heads.
Data Cell
A cell that holds a datum.
Functional Specification
Column width MUST be >= the maximum content width of its descendent cells
Row height MUST be >= the maximum content height of its descendent cells
Columns MAY be required to all be equal width. If so, column widths MUST be equal to the naturally widest column excluding the Head Row.
Rows MAY be required to all be equal height. If so, row heights MUST be equal to the naturally highest row excluding the Head Column.
A cell MAY have a limited width and/or height. If a cell has a limited width and height, and its datum overflows, then said overflow must be discarded (in other words the datum is truncated).
4 which closed this was ultimately less ambitious than this issue set out initially. The terminology and specification are OK but in the context of applying them to Haskell it turned out that I was better off seeking a true MVP rather than a conceptually-polished result.
Create a function that can render a table layout.
Terminology
First cell in a column; it contains a label identifying the semantic of the following (column) data cells.
First cell in a row; it contains a label identifying the semantic of the following (row) data cells.
The first column; it contains row heads.
The first Row; it contains column heads.
A cell that holds a datum.
Functional Specification