[Haskell-cafe] Destructive updates to plain ADTs