## 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.