Mart Lubbers

Interpreting Functional programs on microcontrollers since 2016

Mart is an assistant professor at the Radboud University Nijmegen. His research is focused around functional programming, domain-specific languages, task-oriented programming, tierless programming and the internet of things. All these interests culminate in mTask, a task-oriented programming framework for embedded devices so that entire internet of things stacks can be built from a single declarative source.

AUTHORS: Mart Lubbers, Haye Böhm, Pieter Koopman and Rinus Plasmeijer  

Modern complex systems deal with a myriad of different types of data. These data sources may represent data from the system itself, a database, shared memory, external data streams or even physical data retrieved by a person. Consequently, each data source has different intrinsic properties, methods and swiftness of accessing and may therefore require each their own separate interface. Often the data needs to be massaged by a lens, combined for fusion or sequenced so that from the result of some data source, another is queried.  

Shared Data Sources (SDSs) are an extension of Uniform Data Sources (UDSs) and provide an atomic, uniform and composable interface over abstract data for functional languages. This abstract data can be anything ranging from data in a state, interaction with the file system to system resources such as time and random numbers. SDSs are wholly defined by their atomic read and write functions, i.e. given a linear state, they either read or write the source and yield the state again and no synchronization is required. Combinators on SDSs, as stated Parametric views extend to the original SDS idea by slightly defunctionalizing the SDS functions First-order parametric views allow a focus on shared data and an automatic lean and mean notification mechanism. With this extension, SDSs are suitable for real-life applications, that deal with a lot of data, such as coast monitoring and it is used extensively in Task Oriented Programming (TOP) frameworks such as the iTask and mTask systems to share data between tasks.

This approach works very well in general but suffers from some issues. This paper proposes an extension to parametrized SDSs mitigating all these problems.