Extensible and robust functional reactive programming

Programming GUI and multimedia in functional languages has been a long-term challenge, and no solution convinces the community at large. Purely functional GUI and multimedia toolkits enable abstract thinking, but have enormous maintenance costs. General solutions like Functional Reactive Programm...

Full description

Bibliographic Details
Main Author: Perez Dominguez, Ivan
Format: Thesis (University of Nottingham only)
Language:English
Published: 2018
Subjects:
Online Access:https://eprints.nottingham.ac.uk/50348/
_version_ 1848798228344995840
author Perez Dominguez, Ivan
author_facet Perez Dominguez, Ivan
author_sort Perez Dominguez, Ivan
building Nottingham Research Data Repository
collection Online Access
description Programming GUI and multimedia in functional languages has been a long-term challenge, and no solution convinces the community at large. Purely functional GUI and multimedia toolkits enable abstract thinking, but have enormous maintenance costs. General solutions like Functional Reactive Programming present a number of limitations. FRP has traditionally resisted efficient implementation, and existing libraries sacrifice determinism and abstraction in the name of performance. FRP also enforces structural constraints that facilitate reasoning, but at the cost of modularity and separation of concerns. This work addresses those limitations with the introduction of Monadic Stream Functions, an extension to FRP parameterised over a monad. I demonstrate that, in spite of being simpler than other FRP proposals, Monadic Stream Functions subsume and exceed other FRP implementations. Unlike other proposals, Monadic Stream Functions maintain purity at the type level, which is crucial for testing and debugging. I demonstrate this advantage by introducing FRP testing facilities based on temporal logics, together with debugging tools specific for FRP. I present two uses cases for Monadic Stream Functions: First, I show how the new constructs improved the design of game features and non-trivial games. Second, I present Reactive Values and Relations, an abstraction for model-view coordination in GUI programs based on a relational language, built on top of Monadic Stream Functions. Comprehensive examples are used to illustrate the benefits of this proposal in terms of clarity, modularity, feature coverage, and its low maintenance costs. The testing facilities mentioned before are used to encode and statically check desired interaction properties.
first_indexed 2025-11-14T20:16:26Z
format Thesis (University of Nottingham only)
id nottingham-50348
institution University of Nottingham Malaysia Campus
institution_category Local University
language English
last_indexed 2025-11-14T20:16:26Z
publishDate 2018
recordtype eprints
repository_type Digital Repository
spelling nottingham-503482025-02-28T14:02:05Z https://eprints.nottingham.ac.uk/50348/ Extensible and robust functional reactive programming Perez Dominguez, Ivan Programming GUI and multimedia in functional languages has been a long-term challenge, and no solution convinces the community at large. Purely functional GUI and multimedia toolkits enable abstract thinking, but have enormous maintenance costs. General solutions like Functional Reactive Programming present a number of limitations. FRP has traditionally resisted efficient implementation, and existing libraries sacrifice determinism and abstraction in the name of performance. FRP also enforces structural constraints that facilitate reasoning, but at the cost of modularity and separation of concerns. This work addresses those limitations with the introduction of Monadic Stream Functions, an extension to FRP parameterised over a monad. I demonstrate that, in spite of being simpler than other FRP proposals, Monadic Stream Functions subsume and exceed other FRP implementations. Unlike other proposals, Monadic Stream Functions maintain purity at the type level, which is crucial for testing and debugging. I demonstrate this advantage by introducing FRP testing facilities based on temporal logics, together with debugging tools specific for FRP. I present two uses cases for Monadic Stream Functions: First, I show how the new constructs improved the design of game features and non-trivial games. Second, I present Reactive Values and Relations, an abstraction for model-view coordination in GUI programs based on a relational language, built on top of Monadic Stream Functions. Comprehensive examples are used to illustrate the benefits of this proposal in terms of clarity, modularity, feature coverage, and its low maintenance costs. The testing facilities mentioned before are used to encode and statically check desired interaction properties. 2018-07-19 Thesis (University of Nottingham only) NonPeerReviewed application/pdf en arr https://eprints.nottingham.ac.uk/50348/1/thesis.pdf Perez Dominguez, Ivan (2018) Extensible and robust functional reactive programming. PhD thesis, University of Nottingham. FRP Functional Reactive Programming functional programming multimedia games Haskell
spellingShingle FRP
Functional Reactive Programming
functional programming
multimedia
games
Haskell
Perez Dominguez, Ivan
Extensible and robust functional reactive programming
title Extensible and robust functional reactive programming
title_full Extensible and robust functional reactive programming
title_fullStr Extensible and robust functional reactive programming
title_full_unstemmed Extensible and robust functional reactive programming
title_short Extensible and robust functional reactive programming
title_sort extensible and robust functional reactive programming
topic FRP
Functional Reactive Programming
functional programming
multimedia
games
Haskell
url https://eprints.nottingham.ac.uk/50348/