Manipulating Accumulative Functions by Swapping Call-Time and Return-Time Computations*

Akimasa Morihata,Kazuhiko Kakehi,Zhenjiang Hu,Masato Takeichi
DOI: https://doi.org/10.1017/s0956796812000111
2012-01-01
Journal of Functional Programming
Abstract:Functional languages are suitable for transformational developments of programs. However, accumulative functions, or in particular tail-recursive functions, are known to be less suitable for manipulation. In this paper, we propose a program transformation named "IO swapping" that swaps call-time and return-time computations. It moves computations in accumulative parameters to results and thereby enables interesting transformations. We demonstrate effectiveness of IO swapping by several applications: deforestation, higher order removal, program inversion, and manipulation of circular programs.
What problem does this paper attempt to address?