On laziness and optimality in lambda interpreters: tools for specification and analysis
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An algorithm for optimal lambda calculus reduction
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameter-passing and the lambda calculus
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimal derivations in weak lambda-calculi and in orthogonal term rewriting systems
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A modular fully-lazy lambda lifter in Haskell
Software—Practice & Experience
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
The geometry of optimal lambda reduction
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An adequate operational semantics of sharing in lazy evaluation
ESOP'92 Symposium proceedings on 4th European symposium on programming
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimal reduction in weak-&lgr;-calculus with shared environments
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Call-by-need and continuation-passing style
Lisp and Symbolic Computation
An operational semantics of lazy evaluation for analysis
An operational semantics of lazy evaluation for analysis
Properties of a first-order functional language with sharing
Theoretical Computer Science
Reasoning About Programs with Effects
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
CTRS '92 Proceedings of the Third International Workshop on Conditional Term Rewriting Systems
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Abstract models of memory management
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Total correctness by local improvement in the transformation of functional programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Functional back-ends within the lambda-sigma calculus
Proceedings of the first ACM SIGPLAN international conference on Functional programming
ACM Computing Surveys (CSUR)
Functional computation as concurrent computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Monadic state: axiomatization and type safety
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Rolling your own mutable ADT—a connection between linear types and monads
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A demand-driven set-based analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Constraints to stop higher-order deforestation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From SOS rules to proof principles: an operational metatheory for functional languages
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bridging the gulf: a common intermediate language for ML and Haskell
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Correctness of monadic state: an imperative call-by-need calculus
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
A type based sharing analysis for update avoidance and optimisation
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The spineless tagless G-machine, naturally
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A non-deterministic call-by-need lambda calculus
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Improvement in a lazy context: an operational theory for call-by-need
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
An operational semantics for parallel lazy evaluation
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Eager Haskell: resource-bounded execution yields efficient iteration
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Erratic fudgets: a semantic theory for an embedded coordination language
Science of Computer Programming - Special issue on coordination languages and architectures
A Calculus for Link-Time Compilation
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
The Correctness of Type Specialisation
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Erratic Fudgets: A Semantic Theory for an Embedded Coordination Language
COORDINATION '99 Proceedings of the Third International Conference on Coordination Languages and Models
Closed Reductions in the lambda-Calculus
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
Observable Sharing for Functional Circuit Description
ASIAN '99 Proceedings of the 5th Asian Computing Science Conference on Advances in Computing Science
Lambda calculi and linear speedups
The essence of computation
Dynamic rebinding for marshalling and update, with destruct-time ?
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
From λ to π; or, Rediscovering continuations
Mathematical Structures in Computer Science
Uniform confluence in concurrent computation
Journal of Functional Programming
Haskell: The Craft of Functional Programming by Simon Thompson, Addison-Wesley, 1996.
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
Functional runtime systems within the lambda-sigma calculus
Journal of Functional Programming
What is a purely functional language?
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
A functional correspondence between call-by-need evaluators and lazy abstract machines
Information Processing Letters
Closed reduction: explicit substitutions without $\alpha$-conversion
Mathematical Structures in Computer Science
Call-by-need in token-passing nets
Mathematical Structures in Computer Science
Addressed term rewriting systems: application to a typed object calculus
Mathematical Structures in Computer Science
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
A syntactic correspondence between context-sensitive calculi and abstract machines
Theoretical Computer Science
Plugging a Space Leak with an Arrow
Electronic Notes in Theoretical Computer Science (ENTCS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Mathematical Structures in Computer Science
Dynamic rebinding for marshalling and update, via redex-time and destruct-time reduction
Journal of Functional Programming
Safety of nöcker's strictness analysis
Journal of Functional Programming
A Single-Step Term-Graph Reduction System for Proof Assistants
Applications of Graph Transformations with Industrial Relevance
Lazy evaluation and delimited control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A flexible framework for programming with non-deterministicfunctions
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Congruence of Bisimulation in a Non-Deterministic Call-By-Need Lambda Calculus
Electronic Notes in Theoretical Computer Science (ENTCS)
Addressed Term Rewriting Systems: Syntax, Semantics, and Pragmatics
Electronic Notes in Theoretical Computer Science (ENTCS)
Similarity implies equivalence in a class of non-deterministic call-by-need lambda calculi
Information and Computation
On generic context lemmas for higher-order calculi with sharing
Theoretical Computer Science
Efficient reductions with director strings
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
Diagrams for meaning preservation
RTA'03 Proceedings of the 14th international conference on Rewriting techniques and applications
Correctness of copy in calculi with letrec
RTA'07 Proceedings of the 18th international conference on Term rewriting and applications
Rewriting and call-time choice: the HO case
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Three syntactic theories for combinatory graph reduction
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
Hobbits for Haskell: a library for higher-order encodings in functional programming languages
Proceedings of the 4th ACM symposium on Haskell
Evaluating call-by-need on the control stack
TFP'10 Proceedings of the 11th international conference on Trends in functional programming
A unified approach to fully lazy sharing
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Purely functional lazy nondeterministic programming
Journal of Functional Programming - Dedicated to ICFP 2009
Streams with a bottom in functional languages
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Sharing in the weak lambda-calculus
Processes, Terms and Cycles
Skew and ω-skew confluence and abstract Böhm semantics
Processes, Terms and Cycles
Expression reduction systems and extensions: an overview
Processes, Terms and Cycles
AMAST'06 Proceedings of the 11th international conference on Algebraic Methodology and Software Technology
Theoretical Computer Science
The call-by-need lambda calculus, revisited
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Transparent function types: clearing up opacity
Proceedings of the 14th symposium on Principles and practice of declarative programming
From stack traces to lazy rewriting sequences
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
A synthetic operational account of call-by-need evaluation
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Three syntactic theories for combinatory graph reduction
ACM Transactions on Computational Logic (TOCL)
Hi-index | 0.01 |
The mismatch between the operational semantics of the lambda calculus and the actual behavior of implementations is a major obstacle for compiler writers. They cannot explain the behavior of their evaluator in terms of source level syntax, and they cannot easily compare distinct implementations of different lazy strategies. In this paper we derive an equational characterization of call-by-need and prove it correct with respect to the original lambda calculus. The theory is a strictly smaller theory than the lambda calculus. Immediate applications of the theory concern the correctness proofs of a number of implementation strategies, e.g., the call-by-need continuation passing transformation and the realization of sharing via assignments.