Modular Higher-Order Effects
Born out of a vision that human comprehension should be prioritised above mechanical computation, declarative languages prioritise the purpose of evaluating programs above of the process of evaluating programs. Effect handlers embrace the two perspectives by offering a programming framework where the purpose of a program is given by operations from a given syntax and the process of evaluating such programs is given by handlers that provide a semantics.
The popularity of algebraic effects is partly due to the practical benefits they offer as a tool for describing modular domain-specific languages (DSLs). Algebraic effect handlers enable the creation of specialized, domain-specific languages tailored to address the unique requirements of specific application domains. By encapsulating effectful operations within algebraic theories, these handlers offer a modular and composable framework for defining and interpreting computational effects. This not only enhances the expressiveness of DSLs but also facilitates a more intuitive and maintainable way of reasoning about and orchestrating complex computations within specific problem domains. The adaptability and versatility afforded by algebraic effect handlers empower developers to flexibly extend the domains they are working with and reinterpret those domains differently depending on the context they require.
Unfortunately, the very mechanism that make algebraic effects modular—that is, algebraicity—is also their limitation: not all operations of practical importance are algebraic. In particular, handlers such as catch
for catching exceptions and once
for pruning the results of a logic program violate the requirements of algebraic operations. This shortcoming motivated the exploration of generalisations of algebraic effects into scoped and latent effects, whose additional expressivity come at the cost of the inherent modularity offered by algebraic effects. Recent work has shown how to recover modularity by considering modular models that can be inherently extended with new operations.
This talk outlines the practical aspects the effective
library, an implementation of modular higher-order effects in Haskell that is tailored to simplify working with modular models of algebraic and scoped effects. The library enables users to define the syntax and semantics of their own DSLs in a way that is modular and extensible, while integrating well with Haskell’s primitive I/O mechanisms and monad transformer infrastructure.
Mon 15 JanDisplayed time zone: London change
09:00 - 10:30 | |||
09:00 60mKeynote | Modular Higher-Order Effects PADL | ||
10:00 30mTalk | Asynchronous Reactive Programming with Modal Types in Haskell PADL Patrick Bahr IT University of Copenhagen, Emil Houlborg IT University of Copenhagen, Gregers Thomas Skat Rørdam IT University of Copenhagen Pre-print |