Juniper: A Functional Reactive Programming Language for the Arduino

11/29/2019
by   Caleb Helbling, et al.
0

This paper presents the design and implementation of Juniper: a functional reactive programming language (FRP) targeting the Arduino and related microcontroller systems. Juniper provides a number of high level features, including parametric polymorphic functions, anonymous functions, automatic memory management, and immutable data structures. Also included is a standard library which offers many useful FRP signal processing functions. Juniper is translated to standard C++ and compiled with the existing Arduino development tools, allowing Juniper programs to fit on resource-constrained devices, and enabling seamless interoperability with existing C++ libraries for these devices.

READ FULL TEXT
research
05/27/2021

Hailstorm : A Statically-Typed, Purely Functional Language for IoT Applications

With the growing ubiquity of Internet of Things(IoT), more complex logic...
research
05/17/2019

Implementing a Library for Probabilistic Programming using Non-strict Non-determinism

This paper presents PFLP, a library for probabilistic programming in the...
research
10/01/2020

ReactiFi: Reactive Programming of Wi-Fi Firmware on Mobile Devices

Network programmability will be required to handle future increased netw...
research
08/17/2021

Solving the Funarg Problem with Static Types

The difficulty associated with storing closures in a stack-based environ...
research
04/08/2021

A Proposal for an Interactive Shell Based on a Typed Lambda Calculus

This paper presents Favalon, a functional programming language built on ...
research
09/19/2019

On the Design, Implementation, and Use of Laziness in R

The R programming language has been lazy for over twenty-five years. Thi...
research
09/08/2023

Less Power for More Learning: Restricting OCaml Features for Effective Teaching

We present a framework for sandboxing and restricting features of the OC...

Please sign up or login with your details

Forgot password? Click here to reset