So, why would you want to use constructors directly or mix declarative and imperative forms in defsynopsis? There are several reasons for doing so.

  1. Some people prefer to declare (or should I say, create) their arbitrary texts, options and groups locally, in files, modules or ASDF components where they belong. In such a case, you need to keep references to the corresponding objects in order to compute the synopsis in the end.
  2. Since using constructors explicitly allows you to keep references to the created objects, these objects can be reused. For instance, you can use the same text at different places, you can also use a single option several times, or even a single group several times so that its items appear in different places etc. Note that Clon knows its way around multiple occurrences of the same object: even if you use the same option object several times in a synopsis, Clon only maintains a single option definition.