Results 1 -
4 of
4
A.: Lazy evaluation and delimited control
- In: POPL ’09: Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
, 2009
"... The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a nove ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
The call-by-need lambda calculus provides an equational framework for reasoning syntactically about lazy evaluation. This paper examines its operational characteristics. By a series of reasoning steps, we systematically unpack the standard-order reduction relation of the calculus and discover a novel abstract machine definition which, like the calculus, goes “under lambdas. ” We prove that machine evaluation is equivalent to standard-order evaluation. Unlike traditional abstract machines, delimited control plays a significant role in the machine’s behavior. In particular, the machine replaces the manipulation of a heap using store-based effects with disciplined management of the evaluation stack using control-based effects. In short, state is replaced with control. To further articulate this observation, we present a simulation of call-by-need in a call-by-value language using delimited control operations.
A Trace Browser for a Lazy Functional Language
- In Proceedings of the Twentieth Australian Computer Science Conference
, 1997
"... This paper describes how to construct a tool that enables a programmer to view the evaluation behaviour of a lazy functional program. In the system presented, the program is first transformed so that on execution it produces a trace of expression evaluation, and this trace is passed to a browser whi ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
This paper describes how to construct a tool that enables a programmer to view the evaluation behaviour of a lazy functional program. In the system presented, the program is first transformed so that on execution it produces a trace of expression evaluation, and this trace is passed to a browser which provides facilities for the user to navigate over the trace. We concentrate on issues around browser design, namely the identification of suitable functionality for effective navigation, and a suitable architecture for its construction. A prototype browser is presented. Keywords Lazy functional languages, debugging. 1 Introduction Over the last decade or so lazy functional languages have become increasingly popular [7, 9], with modern languages such as Miranda 1 [25] and Haskell [8] being adopted as vehicles for teaching programming and formal reasoning techniques to computer science students [23]. Despite their growing popularity, programmers can find lazy functional languages challe...
Tracing the Evaluation of Lazy Functional Languages: a Model and its Implementation
- In Asian Computing Science Conference
, 1997
"... . We address the problem of producing a trace of the evaluation of a program written in a lazy functional language. To avoid ambiguities and possible misunderstandings it is essential that the trace structure is defined with respect to a formally described model of program evaluation. We provide suc ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. We address the problem of producing a trace of the evaluation of a program written in a lazy functional language. To avoid ambiguities and possible misunderstandings it is essential that the trace structure is defined with respect to a formally described model of program evaluation. We provide such a formal semantics for lazy evaluation of a simple lazy language, based closely on the work of Launchbury. The trace corresponds to the sequence of expression reductions defined by the evaluation model. We also present a scheme to generate a concrete trace of the evaluation of programs written in the target language, based on its semantic rules. We employ a two-step transformational approach: first transform the program so that, on execution, it generates a call-by-name trace as result, then further transform this trace to a call-by-need trace. Keywords: functional programming, debugging, lazy evaluation, program transformation 1 Introduction While there has been much progress over recen...
Signed Date
"... The work presented in this thesis is, to the best of my knowledge and belief, original, except as acknowledged in the text. The material in this thesis has not been submitted, either in whole or in part, for a degree at this or any other university. ..."
Abstract
- Add to MetaCart
The work presented in this thesis is, to the best of my knowledge and belief, original, except as acknowledged in the text. The material in this thesis has not been submitted, either in whole or in part, for a degree at this or any other university.

