Results 11 
19 of
19
Environments, Continuation Semantics and Indexed Categories
 Theoretical Aspects of Computer Software, number 1281 in Lect. Notes Comp. Sci
, 1997
"... . There have traditionally been two approaches to modelling environments, one by use of ønite products in Cartesian closed categories, the other by use of the base categories of indexed categories with structure. Recently, there have been more general deønitions along both of these lines: the ørst g ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
. There have traditionally been two approaches to modelling environments, one by use of ønite products in Cartesian closed categories, the other by use of the base categories of indexed categories with structure. Recently, there have been more general deønitions along both of these lines: the ørst generalising from Cartesian to symmetric premonoidal categories, the second generalising from indexed categories with speciøed structure to categories. The added generality is not of the purely mathematical kind; in fact it is necessary to extend semantics from the logical calculi studied in, say, Type Theory to more realistic programming language fragments. In this paper, we establish an equivalence between these two recent notions. We then use that equivalence to study semantics for continuations. We give three category theoretic semantics for modelling continuations and show the relationships between them. The ørst is given by a continuations monad. The second is based on a symmetric prem...
Reflections on Reflections
, 1997
"... In the functional programming literature, compiling is often expressed as a translation between source and target program calculi. In recent work, Sabry and Wadler proposed the notion of a reflection as a basis for relating the source and target calculi. A reflection elegantly describes the situati ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
In the functional programming literature, compiling is often expressed as a translation between source and target program calculi. In recent work, Sabry and Wadler proposed the notion of a reflection as a basis for relating the source and target calculi. A reflection elegantly describes the situation where there is a kernel of the source language that is isomorphic to the target language. However, we believe that the reflection criteria is so strong that it often excludes the usual situation in compiling where one is compiling from a higherlevel to a lowerlevel language. We give a detailed analysis of several translations commonly used in compiling that fail to be reflections. We conclude that, in addition to the notion of reflection, there are several relations weaker a reflection that are useful for characterizing translations. We show that several familiar translations (that are not naturally reflections) form what we call a reduction correspondence. We introduce the more genera...
On the callbyvalue CPS transform and its semantics
, 2004
"... We investigate continuations in the context of idealized callbyvalue programming languages. On the semantic side, we analyze the categorical structures that arise from continuation models of callbyvalue languages. On the syntactic side, we study the callbyvalue continuationpassing transformat ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
We investigate continuations in the context of idealized callbyvalue programming languages. On the semantic side, we analyze the categorical structures that arise from continuation models of callbyvalue languages. On the syntactic side, we study the callbyvalue continuationpassing transformation as a translation between equational theories. Among the novelties are an unusually simple axiomatization of control operators and a strengthened completeness result with a proof based on a delaying transform.
Ackermann’s Function: A Study in the Efficiency of Calling Procedures
 BIT
, 1976
"... A six line recursive procedure is used to assess the efficiency of the procedure calling mechanism in ALGOLlike languages. The results from some 40 systems varying from ALGOL 68 and PL/I to System Implementation Languages for minicomputers are presented and compared. A hundred to one variation in p ..."
Abstract

Cited by 5 (2 self)
 Add to MetaCart
A six line recursive procedure is used to assess the efficiency of the procedure calling mechanism in ALGOLlike languages. The results from some 40 systems varying from ALGOL 68 and PL/I to System Implementation Languages for minicomputers are presented and compared. A hundred to one variation in performance occurs with this test, the major reasons for which are given.
Termination of Lazy Rewriting Revisited
, 2007
"... Lazy rewriting is a proper restriction of term rewriting that dynamically restricts the reduction of certain arguments of functions in order to obtain termination. In contrast to contextsensitive rewriting, reductions at such argument positions are not completely forbidden but delayed. Based on the ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
Lazy rewriting is a proper restriction of term rewriting that dynamically restricts the reduction of certain arguments of functions in order to obtain termination. In contrast to contextsensitive rewriting, reductions at such argument positions are not completely forbidden but delayed. Based on the observation that the only existing (nontrivial) approach to prove termination of such lazy rewrite systems is flawed, we develop a modified approach for transforming lazy rewrite systems into contextsensitive ones that is sound and complete with respect to termination. First experimental results with this transformation based technique are encouraging.
Interpreting functions as πcalculus processes: a tutorial
, 1999
"... This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and there ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This paper is concerned with the relationship betweencalculus and ��calculus. Thecalculus talks about functions and their applicative behaviour. This contrasts with the ��calculus, that talks about processes and their interactive behaviour. Application is a special form of interaction, and therefore functions can be seen as a special form of processes. We study how the functions of thecalculus (the computable functions) can be represented as ��calculus processes. The ��calculus semantics of a language induces a notion of equality on the terms of that language. We therefore also analyse the equality among functions that is induced by their representation as ��calculus processes. This paper is intended as a tutorial. It however contains some original contributions. The main ones are: the use of wellknown Continuation Passing Style transforms to derive the encodings into ��calculus and prove their correctness; the encoding of typedcalculi.
OzFun: A Functional Language for Mixed Eager and Lazy Programming
"... OzFun is a functional language that integrates eager and lazy programming. It compiles into the concurrent constraint language Oz. Demand propagation is expressed via logic variables. OzFun syntax extends functional Oz syntax. OzFun offers the entire functional part of the Ozlibrary whether for eag ..."
Abstract
 Add to MetaCart
OzFun is a functional language that integrates eager and lazy programming. It compiles into the concurrent constraint language Oz. Demand propagation is expressed via logic variables. OzFun syntax extends functional Oz syntax. OzFun offers the entire functional part of the Ozlibrary whether for eager or lazy programming. OzFun allows incremental input and output and its interface is based on Oz's Emacs and the OzBrowser. OzFun is dynamically typed. It is a prototypical language useful for teaching. OzFun owns a programming and implementation model which are calculi. The efficiency of eager OzFun programs equals Oz's efficiency and is thus competitive with ML and Haskell. However the performance of lazy OzFun programs is not competitive with Haskell programs: lazy data structures are compiled to highlevel Oz datastructures. There is no strictness analyzer available. The following sections outline OzFun's design and implementation 's issues and address our experiences with the Oz pr...
Dijkstra’s Rallying Cry for Generalization: The Advent of the Recursive Procedure, late 1950s — early 1960s
, 2010
"... According to J.A.N. Lee in 1996, computer scientists “are reaching the stage of development where each new generation of participants is unaware both of their overall technological ancestry and the history of the development of their speciality, and have no past to build upon ” [1, p.54]. A technica ..."
Abstract
 Add to MetaCart
According to J.A.N. Lee in 1996, computer scientists “are reaching the stage of development where each new generation of participants is unaware both of their overall technological ancestry and the history of the development of their speciality, and have no past to build upon ” [1, p.54]. A technically and historically accurate account, as attempted here, can help us, computer scientists, grasp some of the fundamental ideas underlying our discipline. This paper describes some early contributions of E.W. Dijkstra by elaborating on his involvement in putting forward and implementing the recursive procedure as an ALGOL60 language construct. Particular attention is paid to Dijkstra’s generalizing style of solving problems.