Show simple item record

dc.contributor.authorBračevac, Oliver
dc.contributor.authorAmin, Nada
dc.contributor.authorSalvaneschi, Guido
dc.contributor.authorErdweg, Sebastian
dc.contributor.authorEugster, Patrick
dc.contributor.authorMezini, Mira
dc.date.accessioned2018-09-27T14:13:16Z
dc.date.available2018-09-27T14:13:16Z
dc.date.issued2018-07-30
dc.identifier.issn2475-1421
dc.identifier.urihttps://www.repository.cam.ac.uk/handle/1810/282854
dc.description.abstract<jats:p> We present the first language design to uniformly express variants of <jats:italic>n</jats:italic> -way joins over asynchronous event streams from different domains, e.g., stream-relational algebra, event processing, reactive and concurrent programming. We model asynchronous reactive programs and joins in direct style, on top of algebraic effects and handlers. Effect handlers act as modular interpreters of event notifications, enabling fine-grained control abstractions and customizable event matching. Join variants can be considered as cartesian product computations with ”degenerate” control flow, such that unnecessary tuples are not materialized a priori. Based on this computational interpretation, we decompose joins into a generic, naive enumeration procedure of the cartesian product, plus variant-specific extensions, represented in terms of user-supplied effect handlers. Our microbenchmarks validate that this extensible design avoids needless materialization. Alongside a formal semantics for joining and prototypes in Koka and multicore OCaml, we contribute a systematic comparison of the covered domains and features. </jats:p>
dc.description.sponsorshipERC, Advanced Grant No. 321217 ERC, Consolidator Grant No. 617805 DFG, SFB 1053 DFG, SA 2918/2-1
dc.languageen
dc.publisherAssociation for Computing Machinery (ACM)
dc.rightsAttribution 4.0 International
dc.rights.urihttps://creativecommons.org/licenses/by/4.0/
dc.titleVersatile event correlation with algebraic effects
dc.typeConference Object
prism.endingPage31
prism.issueIdentifierICFP
prism.publicationDate2018
prism.publicationNameProceedings of the ACM on Programming Languages
prism.startingPage1
prism.volume2
dc.identifier.doi10.17863/CAM.30218
dcterms.dateAccepted2018-07-07
rioxxterms.versionofrecord10.1145/3236762
rioxxterms.licenseref.urihttp://www.rioxx.net/licenses/all-rights-reserved
rioxxterms.licenseref.startdate2018-07-30
dc.identifier.eissn2475-1421
rioxxterms.typeConference Paper/Proceeding/Abstract
cam.issuedOnline2018-07-30
pubs.conference-nameICFP
pubs.conference-start-date2018-09-23
pubs.conference-finish-date2018-09-29


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record

Attribution 4.0 International
Except where otherwise noted, this item's licence is described as Attribution 4.0 International