type Cell (Cell( x[] )); cell := λ(: x x). (: ( (let c (Cell( (close x) ))) c ) Cell); deref := λ(: c Cell). (: ( (let x (open(.1(as c Tag)))) x ) x); set[] := λ(: c Cell)(: x x). (: ( (set[]( (.1(as c Tag)) x )) ) Nil);