The document discusses domain modeling using an algebraic approach with functions. It explains that a domain model describes entities, attributes, roles, relationships and constraints in a problem domain. It advocates modeling the domain as an algebra of types and functions, with types representing entities and functions representing behaviors. This approach uses algebraic data types to define immutable states and puts behaviors in modules as functions. The document provides examples of modeling a trading domain as an algebra of types and functions, and discusses how this functional approach enables organic evolution of domain models through algebraic composition.