catstruct programs consist of two parts:
- The structure of the program as a binary tree
- A list of operators
The binary tree represents dyads, monads, and nilads. There's two types of leaf nodes, one for nilads and one for inputs, which don't have an associated entry in the list of operators. This allows more complex implicit input and reduces overhead for functions.