Traditional higher-order functional programming is validated by how its logical conclusion in the shape of a “Totally Functional” style is consistent with and indeed determined by some fundamental principles of Software Engineering. The key to Totally Functional Programming is the notion of “zoetic” representations of data which embody the behaviours that we hypothesise to underlie all conventional symbolic datatypes. These representations minimise the interpretation of symbolic data at each use, and thus embody the principle of reuse. Further, we develop a scheme for formal synthesis of generator functions for zoetic data which entirely avoid the need for a separate interpretation stage. This avoidance allows us to achieve a clear separati...