In Streams à la carte we address extensibility shortcomings in libraries for lazy-streaming queries with a new design. The architecture underlying this design borrows heavily from Oliveira and Cook's object algebra solution to the expression problem, extended with a design that exposes the push/pull character of the iteration, and an encoding of higher-kinded polymorphism. In this library we apply our design to Java and show that the addition of full extensibility is accompanied by high performance, matching or exceeding that of the original, highly-optimized Java streams library. In this artifact we present a fundamental set of sequential operators map, filter, reduce, count, take/limit and iterate. Additionally we present the behaviors that are discussed in the paper: push, pull, fused pull, logging, id (for blocking terminal operators), future (for non-blocking terminal operators).
@Article{biboudis_et_al:DARTS.1.1.9, author = {Biboudis, Aggelos and Palladinos, Nick and Fourtounis, George and Smaragdakis, Yannis}, title = {{Streams \`{a} la carte: Extensible Pipelines with Object Algebras (Artifact)}}, pages = {9:1--9:2}, journal = {Dagstuhl Artifacts Series}, ISSN = {2509-8195}, year = {2015}, volume = {1}, number = {1}, editor = {Biboudis, Aggelos and Palladinos, Nick and Fourtounis, George and Smaragdakis, Yannis}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.1.1.9}, URN = {urn:nbn:de:0030-drops-55189}, doi = {10.4230/DARTS.1.1.9}, annote = {Keywords: object algebras, streams, extensibility, domain-specific languages, expression problem, library design} }
7e5646ff37150e9f7ea7bf109b78478a
(Get MD5 Sum)
Feedback for Dagstuhl Publishing