Results 1 
7 of
7
Monads and Effects
 IN INTERNATIONAL SUMMER SCHOOL ON APPLIED SEMANTICS APPSEM’2000
, 2000
"... A tension in language design has been between simple semantics on the one hand, and rich possibilities for sideeffects, exception handling and so on on the other. The introduction of monads has made a large step towards reconciling these alternatives. First proposed by Moggi as a way of structu ..."
Abstract

Cited by 47 (6 self)
 Add to MetaCart
A tension in language design has been between simple semantics on the one hand, and rich possibilities for sideeffects, exception handling and so on on the other. The introduction of monads has made a large step towards reconciling these alternatives. First proposed by Moggi as a way of structuring semantic descriptions, they were adopted by Wadler to structure Haskell programs, and now offer a general technique for delimiting the scope of effects, thus reconciling referential transparency and imperative operations within one programming language. Monads have been used to solve longstanding problems such as adding pointers and assignment, interlanguage working, and exception handling to Haskell, without compromising its purely functional semantics. The course will introduce monads, effects and related notions, and exemplify their applications in programming (Haskell) and in compilation (MLj). The course will present typed metalanguages for monads and related categorica...
Modelling environments in callbyvalue programming languages
, 2003
"... In categorical semantics, there have traditionally been two approaches to modelling environments, one by use of finite products in cartesian closed categories, the other by use of the base categories of indexed categories with structure. Each requires modifications in order to account for environmen ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
In categorical semantics, there have traditionally been two approaches to modelling environments, one by use of finite products in cartesian closed categories, the other by use of the base categories of indexed categories with structure. Each requires modifications in order to account for environments in callbyvalue programming languages. There have been two more general definitions along both of these lines: the first generalising from cartesian to symmetric premonoidal categories, the second generalising from indexed categories with specified structure to κcategories. In this paper, we investigate environments in callbyvalue languages by analysing a finegrain variant of Moggi’s computational λcalculus, giving two equivalent sound and complete classes of models: one given by closed Freyd categories, which are based on symmetric premonoidal categories, the other given by closed κcategories.
CallByPushValue: Decomposing CallByValue And CallByName
"... We present the callbypushvalue (CBPV) calculus, which decomposes the typed callbyvalue (CBV) and typed callbyname (CBN) paradigms into finegrain primitives. On the operational side, we give bigstep semantics and a stack machine for CBPV, which leads to a straightforward push/pop reading of ..."
Abstract

Cited by 8 (3 self)
 Add to MetaCart
We present the callbypushvalue (CBPV) calculus, which decomposes the typed callbyvalue (CBV) and typed callbyname (CBN) paradigms into finegrain primitives. On the operational side, we give bigstep semantics and a stack machine for CBPV, which leads to a straightforward push/pop reading of CBPV programs. On the denotational side, we model CBPV using cpos and, more generally, using algebras for a strong monad. For storage, we present an O’Hearnstyle “behaviour semantics” that does not use a monad. We present the translations from CBN and CBV to CBPV. All these translations straightforwardly preserve denotational semantics. We also study their operational properties: simulation and full abstraction. We give an equational theory for CBPV, and show it equivalent to a categorical semantics using monads and algebras. We use this theory to formally compare CBPV to Filinski’s variant of the monadic metalanguage, as well as to Marz’s language SFPL, both of which have essentially the same type structure as CBPV. We also discuss less formally the differences between the CBPV and monadic frameworks.
Closed Freyd and κCategories
, 1999
"... We give two classes of sound and complete models for the computational λcalculus, or ccalculus. For the first, we generalise the notion of cartesian closed category to that of closed Freydcategory. For the second, we generalise simple indexed categories. The former gives a direct semantics fo ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
We give two classes of sound and complete models for the computational λcalculus, or ccalculus. For the first, we generalise the notion of cartesian closed category to that of closed Freydcategory. 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 stackbased intermediate languages used in some approaches to compiling.
Jumping Semantics For CallByPushValue
"... Abstract. We give a jumping machine for a higherorder language, embodying the intuition that calling a procedure is a jump, and returning from a procedure is also a jump. The machine makes it very easy to execute a program on paper, so it is a kind of pedagogical tool. It represents a closure in a ..."
Abstract
 Add to MetaCart
Abstract. We give a jumping machine for a higherorder language, embodying the intuition that calling a procedure is a jump, and returning from a procedure is also a jump. The machine makes it very easy to execute a program on paper, so it is a kind of pedagogical tool. It represents a closure in a graphical way, so that a jump does not need to be accompanied by a separate change of environment (as it does in the Krivine machine). The language used is callbypushvalue, making it easy to obtain similar jumping machines for callbyvalue and callbyname calculi (as these are fragments of callbypushvalue).
Closed Freyd and kCategories
, 1999
"... . We give two classes of sound and complete models for the computational calculus, or ccalculus. For the first, we generalise the notion of cartesian closed category to that of closed Freydcategory. 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 ccalculus. For the first, we generalise the notion of cartesian closed category to that of closed Freydcategory. 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 stackbased 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...