liveBook · Manning

Essential complexity

As explained in Functional Design and Architecture: Examples in Haskell

Complexity inherent in the problem domain that cannot be removed without failing to support required behavior.

Essential complexity is the unavoidable difficulty imposed by required domain behavior. In spaceship control software, duplicated subsystems, fault-tolerant communication, and recovery codes cannot be removed without compromising the mission. section 1.3

The goal is not to erase essential complexity, but to prevent additional implementation complexity from obscuring it. A higher-level abstraction can hide inconsistent native APIs, unify syntax, and keep the program concise, clean, and testable. section 1.3

Spaceship engine control

The domain requires commands such as starting boosters and starting a rotary engine, but their native APIs differ. The essential behavior remains; an abstraction can present these operations consistently. section 1.3

Table 1.1 Spaceship API (view table figure)

Command

Native API function

Start boosters

int send(BOOSTERS, START, 0)

Stop boosters

int send(BOOSTERS, STOP, 0)

Start rotary engine

core::request::result
request_start(core::RotaryEngine)

Stop rotary engine

core::request::result
request_stop(core::RotaryEngine)

Compare engine-control operations with their differing native API calls. section 1.3

How Functional Design and Architecture: Examples in Haskell covers it

How deep it goes
Defines unavoidable complexity and illustrates it through architecture, then stops before measuring or formally decomposing complexity.
Examples
Uses spaceship redundancy, recovery codes, subsystem commands, and differing booster and rotary-engine APIs.
What you can do after
Evaluate/understand which complexity required behavior imposes and which abstraction choices can keep implementation concerns manageable.
How it connects
Connects essential complexity with accidental complexity, abstraction, APIs, command pattern, interfaces, and domain-specific languages.

Also explained in

Compare how 2 books explain essential complexity →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Functional Design and Architecture: Examples in Haskell. The section links point to the parts of the book it draws on.