会话类型与会话余代数:深入解析
1. 会话类型概述
会话类型系统的类型由以下语法生成,相对于一组基本数据类型 $D$ 和可数的类型变量集合 $Var$:
p ::= ?T. T
|
!T. T
|
&{li : Ti}i∈I
|
⊕{li : Ti}i∈I
q ::= lin | un
T ::= d ∈D
|
end
|
q p
|
X ∈Var
|
μX.T
该语法有三个语法类别:预类型 $p$、限定符 $q$ 和会话类型 $T$。预类型 $p$ 是简单的通信动作,包括发送( ! )、接收( ? )、外部选择( & )和内部选择( ⊕ ),后面跟着一个或多个会话类型。最简单的会话类型是 $D$ 中的基本数据类型和由 end 表示的已完成或终止的协议。限定符和预类型也可以形成会话类型,如 q p 。 lin 限定符要求通信动作 $p$ 必须恰好执行一次,而 un 限定符允许 $p$ 被任意使用。最后,可以使用不动点运算符 μ 和类型变量形成递归会话类型。
我们假设递归类型是收缩且封闭的,即不包含 μX1.μX2 ... μXn.Xi 形式的子串且没有自由类型变量。为了简化表示,通常省略 lin 限定符,并假设每个类型以
超级会员免费看
订阅专栏 解锁全文
2665

被折叠的 条评论
为什么被折叠?



