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

05/27/2021
by   Abhiroop Sarkar, et al.
0

With the growing ubiquity of Internet of Things(IoT), more complex logic is being programmed on resource-constrained IoT devices, almost exclusively using the C programming language. While C provides low-level control over memory, it lacks a number of high-level programming abstractions such as higher-order functions, polymorphism, strong static typing, memory safety, and automatic memory management. We present Hailstorm, a statically-typed, purely functional programming language that attempts to address the above problem. It is a high-level programming language with a strict typing discipline. It supports features like higher-order functions, tail-recursion, and automatic memory management, to program IoT devices in a declarative manner. Applications running on these devices tend to be heavily dominated by I/O. Hailstorm tracks side effects likeI/O in its type system using resource types. This choice allowed us to explore the design of a purely functional standalone language, in an area where it is more common to embed a functional core in an imperative shell. The language borrows the combinators of arrowized FRP, but has discrete-time semantics. The design of the full set of combinators is work in progress, driven by examples. So far, we have evaluated Hailstorm by writing standard examples from the literature (earthquake detection, a railway crossing system and various other clocked systems), and also running examples on the GRiSP embedded systems board, through generation of Erlang.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/29/2019

Juniper: A Functional Reactive Programming Language for the Arduino

This paper presents the design and implementation of Juniper: a function...
research
12/08/2022

Writing Internet of Things Applicatations with Task-Oriented Programming

The Internet of Things (IoT) is growing fast. In 2018, there was approxi...
research
08/15/2019

Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming

Most functional languages rely on some garbage collection for automatic ...
research
08/17/2021

Higher-Order Concurrency for Microcontrollers

Programming microcontrollers involves low-level interfacing with hardwar...
research
05/25/2019

MoMIT: Porting a JavaScript Interpreter on a Quarter Coin

The Internet of Things (IoT) is a network of physical, heterogeneous, co...
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/26/2019

Kindly Bent to Free Us

Systems programming often requires the manipulation of resources like fi...

Please sign up or login with your details

Forgot password? Click here to reset