Date of Award
August 2020
Degree Type
Thesis
Degree Name
Master of Science
Department
Computer Science
First Advisor
Tian Zhao
Committee Members
Adel Nasiri, Ethan V Munson
Keywords
Asychronous, IoT, Monad, Programming, Reactive
Abstract
The widespread adoption of Internet of Things (IoT) has given rise to systems which must reactively process signal data, while maintaining latency and throughput constraints. While the reactive programming paradigm partially addresses this problem, it does not offer a complete solution. We propose a design for a monad, AsyncM, and apply it to implement push-pull functional reactive programming (FRP) where side-effect bound events are performed in low-latency push streams, and time-series computations are performed in demand-driven pull streams. The design uses implicitly threaded cancellation tokens and continuation passing style to allow for implementations in languages which have single-threaded event-loops as well as languages which have multi-threading.
We present our abstractions Stream, Signal, and Behavior and their functor, applicative, and (when applicable) monadic instances. We demonstrate how push streams (Stream) can be converted to pull streams (Signal) (and visa versa) to apply our model to practical use cases. We give a use case of a real-time IoT data analytics platform to demonstrate our design's industrial significance where signal sample rates can change dynamically based on unknown factors such as network speed and processor resources. Application of the design to dynamic languages is shown throughout the paper in a reference JavaScript implementation.
Recommended Citation
Berger, Adam Bertrand, "Asynchronous Monad for Reactive IoT Programming" (2020). Theses and Dissertations. 2457.
https://dc.uwm.edu/etd/2457