Implementing cells with Is Det. Section 13.1.12 explains the Is Det operation, which can be used to check the status of a dataflow variable. For this exercise, let us examine the expressive power of Is Det.
(a) Define the operations New Cell and Exchange in the declarative model extended with Is Det. The semantics of these operations should be identical to their semantics with cells, as given in this chapter. It is straightforward to define a solution, albeit an inefficient one, that works in a sequential model. Hint: use the function Last Cons, defined as
Using Last Cons lets us get around the monotonicity of the store. The idea is to build incrementally a list with unbound tail and use Is Det to get its latest known element.
(b) Does the above solution work in a concurrent model, i.e., when exchanges on the same cell are done concurrently? Is such a solution possible? In the light of this result, comment on the relationship between Is Det and explicit state.