Rewriting High-Level Spreadsheet Structures into Higher-Order Functional Programs

Florian Biermann, Wensheng Dou, Peter Sestoft

Research output: Conference Article in Proceeding or Book/Report chapterArticle in proceedingsResearchpeer-review

Abstract

Spreadsheets are used heavily in industry and academia. Often, spreadsheet models are developed for years and their complexity grows vastly beyond what the paradigm was originally conceived for. Such complexity often comes at the cost of recalculation performance. However, spreadsheet models usually have some high-level structure that can be used to improve performance by performing independent computation in parallel. In this paper, we devise rules for rewriting high-level spreadsheet structure in the form of so-called cell arrays into higher-order functional programs that can be easily parallelized on multicore processors. We implement our rule set for the experimental Funcalc spreadsheet engine which already implements parallelizable higher-order array functions as well as user-defined higher-order functions. Benchmarks show that our rewriting approach improves recalculation performance for spreadsheets that are dominated by cell arrays.
Original languageEnglish
Title of host publicationInternational Symposium on Practical Aspects of Declarative Languages : PADL 2018: Practical Aspects of Declarative Languages
Number of pages16
PublisherSpringer
Publication date22 Dec 2017
Pages20-35
ISBN (Print)978-3-319-73304-3
ISBN (Electronic)978-3-319-73305-0
DOIs
Publication statusPublished - 22 Dec 2017
EventInternational Symposium on Practical Aspects of Declarative Languages - Los Angeles, United States
Duration: 8 Jan 20189 Jan 2018
Conference number: 20
https://popl18.sigplan.org/series/PADL

Conference

ConferenceInternational Symposium on Practical Aspects of Declarative Languages
Number20
Country/TerritoryUnited States
CityLos Angeles
Period08/01/201809/01/2018
Internet address
SeriesLecture Notes in Computer Science
Volume10702
ISSN0302-9743

Keywords

  • arrays
  • expression rewriting
  • functional programming
  • parallelism
  • performance
  • spreadsheets

Cite this