This Is Driving Me Loopy: Efficient Loops in Arrowized Functional Reactive Programs
Arrowized Functional Reactive Programming (AFRP) is one approach to writing reactive programs declaratively, based on the arrows abstraction in Haskell. While AFRP elegantly expresses the relationships between inputs and outputs of a reactive system, naïve implementations suffer from poor performance. In particular, the \textit{loop} combinator depends on lazy semantics: this inflicts the overheads of lazy evaluation and simultaneously prevents existing optimisation techniques from being applied to it.
We present a novel program transformation which utilises the Arrow and ArrowLoop laws to transform typical uses of \textit{loop} into restricted forms that have an execution order that is known at compile-time and therefore can be executed strictly. We evaluate the performance gained from our transformations and prove that the transformations are correct.
Fri 8 SepDisplayed time zone: Pacific Time (US & Canada) change
11:00 - 12:30 | |||
11:00 30mTalk | Effect Handlers for Programmable Inference Haskell Minh Nguyen University of Bristol, Roly Perera Alan Turing Institute, Meng Wang University of Bristol, Steven Ramsay University of Bristol DOI | ||
11:30 30mTalk | The Essence of Reactivity Haskell DOI | ||
12:00 30mTalk | This Is Driving Me Loopy: Efficient Loops in Arrowized Functional Reactive Programs Haskell DOI |