An imperative application script can become a declarative definition when it describes intended processes and logic instead of directly executing them. Rather than forking a process or evaluating a scenario immediately, the program defines those actions for a later interpreter. This separation creates room to redesign the implementation while preserving the application’s intent. section 9.1.3
A practical design sequence is:
- Imagine the embedded language from its usage point of view, even before the design compiles. section 9.1.3
- Use the proposed language to express business logic and assess whether the developer experience feels right. section 9.1.3
- Make the design compile, then make its definitions work through suitable interpreters. section 9.1.3
Defining process structure
Aliases such as process = forkProcess and scenario = evalLang make an application read as a declaration: process (forever (astronomer ch)) and scenario (forever (trackingCenter ch)). The application specifies concurrent responsibilities without exposing their execution directly.
