Pull-ups, push-downs, and passing it around

  • Authors:
  • Sean Leather;Andres Löh;Johan Jeuring

  • Affiliations:
  • Utrecht University, Utrecht, The Netherlands;Utrecht University, Utrecht, The Netherlands;Utrecht University, Utrecht, The Netherlands and Open Universiteit Nederland

  • Venue:
  • IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Programs in languages such as Haskell are often datatypecentric and make extensive use of folds on that datatype. Incrementalization of such a program can significantly improve its performance by transforming monolithic atomic folds into incremental computations. Functional incrementalization separates the recursion from the application of the algebra in order to reduce redundant computations and reuse intermediate results. In this paper, we motivate incrementalization with a simple example and present a library for transforming programs using upwards, downwards, and circular incrementalization. Our benchmarks show that incrementalized computations using the library are nearly as fast as handwritten atomic functions.