Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
A scheme for a higher-level semantic algebra
Algebraic methods in semantics
A simple automatic derivative evaluation program
Communications of the ACM
Definitional Interpreters for Higher-Order Programming Languages
Higher-Order and Symbolic Computation
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Lambda: The Ultimate Imperative
Lambda: The Ultimate Imperative
Jones optimality and hardware virtualization: a report on work in progress
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Directly reflective meta-programming
Higher-Order and Symbolic Computation
Supporting dynamic, third-party code customizations in JavaScript using aspects
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Authenticated data structures, generically
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
We motivate and discuss a novel functional programming construct that allows convenient modular run-time nonstandard interpretation via reflection on closure environments. This map-closure construct encompasses both the ability to examine the contents of a closure environment and to construct a new closure with a modified environment. From the user's perspective, map-closure is a powerful and useful construct that supports such tasks as tracing, security logging, sandboxing, error checking, profiling, code instrumentation and metering, run-time code patching, and resource monitoring. From the implementor's perspective, map-closure is analogous to call/cc. Just as call/cc is a non-referentially-transparent mechanism that reifies the continuations that are only implicit in programs written in direct style, map-closure is a non-referentially-transparent mechanism that reifies the closure environments that are only implicit in higher-order programs. Just as CPS conversion is a non-local but purely syntactic transformation that can eliminate references to call/cc, closure conversion is a non-local but purely syntactic transformation that can eliminate references to map-closure. We show how the combination of map-closure and call/cc can be used to implement set! as a procedure definition and a local macro transformation.