Projects per year
Abstract / Description of output
We explore the design and implementation of Frank, a strict functional programming language with a bidirectional effect type system designed from the ground up around a novel variant of Plotkin and Pretnar’s effect handler abstraction.
Effect handlers provide an abstraction for modular effectful programming: a handler acts as an interpreter for a collection of commands whose interfaces are statically tracked by the type system. However, Frank eliminates the need for an additional effect handling construct by generalising the basic mechanism of functional abstraction itself. A function is simply the special case of a Frank operator that interprets no commands. Moreover, Frank’s operators can be multihandlers which simultaneously interpret commands from several sources at once, without disturbing the direct style of functional programming with values.
Effect typing in Frank employs a novel form of effect polymorphism which avoid mentioning effect variables in source code. This is achieved by propagating an ambient ability inwards, rather than accumulating unions of potential effects outwards.
We introduce Frank by example, and then give a formal account of the Frank type system and its semantics. We introduce Core Frank by elaborating Frank operators into functions, case expressions, and unary handlers, and then give a sound small-step operational semantics for Core Frank.
Programming with effects and handlers is in its infancy. We contribute an exploration of future possibilities, particularly in combination with other forms of rich type system.
Effect handlers provide an abstraction for modular effectful programming: a handler acts as an interpreter for a collection of commands whose interfaces are statically tracked by the type system. However, Frank eliminates the need for an additional effect handling construct by generalising the basic mechanism of functional abstraction itself. A function is simply the special case of a Frank operator that interprets no commands. Moreover, Frank’s operators can be multihandlers which simultaneously interpret commands from several sources at once, without disturbing the direct style of functional programming with values.
Effect typing in Frank employs a novel form of effect polymorphism which avoid mentioning effect variables in source code. This is achieved by propagating an ambient ability inwards, rather than accumulating unions of potential effects outwards.
We introduce Frank by example, and then give a formal account of the Frank type system and its semantics. We introduce Core Frank by elaborating Frank operators into functions, case expressions, and unary handlers, and then give a sound small-step operational semantics for Core Frank.
Programming with effects and handlers is in its infancy. We contribute an exploration of future possibilities, particularly in combination with other forms of rich type system.
Original language | English |
---|---|
Title of host publication | POPL 2017 Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages |
Publisher | ACM |
Pages | 500-514 |
Number of pages | 15 |
ISBN (Print) | 978-1-4503-4660-3 |
DOIs | |
Publication status | Published - 1 Jan 2017 |
Event | 44th ACM SIGPLAN Symposium on Principles of Programming Languages 2017 - Paris, France Duration: 15 Jan 2017 → 21 Jan 2017 https://conf.researchr.org/home/POPL-2017 |
Publication series
Name | ACM SIGPLAN Notices |
---|---|
Publisher | ACM |
Number | 1 |
Volume | 52 |
ISSN (Print) | 0362-1340 |
ISSN (Electronic) | 1558-1160 |
Conference
Conference | 44th ACM SIGPLAN Symposium on Principles of Programming Languages 2017 |
---|---|
Abbreviated title | POPL 2017 |
Country/Territory | France |
City | Paris |
Period | 15/01/17 → 21/01/17 |
Internet address |
Fingerprint
Dive into the research topics of 'Do Be Do Be Do'. Together they form a unique fingerprint.Projects
- 1 Finished
-
From Data Types to Session Types - A Basis for Concurrency and Distribution
20/05/13 → 19/11/20
Project: Research
Profiles
-
Sam Lindley
- School of Informatics - Reader in Programming Language Design and Implementation
- Laboratory for Foundations of Computer Science
Person: Academic: Research Active