π計算でリスト

あえて教科書とかを見ないでやってみる.

agent Constant1(x,a)   = 'x<a>.Constant1(x,a)
agent Constant2(x,a,b) = 'x<a,b>.Constant2(x,a,b)
agent Cons(cons) = cons(r,hd,tl).(Cons(cons) | Constant2(r,hd,tl))
agent Head(head) = head(r,list).list(hd,tl).(Head(head) | Constant1(r,hd))
agent Tail(tail) = tail(r,list).list(hd,tl).(Tail(tail) | Constant1(r,tl))

Constant1 と Constant2 は,x に値を送信し続けるプロセスで,これで定数を表現できる気がする.純粋関数型的.
こういうのを書いてると,非常に型がほしくなるなぁ.