The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A systematic study of functional language implementations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient compilation of lazy evaluation
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
TIM: A simple, lazy abstract machine to execute supercombinatorics
Proceedings of the Functional Programming Languages and Computer Architecture
Unboxed Values as First Class Citizens in a Non-Strict Functional Language
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
C--: A Portable Assembly Language that Supports Garbage Collection
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Hybrid eager and lazy evaluation for efficient compilation of haskell
Hybrid eager and lazy evaluation for efficient compilation of haskell
Exploring the barrier to entry: incremental generational garbage collection for Haskell
Proceedings of the 4th international symposium on Memory management
A syntactic correspondence between context-sensitive calculi and abstract machines
Theoretical Computer Science
Faster laziness using dynamic pointer tagging
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A concrete framework for environment machines
ACM Transactions on Computational Logic (TOCL)
Information Processing Letters
Inter-deriving Semantic Artifacts for Object-Oriented Programming
WoLLIC '08 Proceedings of the 15th international workshop on Logic, Language, Information and Computation
From natural semantics to c: A formal derivation of two stg machines
Journal of Functional Programming
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Introducing the PilGRIM: a processor for executing lazy functional languages
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
Challenges for a trace-based just-in-time compiler for haskell
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Hi-index | 0.00 |
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.