2016
DOI: 10.1145/2914770.2837634
|View full text |Cite
|
Sign up to set email alerts
|

Effects as sessions, sessions as effects

Abstract: Effect and session type systems are two expressive behavioural type systems. The former is usually developed in the context of the lambda-calculus and its variants, the latter for the pi-calculus. In this paper we explore their relative expressive power. Firstly, we give an embedding from PCF, augmented with a parameterised effect system, into a session-typed pi-calculus (session calculus), showing that session types are powerful enough to express effects. Secondly, we give a reverse embedding, from the sessio… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
30
0

Year Published

2016
2016
2021
2021

Publication Types

Select...
6
2

Relationship

3
5

Authors

Journals

citations
Cited by 25 publications
(30 citation statements)
references
References 54 publications
(58 reference statements)
0
30
0
Order By: Relevance
“…Our results show that the calculus in [27] is not only expressed but also reasoned in HO via precise encodings (with a limited form of arrow types: C → and C ). The work [30] studies two encodings: from PCF with an effect system into a session-typed π -calculus, and its reverse. The reverse encoding is used to implement session channel passing in Concurrent Haskell.…”
Section: Related Workmentioning
confidence: 99%
“…Our results show that the calculus in [27] is not only expressed but also reasoned in HO via precise encodings (with a limited form of arrow types: C → and C ). The work [30] studies two encodings: from PCF with an effect system into a session-typed π -calculus, and its reverse. The reverse encoding is used to implement session channel passing in Concurrent Haskell.…”
Section: Related Workmentioning
confidence: 99%
“…EDSL EDSLs have been realised for: Haskell [36,30,35]; Go [25]; and Rust [22]. These approaches follow our approach, however, the host language chosen is not as expressive in describing global session description and thus do not allow for reasoning on message descriptions.…”
Section: Related Workmentioning
confidence: 99%
“…Lines 2-7 define a type and a function for logical operations over boolean values. The function logic_server (lines [8][9][10][11][12][13][14] describes the body of the server. An expression branch~left:(s, cont 1 )~right:(s, cont 2 ) offers a choice between labels left and right to the peer, 4 and it continues to cont 1 when label left is selected, or to cont 2 when right is selected.…”
Section: Branching and Recursionmentioning
confidence: 99%
“…It receives a branch label first using one of the two slot specifiers. 8 Then, according to the received label, branch assigns the continuation session to the slot, and invokes the continuation function. We need distinct slot specifiers for different continuations because the pre-types in the two continuations can be different from each other, and a slot specifier assigning to the slot cannot have two different types in the third parameter.…”
Section: Listingmentioning
confidence: 99%
See 1 more Smart Citation