Pairing Primitives
pr(x,y): returns a pair containing x and y.
ispr(x): returns 't' if x is a pair; 'f' otherwise
1st(pr(x,y))=x: 1st returns the first value of the pair
2nd(pr(x,y))=y: 2nd returns the second value.
Actor Cells
Bcell=rec(λb.λc.λm.
if (get?(m),
seq(become(b(c)), send(cust(m),c)),
if (set?(m),
become(b(contents(m))),
become(b(c)))))
Using the cell:
letactor{a:=Bcell(0)}e where
e=seq(send(a,mkset(3)), send(a,mkset(5)), send(a,mkget(c)))
A reference cell in π-calculus
Example using reference cell:
will receive the value v over the channel d assuming no other processes interacting with the reference cell.
Here is today's exercise:
1. Use λ-calculus and pairing primitives to define the following functions (appear in the "Actor Cells")
2. What is the difference between REF(r,w,i) and Bcell? (Hint: the target to be notified)
Modify the actor cell so that it behalves as the π-calculus cell. And also modify the π-calculus cell so that it behalves as the actor cell.