Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456 A Unifying Approach to Goal-Directed
Evaluation
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 simple version 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.
Published in New Generation Computing,
20(1), 2001. A preliminary version appeared in Talid Waha, editor,
Proceedings of the 2001 International Workshop on Semantics,
Applications, and Implementation of Program Generation (SAIG),
number 2196 in Lecture Notes in Computer Science, Florence, Italy,
September 2001.
Springer-Verlag.