A novel representation of lists and its application to the function "reverse"
Information Processing Letters
The implementation of the Icon programming language
The implementation of the Icon programming language
Computational lambda-calculus and monads
Proceedings of the Fourth Annual Symposium on Logic in computer science
Representing control in the presence of first-class continuations
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Denotational semantics of a goal-directed language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Compiling with continuations
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
Optimizing ML with run-time code generation
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
A general approach for run-time specialization and its application to C
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICON Programmng Language
Definitional Interpreters for Higher-Order Programming Languages
Higher-Order and Symbolic Computation
Semantics-Based Compiling: A Case Study in Type-Directed Partial Evaluation
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Monads for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
An easy implementation of PiL (Prolog in Lisp)
ACM SIGART Bulletin
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
Relating models of backtracking
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
On the static and dynamic extents of delimited continuations
Science of Computer Programming
Inductive reasoning about effectful data types
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Goal-directed evaluation, as embodied in Icon and Snobol, is built on the notions of backtracking and of generating successive results, and therefore it has always been something of a challenge to specify and implement. In this article, we address this challenge using computational monads and partial evaluation.We consider a subset of Icon and we specify it with a monadic semantics and a list monad. We then consider a spectrum of monads that also fit the bill, and we relate them to each other. For example, we derive a continuation monad as a Church encoding of the list monad. The resulting semantics coincides with Gudeman's continuation semantics of Icon.We then compile Icon programs by specializing their interpreter (i.e., by using the first Futamura projection), using type-directed partial evaluation. Through various back ends, including a run-time code generator, we generate ML code, C code, and OCaml byte code. Binding-time analysis and partial evaluation of the continuation-based interpreter automatically give rise to C programs that coincide with the result of Proebsting's optimized compiler.