Pure is the value constructor that ends a free-monad computation. It stores the final value that interpretation should return, marking the end of the chain rather than another domain operation. section 6.3.1 section 6.3.2
Smart constructors place Pure in a continuation field as a temporary placeholder. Monadic binding later replaces that placeholder with the next computation, leaving one final Pure terminator at the end of the nested chain. section 6.3.1 section 6.3.2
A sandwich operation
startNewSandwich constructs Free (StartNewSandwich breadType component Pure), while addComponent and finishSandwich use the same Pure placeholder. Chaining these operations nests later continuations behind the scenes.

