@InProceedings{evalapply04,
   author = {Simon Marlow and Simon {Peyton Jones}},
   title = {Making a fast curry: push/enter vs. eval/apply for higher-order languages},
   booktitle = {ICFP'04: Proceedings of the ACM SIGPLAN 2004 International Conference on Functional Programming},
   year = {2004},
   abstract = {Higher-order languages that encourage currying are 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.
},
   url = {http://community.haskell.org/~simonmar/papers/eval-apply.pdf},
   doi = {http://doi.acm.org/10.1145/1016848.1016856},
   isbn = {1-58113-905-5},
   pages = {4--15},
   publisher = {ACM Press}
}