Write a Blog >>
ICFP 2019
Sun 18 - Fri 23 August 2019 Berlin, Germany
Thu 22 Aug 2019 15:50 - 16:20 at Aurora Borealis - Paper Session 3: SMT & Arity Chair(s): Eric Seidel

Curried functions apparently take one argument at a time, which is slow. So optimizing compilers for higher-order languages invariably have some mechanism for working around currying by passing several arguments at once, as many as the function can handle, which is known as its arity. But such mechanisms are often ad-hoc, and do not work at all in higher-order functions. We show how extensional, call-by-name functions have the correct behavior for directly expressing the arity of curried functions. And these extensional functions can stand side-by-side with functions native to practical programming languages, which do not use call-by-name evaluation. We use kinds to distinguish the two calling conventions in the same intermediate language, thereby expressing the arity of a function in its type and giving a principled and compositional account of multi-argument curried functions. An unexpected, but significant, bonus is that our approach is equally suitable for a call-by-value language and a call-by-need language, and it can be readily integrated into an existing compilation framework.

Thu 22 Aug

haskellsymp-2019-papers
15:20 - 16:30: Haskell 2019 - Paper Session 3: SMT & Arity at Aurora Borealis
Chair(s): Eric SeidelBloomberg LP
haskellsymp-2019-papers15:20 - 15:50
Research paper
William T. HallahanYale University, Anton XueYale University, Ruzica PiskacYale University, USA
haskellsymp-2019-papers15:50 - 16:20
Talk
Paul DownenUniversity of Oregon, USA, Zachary Sullivan, Zena M. AriolaUniversity of Oregon, USA, Simon Peyton JonesMicrosoft, UK