# Semantics

Consider a typed programming language where we divide the constructors into three colours:

- Value constructors, which can be copied or discarded, such as 0, succ, true, cons.

- Central constructors, which cannot be copied or discarded, such as ref or rand.

- Process constructors, where order of evaluation is important, such as := or print.

We have seen example flow graphs for such a language, but what structures are necessary to give it a semantics?