Introduction to combinators and &lgr;-calculus
Introduction to combinators and &lgr;-calculus
Abstract types have existential type
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming language theory and its implementation
Programming language theory and its implementation
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Co-induction in relational semantics
Theoretical Computer Science
Type inclusion constraints and type inference
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Set-based analysis of ML programs
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A syntactic approach to type soundness
Information and Computation
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 tractable Scheme implementation
Lisp and Symbolic Computation
Storage use analysis and its applications
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Lisp in small pieces
Infinitary control flow analysis: a collecting semantics for closure analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphic splitting: an effective polyvariant flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Componential set-based analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Implicit parameters: dynamic scoping with static types
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Syntactic Theory of Dynamic Binding
Higher-Order and Symbolic Computation
Set Constraints: Results, Applications, and Future Directions
PPCP '94 Proceedings of the Second International Workshop on Principles and Practice of Constraint Programming
JEmacs: the Java/scheme-based Emacs
ATEC '00 Proceedings of the annual conference on USENIX Annual Technical Conference
An operational semantics for scheme1
Journal of Functional Programming
Hi-index | 0.00 |
It is possible to translate code written in Emacs Lisp or another Lisp dialect which uses dynamic scoping to a more modern programming language with lexical scoping while largely preserving structure and readability of the code. The biggest obstacle to such an idiomatic translation from Emacs Lisp is the translation of dynamic binding into suitable instances of lexical binding: Many binding constructs in real programs in fact exhibit identical behavior under both dynamic and lexical binding. An idiomatic translation needs to detect as many of these binding constructs as possible and convert them into lexical binding constructs in the target language to achieve readability and efficiency of the target code. The basic prerequisite for such an idiomatic translation is thus a dynamic scope analysis which associates variable occurrences with binding constructs. We present such an analysis. It is an application of the Nielson/Nielson framework for flow analysis to a semantics for dynamic binding akin to Moreau's. Its implementation handles a substantial portion of Emacs Lisp, has been applied to realistic Emacs Lisp code, and is highly accurate and reasonably efficient in practice.