Results 1 -
9 of
9
An Algebraic Presentation of Term Graphs, via GS-Monoidal Categories
- Applied Categorical Structures
, 1999
"... . We present a categorical characterisation of term graphs (i.e., finite, directed acyclic graphs labeled over a signature) that parallels the well-known characterisation of terms as arrows of the algebraic theory of a given signature (i.e., the free Cartesian category generated by it). In particula ..."
Abstract
-
Cited by 31 (22 self)
- Add to MetaCart
. We present a categorical characterisation of term graphs (i.e., finite, directed acyclic graphs labeled over a signature) that parallels the well-known characterisation of terms as arrows of the algebraic theory of a given signature (i.e., the free Cartesian category generated by it). In particular, we show that term graphs over a signature \Sigma are one-to-one with the arrows of the free gs-monoidal category generated by \Sigma. Such a category satisfies all the axioms for Cartesian categories but for the naturality of two transformations (the discharger ! and the duplicator r), providing in this way an abstract and clear relationship between terms and term graphs. In particular, the absence of the naturality of r and ! has a precise interpretation in terms of explicit sharing and of loss of implicit garbage collection, respectively. Keywords: algebraic theories, directed acyclic graphs, gs-monoidal categories, symmetric monoidal categories, term graphs. Mathematical Subject Clas...
The Structure of Call-by-Value
, 2000
"... To my parents Understanding procedure calls is crucial in computer science and everyday pro-gramming. Among the most common strategies for passing procedure argu-ments (‘evaluation strategies’) are ‘call-by-name’, ‘call-by-need’, and ‘call-by-value’, where the latter is the most commonly used. While ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
To my parents Understanding procedure calls is crucial in computer science and everyday pro-gramming. Among the most common strategies for passing procedure argu-ments (‘evaluation strategies’) are ‘call-by-name’, ‘call-by-need’, and ‘call-by-value’, where the latter is the most commonly used. While reasoning about procedure calls is simple for call-by-name, problems arise for call-by-need and call-by-value, because it matters how often and in which order the arguments of a procedure are evaluated. We shall classify these problems and see that all of them occur for call-by-value, some occur for call-by-need, and none occur for call-by-name. In that sense, call-by-value is the ‘greatest common denominator ’ of the three evaluation strategies. Reasoning about call-by-value programs has been tackled by Eugenio Moggi’s ‘computational lambda-calculus’, which is based on a distinction between ‘values’
Value Recursion in Monadic Computations
- OGI School of Science and Engineering, OHSU
, 2002
"... viii 1 ..."
Semantics of value recursion for monadic input/output
- Journal of Theoretical Informatics and Applications
, 2002
"... Abstract. Monads have been employed in programming languages for modeling various language features, most importantly those that involve side effects. In particular, Haskell’s IO monad provides access to I/O operations and mutable variables, without compromising referential transparency. Cyclic defi ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
Abstract. Monads have been employed in programming languages for modeling various language features, most importantly those that involve side effects. In particular, Haskell’s IO monad provides access to I/O operations and mutable variables, without compromising referential transparency. Cyclic definitions that involve monadic computations give rise to the concept of value-recursion, where the fixed-point computation takes place only over the values, without repeating or losing effects. In this paper, we describe a semantics for a lazy language based on Haskell, supporting monadic I/O, mutable variables, usual recursive definitions, and value recursion. Our semantics is composed of two layers: A natural semantics for the functional layer, and a labeled transition semantics for the IO layer. Mathematics Subject Classification. 68N18, 68Q55, 18C15.
Traced Premonoidal Categories
, 1999
"... Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a well-known theorem relating trace ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Motivated by some examples from functional programming, we propose a generalization of the notion of trace to symmetric premonoidal categories and of Conway operators to Freyd categories. We show that in a Freyd category, these notions are equivalent, generalizing a well-known theorem relating traces and Conway operators in cartesian categories.
A Categorical and Graphical Treatment of Closure Conversion
- In Proc. MFPS 15
, 1998
"... This paper gives a formal basis for the closure conversion phase of functional programming languages with imperative features, using a graphical semantics for the language. We present normal forms of graphs, one corresponding to procedural languages, and one corresponding to object-oriented language ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
This paper gives a formal basis for the closure conversion phase of functional programming languages with imperative features, using a graphical semantics for the language. We present normal forms of graphs, one corresponding to procedural languages, and one corresponding to object-oriented languages. Using closure conversion, we can prove normalization results for both normal forms. Thus, we obtain sound algorithms for compiling the language into either procedural or object-oriented code. We discuss efficiency issues of the translation and suggest some improvements on the algorithm. 1 Introduction This paper describes a categorical formalization of an important step in compiling higher-order languages: closure conversion. Closure conversion is a compilation step which takes nested procedures such as: proc f (x : X1) : X2 { rec g; proc g (y : Y1) : Y2 { return G (g, x, y); } return F (g, x); } and lifts the nested procedures up to top level: rec g_lift; proc g_lift (x : X1, y : Y1...
Towards a typed geometry of interaction
, 2005
"... We introduce a typed version of Girard’s Geometry of Interaction, called Multiobject GoI (MGoI) semantics. We give an MGoI interpretation for multiplicative linear logic (MLL) without units which applies to new kinds of models, including finite dimensional vector spaces. For MGoI (i) we develop a v ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
We introduce a typed version of Girard’s Geometry of Interaction, called Multiobject GoI (MGoI) semantics. We give an MGoI interpretation for multiplicative linear logic (MLL) without units which applies to new kinds of models, including finite dimensional vector spaces. For MGoI (i) we develop a version of partial traces and trace ideals (related to previous work of Abramsky, Blute, and Panangaden); (ii) we do not require the existence of a reflexive object for our interpretation (the original GoI 1 and 2 were untyped and hence involved a bureaucracy of domain equation isomorphisms); (iii) we introduce an abstract notion of orthogonality (related to work of Hyland and Schalk) and use this to develop a version of Girard’s theory of types, datum and algorithms in our setting, (iv) we prove appropriate Soundness and Completeness Theorems for our interpretations in partially traced categories with orthogonality; (v) we end with an application to completeness of (the original) untyped GoI in a unique decomposition category.
Closed Freyd- and k-Categories
, 1999
"... . We give two classes of sound and complete models for the computational -calculus, or c-calculus. For the first, we generalise the notion of cartesian closed category to that of closed Freyd-category. For the second, we generalise simple indexed categories. The former gives a direct semantics f ..."
Abstract
- Add to MetaCart
. We give two classes of sound and complete models for the computational -calculus, or c-calculus. For the first, we generalise the notion of cartesian closed category to that of closed Freyd-category. For the second, we generalise simple indexed categories. The former gives a direct semantics for the computational -calculus. The latter corresponds to an idealisation of stack-based intermediate languages used in some approaches to compiling. 1 Introduction The computational -calculus, or c -calculus, is a natural fragment of a callby -value programming language such as ML. Its models were defined to be c - models, which consist of a small category C with finite products, and a strong monad T on C, such that T has Kleisli exponentials. The class of c -models is sound and complete for the calculus, but it does not provide direct models in that a term of type X in context \Gamma is not modelled by an arrow in C from the semantics of \Gamma to the semantics of X , but by a deriv...
A categorical and graphical . . .
- ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE 20(1999)
, 1999
"... This paper gives a formal basis for the closure conversion phase of functional programming languages with imperative features, using a graphical semantics for the language. We present normal forms of graphs, one corresponding to procedural languages, and one corresponding to object-oriented language ..."
Abstract
- Add to MetaCart
This paper gives a formal basis for the closure conversion phase of functional programming languages with imperative features, using a graphical semantics for the language. We present normal forms of graphs, one corresponding to procedural languages, and one corresponding to object-oriented languages. Using closure conversion, we can prove normalization results for both normal forms. Thus, we obtain sound algorithms for compiling the language into either procedural or object-oriented code. We discuss efficiency issues of the translation and suggest some improvements on the algorithm.

