Data flow fusion with series expressions in Haskell

Ben Lippmeier, Manuel M.T. Chakravarty, Gabriele Keller, Amos Robinson

Research output: Contribution to journalArticleAcademicpeer-review


Existing approaches to array fusion can deal with straight-line producer consumer pipelines, but cannot fuse branching data flows where a generated array is consumed by several different consumers. Branching data flows are common and natural to write, but a lack of fusion leads to the creation of an intermediate array at every branch point. We present a new array fusion system that handles branches, based on Waters's series expression framework, but extended to work in a functional setting. Our system also solves a related problem in stream fusion, namely the introduction of duplicate loop counters.We demonstrate speedup over existing fusion systems for several key examples.

Original languageEnglish
Pages (from-to)93-104
Number of pages12
JournalACM SIGPLAN Notices
Issue number12
Publication statusPublished - 31 Jan 2014
Externally publishedYes


  • Arrays
  • Fusion
  • Haskell


Dive into the research topics of 'Data flow fusion with series expressions in Haskell'. Together they form a unique fingerprint.

Cite this