Handling Object Identity
Object monoid calculus (= monoid calculus + SML-style objects):
++{ !x | x ? [ new(1), new(2) ], x := !x+1 }
Characteristics of the optimization framework:
it is based on denotational semantics (state transformers & nondeterminism);
the state is always single-threaded;
the resulting programs do destructive updates;
normalization eliminates unnecessary state manipulation;
it allows equational reasoning and optimization.