Do be do be do
Sam Lindley, Conor McBride, Craig McLaughlin

TL;DR
Frank is a novel strict functional programming language with a unique effect type system that integrates effect handling directly into function abstraction, enabling modular effectful programming without extra constructs.
Contribution
The paper introduces Frank, a language that generalizes effect handlers into operators, employs ambient effect polymorphism, and formalizes its type system and semantics.
Findings
Effect handlers are integrated into function abstraction in Frank.
Frank's effect polymorphism propagates ambient abilities inward.
Formal semantics and type system for Frank are established.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Advanced Software Engineering Methodologies
