A verified framework for higher-order uncurrying optimizations

  • Authors:
  • Zaynah Dargaye;Xavier Leroy

  • Affiliations:
  • ENSIIE, Évry, France 91025;INRIA Paris-Rocquencourt, Domaine de Voluceau, Le Chesnay, France 78153

  • Venue:
  • Higher-Order and Symbolic Computation
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

Abstract

Function uncurrying is an important optimization for the efficient execution of functional programming languages. This optimization replaces curried functions by uncurried, multiple-argument functions, while preserving the ability to evaluate partial applications. First-order uncurrying (where curried functions are optimized only in the static scopes of their definitions) is well understood and implemented by many compilers, but its extension to higher-order functions (where uncurrying can also be performed on parameters and results of higher-order functions) is challenging. This article develops a generic framework that expresses higher-order uncurrying optimizations as type-directed insertion of coercions, and prove its correctness. The proof uses step-indexed logical relations and was entirely mechanized using the Coq proof assistant.