par1 : L1 IO a -@ L1 IO b -@ L1 IO (LPair a b)
par : L IO a -@ L IO b -@ L IO (a, b)
Channels indexed by session types
send : LinearIO io =>
(1 _ : Channel (Send ty s)) ->
ty ->
L1 io (Channel s)
recv : LinearIO io =>
Channel (Recv ty s) -@
L1 io (Res ty (const (Channel s)))
end : LinearIO io => Channel End -@ L io ()
fork : (0 s : Session) ->
(Channel s -@ L IO a) -@
(Channel (Dual s) -@ L IO b) -@
L IO (a, b)
The main takeaways are:
Combinators for parallel computing
Channels indexed by session types