type Cell<a> = iterative choice { .end => ?, .split => [dual self] self, .take => (a) choice { .put => [a] self, }, }
A shared cell containing a value.
.end— release the cell..split— create another handle to the same cell..take— remove the current value and continue by choosing.put.