Mart Lubbers

Interpreting Functional programs on microcontrollers since 2016

Mart Lubbers is a PhD student involved in Functional programming and in particular Task Oriented Programming (TOP), (embedded) domain specific language techniques and appliances of that in the Internet of Things (IoT) domain. Together with colleagues he works on mTask, a TOP language for the IoT that is fully integrated in the iTask system. Together they span all layers of the IoT. Specialized but full-fledged IoT tasks are run-time compiled to bytecode. This code is interpreted on microcontrollers and interact with the server through Shared Data Sources (SDSs) and task values as if it was a regular iTask task. This results in a major reduction of semantic friction and a lot less developer effort for the same result.

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.