update calculus for expressing type-safe program updates | lit.salon