Hostname: page-component-586b7cd67f-t7czq Total loading time: 0 Render date: 2024-11-30T03:59:37.317Z Has data issue: false hasContentIssue false

Making a fast curry: push/enter vs. eval/apply for higher-order languages

Published online by Cambridge University Press:  10 August 2006

SIMON MARLOW
Affiliation:
Microsoft Research, Cambridge, UK (e-mail: simonmar@microsoft.com)
SIMON PEYTON JONES
Affiliation:
Microsoft Research, Cambridge, UK (e-mail: simonmar@microsoft.com)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Higher-order languages that encourage currying are typically implemented using one of two basic evaluation models: push/enter or eval/apply. Implementors use their intuition and qualitative judgements to choose one model or the other. Our goal in this paper is to provide, for the first time, a more substantial basis for this choice, based on our qualitative and quantitative experience of implementing both models in a state-of-the-art compiler for Haskell. Our conclusion is simple, and contradicts our initial intuition: compiled implementations should use eval/apply.

Type
Article
Copyright
2006 Cambridge University Press

Footnotes

An earlier version of this paper appeared in the International Conference on Functional Programming 2004 (ICFP'04), pp. 4–15, ACM Press.
Submit a response

Discussions

No Discussions have been published for this article.