2016-12-14 Departmental seminar: Sam Lindley (Edinburgh)

Tue, 14 Oct 2025 16:51:42 +0000

Sam Lindley (Edinburgh)

Do be do be do

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 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.

I'll give a tour of Frank through a selection of concrete examples.

(Joint work with Conor McBride and Craig McLaughlin)

2016-12-14 16:00:00 UTC
LT1415