data mutable writable = Writable { contents: () } data frozen a = Frozen { contents: (a | duplicable a) } val new () : writable = Writable { contents = () } val set [a] (consumes r: writable, x: a | duplicable a) : (| r @ frozen a) = r.contents <- x; tag of r <- Frozen val get [a] (r: frozen a) : a = r.contents (* Local Variables: compile-command: "mezzo woref.mz" End: *)