POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
GEDANKEN—a simple typeless language based on the principle of completeness and the reference concept
Communications of the ACM
Incremental dynamic semantics for language-based programming environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Stores and partial continuations as first-class objects in a language and its environment
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The theory and practice of first-class prompts
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
A dynamic extent control operator for partial continuations
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Incremental reduction with nested constraints
ACM SIGPLAN Notices
A library of high level control operators
ACM SIGPLAN Lisp Pointers
Techniques for embedding postfix languages in Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
An Operational Investigation of the CPS Hierarchy
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
On the static and dynamic extents of delimited continuations
Science of Computer Programming
An approach to call-by-name delimited continuations
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
In this paper we describe GL, a language designed to support interactive experimentation with denotational semantics of programming languages, and the novel features of its interpreter. GL is an expressional language that might best be described as an implementation of lambda calculus augmented with several useful basic data types including 1-values.A unique aspect of the GL environment is that it presents a visible, user-accessible implementation of the continuation semantics of GL. The user is expected to understand a denotational definition of GL, and to interact with the system in terms of that definition. In particular, if a computation is temporarily halted the expression continuation extant at that point can be interactively captured and later applied to other values and stores. The implementation of this feature is via a pair of routines called setjmpup and longjmpup that provide what might be called a partial continuation facility. A partial continuation is a function over stores or store/value pairs that represents execution of a partially executed program from its current state to some later state possibly before its half state. The semantics of partial continuations is interesting, and an extension of GL is presented that contains continuations and partial continuations as first-class objects.The GL environment is fairly complete; it has an experimental polymorphic type inference mechanism that supports self-application and report likely sources of user error in a robust manner, and it has a flexible breakpoint and trace facility that permits program execution to be observed and controlled at a variety of levels of granularity. Moreover, it has been used successfully to teach a graduate course in Theory of Programming Languages.