## Atomic Insight
In Terraform, modules are functions: variables are arguments, outputs are return values. Strings are the only type that passes between modules—lists require split()/join() workarounds, and resource names cannot use interpolated variables.
This functional framing resolves confusion about module boundaries. A module's "interface" is its declared variables and outputs, not its internal resource graph.
## Cross-Domain Applications
**Software Design**: The input/output contract model applies to any modular system—a module's value is its interface definition, not implementation.
**API Design**: Module outputs as return types mirror REST API response shapes; changing an output type is a breaking change.