Results 1 
7 of
7
Adequacy for algebraic effects
 In 4th FoSSaCS
, 2001
"... We present a logic for algebraic effects, based on the algebraic representation of computational effects by operations and equations. We begin with the acalculus, a minimal calculus which separates values, effects, and computations and thereby canonises the order of evaluation. This is extended to ..."
Abstract

Cited by 30 (16 self)
 Add to MetaCart
We present a logic for algebraic effects, based on the algebraic representation of computational effects by operations and equations. We begin with the acalculus, a minimal calculus which separates values, effects, and computations and thereby canonises the order of evaluation. This is extended to obtain the logic, which is a classical firstorder multisorted logic with higherorder value and computation types, as in Levy’s callbypushvalue, a principle of induction over computations, a free algebra principle, and predicate fixed points. This logic embraces Moggi’s computational λcalculus, and also, via definable modalities, HennessyMilner logic, and evaluation logic, though Hoare logic presents difficulties. 1
Combining effects: sum and tensor
"... We seek a unified account of modularity for computational effects. We begin by reformulating Moggi’s monadic paradigm for modelling computational effects using the notion of enriched Lawvere theory, together with its relationship with strong monads; this emphasises the importance of the operations ..."
Abstract

Cited by 29 (4 self)
 Add to MetaCart
We seek a unified account of modularity for computational effects. We begin by reformulating Moggi’s monadic paradigm for modelling computational effects using the notion of enriched Lawvere theory, together with its relationship with strong monads; this emphasises the importance of the operations that produce the effects. Effects qua theories are then combined by appropriate bifunctors on the category of theories. We give a theory for the sum of computational effects, which in particular yields Moggi’s exceptions monad transformer and an interactive input/output monad transformer. We further give a theory of the commutative combination of effects, their tensor, which yields Moggi’s sideeffects monad transformer. Finally we give a theory of operation transformers, for redefining operations when adding new effects; we derive explicit forms for the operation transformers associated to the above monad transformers.
Combining Computational Effects: Commutativity and Sum
, 2002
"... We begin to develop a unified account of modularity for computational effects. We use the notion of enriched Lawvere theory, together with its relationship with strong monads, to reformulate Moggi's paradigm for modelling computational effects; we emphasise the importance here of the operations that ..."
Abstract

Cited by 19 (4 self)
 Add to MetaCart
We begin to develop a unified account of modularity for computational effects. We use the notion of enriched Lawvere theory, together with its relationship with strong monads, to reformulate Moggi's paradigm for modelling computational effects; we emphasise the importance here of the operations that induce computational effects. Effects qua theories are then combined by appropriate bifunctors (on the category of theories). We give a theory of the commutative combination of effects, which in particular yields Moggi's sideeffects monad transformer (an application is the combination of sideeffects with nondeterminism). And we give a theory...
The Structure of CallbyValue
, 2000
"... To my parents Understanding procedure calls is crucial in computer science and everyday programming. Among the most common strategies for passing procedure arguments (‘evaluation strategies’) are ‘callbyname’, ‘callbyneed’, and ‘callbyvalue’, where the latter is the most commonly used. While ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
To my parents Understanding procedure calls is crucial in computer science and everyday programming. Among the most common strategies for passing procedure arguments (‘evaluation strategies’) are ‘callbyname’, ‘callbyneed’, and ‘callbyvalue’, where the latter is the most commonly used. While reasoning about procedure calls is simple for callbyname, problems arise for callbyneed and callbyvalue, 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 callbyvalue, some occur for callbyneed, and none occur for callbyname. In that sense, callbyvalue is the ‘greatest common denominator ’ of the three evaluation strategies. Reasoning about callbyvalue programs has been tackled by Eugenio Moggi’s ‘computational lambdacalculus’, which is based on a distinction between ‘values’
Arrows, like monads, are monoids
 Proc. of 22nd Ann. Conf. on Mathematical Foundations of Programming Semantics, MFPS XXII, v. 158 of Electron. Notes in Theoret. Comput. Sci
, 2006
"... Monads are by now wellestablished as programming construct in functional languages. Recently, the notion of “Arrow ” was introduced by Hughes as an extension, not with one, but with two type parameters. At first, these Arrows may look somewhat arbitrary. Here we show that they are categorically fai ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
Monads are by now wellestablished as programming construct in functional languages. Recently, the notion of “Arrow ” was introduced by Hughes as an extension, not with one, but with two type parameters. At first, these Arrows may look somewhat arbitrary. Here we show that they are categorically fairly civilised, by showing that they correspond to monoids in suitable subcategories of bifunctors C op ×C → C. This shows that, at a suitable level of abstraction, arrows are like monads — which are monoids in categories of functors C → C. Freyd categories have been introduced by Power and Robinson to model computational effects, well before Hughes ’ Arrows appeared. It is often claimed (informally) that Arrows are simply Freyd categories. We shall make this claim precise by showing how monoids in categories of bifunctors exactly correspond to Freyd categories.
Semantics for Algebraic Operations
 Proc. MFPS 17, Electronic Notes in Thoeret. Comp. Sci
, 2001
"... Given a complete and cocomplete symmetric monoidal closed category V and a symmetric monoidal V category C with cotensors and a strong V monad T on C, we investigate axioms under which an ObC indexed family of operations of the form #x : (Tx) v # (Tx) w provides semantics for algebraic ope ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
Given a complete and cocomplete symmetric monoidal closed category V and a symmetric monoidal V category C with cotensors and a strong V monad T on C, we investigate axioms under which an ObC indexed family of operations of the form #x : (Tx) v # (Tx) w provides semantics for algebraic operations, which may be used to extend the usual monadic semantics of the computational #calculus uniformly. We recall a definition for which we have elsewhere given adequacy results, and we show that an enrichment of it is equivalent to a range of other possible natural definitions of algebraic operation. We outline examples and nonexamples and we show that our definition also enriches one for callbyname languages with e#ects. 1
Axiomatics for Data Refinement in Call By Value Programming Languages
"... We give a systematic category theoretic axiomatics for modelling data refinement in call by value programming languages. Our leading examples of call by value languages are extensions of the computational calculus, such as FPC and languages for modelling nondeterminism, and extensions of the first ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We give a systematic category theoretic axiomatics for modelling data refinement in call by value programming languages. Our leading examples of call by value languages are extensions of the computational calculus, such as FPC and languages for modelling nondeterminism, and extensions of the first order fragment of the computational calculus, such as a CPS language. We give a category theoretic account of the basic setting, then show how to model contexts, then arbitrary type and term constructors, then signatures, and finally data refinement. This extends and clarifies Kinoshita and Power's work on lax logical relations for call by value languages.