https://youtu.be/mVVNJKv9esE?si=a6x3fZwYFzJfGlHa
- In a directed acyclic graph where nodes are outcomes, the root node is the highest level of abstraction. Leaf nodes are the smallest building blocks that allow the expression of an outcome that fits into the domain described by the graph.
- A declarative expression works best for well defined domains, where the number of outcomes is clearly defined, the outcomes are well delineated and their variants enumerated.
- A functional expression works best where flexibility is needed. If declarative is the product catalog of a factory, functional is the blueprint of the production line.
- Level of abstraction is a cross section through the three of abstraction. The top and bottom lattitude can be defined arbitrarily, based on need or type of outcome.