Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
Abstract interpretation of declarative languages
Abstract interpretation of declarative languages
Automatic binding time analysis for a typed &lgr;-calculus
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A collecting interpretation of expressions
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Correct flow analysis in continuation semantics
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatic autoprojection of higher order recursive equations
Proceedings of the third European symposium on programming on ESOP '90
From interpreting to compiling binding times
Proceedings of the third European symposium on programming on ESOP '90
Replacing function parameters by global variables
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Transformations on higher-order functions
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Higher-order strictness analysis in untyped lambda calculus
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
New Insights into Partial Evaluation: the SCHISM Experiment
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Binding Time Analysis for Polymorphically Typed Higher Order Languages
TAPSOFT '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 2: Advanced Seminar on Foundations of Innovative Software Development II and Colloquium on Current Issues in Programming Languages
Static and dynamic semantics processing
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameterized partial evaluation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Building incremental programs using partial evaluation
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Binding time analysis: a new PERspective
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Compiling inheritance using partial evaluation
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Using types to avoid redundant specialization
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Polymorphic time systems for estimating program complexity
ACM Letters on Programming Languages and Systems (LOPLAS)
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Safe fusion of functional expressions
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Back to direct style II: first-class continuations
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Polyvariant binding-time analysis for applicative languages
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Higher-order binding-time analysis
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A tour of Schism: a partial evaluation system for higher-order applicative languages
PEPM '93 Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Specifying the correctness of binding-time analysis
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parameterized partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Fixpoint computation for polyvariant static analyses of higher-order applicative programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Closure analysis in constraint form
ACM Transactions on Programming Languages and Systems (TOPLAS)
SPIN—an extensible microkernel for application-specific operating system services
ACM SIGOPS Operating Systems Review
Partial evaluation of call-by-value &lgr;-calculus with side-effects
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A type-directed, on-line, partial evaluator for a polymorphic language
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Resource-bounded partial evaluation
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bootstrapping higher-order program transformers from interpreters
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
SPIN: an extensible microkernel for application-specific operating system services
EW 6 Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs
Search-based binding time analysis using type-directed pruning
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Just When You Thought Your Little Language Was Safe: ``Expression Templates'' in Java
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
Polymorphic specialization for ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Supervising offline partial evaluation of logic programs using online techniques
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
ML dependency analysis for assessors
SEFM'12 Proceedings of the 10th international conference on Software Engineering and Formal Methods
Hi-index | 0.00 |
When some inputs of a program are known at compile-time, certain expressions can be processed statically; this is the basis of the notion of partial evaluation. Identifying these early computations can be determined independently of the actual values of the input by a static analysis called binding time analysis. Then, to process a program, one simply follows the binding time information: evaluate compile-time expressions and defer the others to run-time.Using abstract interpretation, we present a binding time analysis for an untyped functional language which provides an effective treatment of both higher order functions and data structures. To our knowledge it is the first such analysis. It has been implemented and is used in a partial evaluator for a side-effect free dialect of Scheme. The analysis is general enough, however, to be valid for non-strict typed functional languages such as Haskell. Our approach and the system we have developed solve and go beyond the open problem of partially evaluating higher order functions described in [3] since we also provide a method to handle data structures.Our analysis improves on previous work [5, 15, 4] in that: (1) it treats both higher order functions and data structures, (2) it does not impose syntactic restrictions on the program being processed, and (3) it does not require a preliminary phase to collect the set of possible functions that may occur at each site of application.