Stream Types

07/18/2023
by   Joseph W. Cutler, et al.
0

We propose a rich foundational theory of typed data streams and stream transformers, motivated by two high-level goals: (1) the type of a stream should be able to express complex sequential patterns of events over time, and (2) it should describe the parallel structure of the stream to enable deterministic stream processing on parallel and distributed systems. To this end, we introduce stream types, with operators capturing sequential composition, parallel composition, and iteration, plus a core calculus of transformers over typed streams which naturally supports a number of common streaming idioms, including punctuation, windowing, and parallel partitioning, as first-class constructions. The calculus exploits a Curry-Howard-like correspondence with an ordered variant of the logic of Bunched Implication to program with streams compositionally and uses Brzozowski-style derivatives to enable an incremental, event-based operational semantics. To validate our design, we provide a reference interpreter and machine-checked proofs of the main results.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/15/2018

An adaptive parallel processing strategy in complex event processing systems over data streams

Efficient matching of incoming events of data streams to persistent quer...
research
11/06/2018

Better Late Than Never: A Fully Abstract Semantics for Classical Processes

We present Hypersequent Classical Processes (HCP), a revised interpretat...
research
12/30/2022

Coinductive Streams in Monoidal Categories

We introduce monoidal streams. Monoidal streams are a generalization of ...
research
02/20/2023

Profiling and Optimizing Java Streams

The Stream API was added in Java 8 to allow the declarative expression o...
research
07/31/2021

Enhanced Regular Corecursion for Data Streams

We propose a simple calculus for processing data streams (infinite flows...
research
01/18/2018

A Formalization for Specifying and Implementing Correct Pull-Stream Modules

Pull-stream is a JavaScript demand-driven functional design pattern base...
research
10/10/2017

A Lambda Calculus for Transfinite Arrays: Unifying Arrays and Streams

Array programming languages allow for concise and generic formulations o...

Please sign up or login with your details

Forgot password? Click here to reset