LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Static and dynamic semantics processing
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantics-directed compilation of nonlinear patterns
Information Processing Letters
Partial evaluation is fuller laziness
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Notions of computation and monads
Information and Computation
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Two-level functional languages
Two-level functional languages
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A generic account of continuation-passing styles
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Is continuation-passing useful for data flow analysis?
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Continuation passing transformation and abstract interpretation
Proceedings of the First Imperial College Department of Computing Workshop on Theory and formal methods 1993
A unified treatment of flow analysis in higher-order languages
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system equivalent to flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formal language, grammar and set-constraint-based program analysis by abstract interpretation
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Systematic realisation of control flow analyses for CML
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Infinitary control flow analysis: a collecting semantics for closure analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Embedding type structure in semantics
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Compilers and staging transformations
POPL '86 Proceedings of the 13th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Principles of Program Analysis
Principles of Program Analysis
For a Better Support of Static Data Flow
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Comparing Flow-Based Binding-Time Analyses
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
A First-Order One-Pass CPS Transformation
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
What Not to Do When Writing an Interpreter for Specialisation
Selected Papers from the Internaltional Seminar on Partial Evaluation
Continuation Semantics in Typed Lambda-Calculi (Summary)
Proceedings of the Conference on Logic of Programs
Linear Logic, Monads and the Lambda Calculus
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Rabbit: A Compiler for Scheme
A computational formalization for partial evaluation
Mathematical Structures in Computer Science
CPS transformation of flow information
Journal of Functional Programming
A First-Order One-Pass CPS Transformation
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
CPS transformation of flow information, Part II: administrative reductions
Journal of Functional Programming
CPS transformation of beta-redexes
Information Processing Letters
Control-flow analysis of function calls and returns by abstract interpretation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
CPS transformation of beta-redexes
Information Processing Letters
Control-flow analysis of function calls and returns by abstract interpretation
Information and Computation
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
We show that a non-duplicating transformation into Continuation-Passing Style (CPS) has no effect on control-flow analysis, a positive effect on binding-time analysis for traditional partial evaluation, and no effect on binding-time analysis for continuation-based partial evaluation: a monovariant control-flow analysis yields equivalent results on a direct-style program and on its CPS counterpart, a monovariant binding-time analysis yields less precise results on a direct-style program than on its CPS counterpart, and an enhanced monovariant binding-time analysis yields equivalent results on a direct-style program and on its CPS counterpart. Our proof technique amounts to constructing the CPS counterpart of flow information and of binding times. Our results formalize and confirm a folklore theorem about traditional binding-time analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuations. The present study is symptomatic of an unsettling property of program analyses: their quality is unpredictably vulnerable to syntactic accidents in source programs, i.e., to the way these programs are written. More reliable program analyses require a better understanding of the effect of syntactic change.