{NewCell Init ?P}: input initial value Init,
output a port P identifying the cell
proc {Access P X} {Send P get(X)} end proc {Assign P X} {Send P put(X)} end proc {NewCell Init P} thread {CellAgent Init {NewPort $ P}} end end proc {CellAgent V L} case L of get(X)|T then X=V {CellAgent V L} [] put(X)|T then {CellAgent X L} end end