Blogs (27) >>
ICFP 2017
Sun 3 - Sat 9 September 2017 Oxford, United Kingdom
Mon 4 Sep 2017 13:00 - 13:22 at L1 - Functional Programming Techniques Chair(s): Graham Hutton

Coroutine pipelines provide an attractive structuring mechanism for complex programs that process streams of data, with the advantage over lazy streams that both ends of a pipeline may interact with the I/O system, as may processes in the middle. Two popular Haskell libraries, Pipes and Conduit, support such pipelines. In both libraries, pipelines are implemented in a direct style by combining a free monad of communication events with an interpreter for (pseudo-)parallel composition that interleaves the events of its argument processes. These implementations both suffer from a slow-down when processes are deeply nested in sequence or in parallel. We propose an alternative implementation of pipelines based on continuations that does not suffer from this slow-down. What is more, the implementation is significantly faster on small, communication-intensive examples even where they do not suffer from the slow-down, and faster even than comparable programs based on lazy streams. The continuation-based implementation may be derived from the direct-style implementation by algebraic reasoning.

Mon 4 Sep

icfp-2017-papers
13:00 - 14:30: Research Papers - Functional Programming Techniques at L1
Chair(s): Graham Hutton
icfp-2017-papers150452280000013:00 - 13:22
Talk
DOI
icfp-2017-papers150452415000013:22 - 13:45
Talk
DOI
icfp-2017-papers150452550000013:45 - 14:07
Talk
DOI
icfp-2017-papers150452685000014:07 - 14:30
Talk
DOI