Results 1 
9 of
9
A new notation for arrows
 In International Conference on Functional Programming (ICFP ’01
, 2001
"... The categorical notion of monad, used by Moggi to structure denotational descriptions, has proved to be a powerful tool for structuring combinator libraries. Moreover, the monadic programming style provides a convenient syntax for many kinds of computation, so that each library defines a new sublang ..."
Abstract

Cited by 64 (1 self)
 Add to MetaCart
(Show Context)
The categorical notion of monad, used by Moggi to structure denotational descriptions, has proved to be a powerful tool for structuring combinator libraries. Moreover, the monadic programming style provides a convenient syntax for many kinds of computation, so that each library defines a new sublanguage. Recently, several workers have proposed a generalization of monads, called variously “arrows ” or Freydcategories. The extra generality promises to increase the power, expressiveness and efficiency of the embedded approach, but does not mesh as well with the native abstraction and application. Definitions are typically given in a pointfree style, which is useful for proving general properties, but can be awkward for programming specific instances. In this paper we define a simple extension to the functional language Haskell that makes these new notions of computation more convenient to use. Our language is similar to the monadic style, and has similar reasoning properties. Moreover, it is extensible, in the sense that new combining forms can be defined as expressions in the host language. 1.
Monads Need Not Be Endofunctors
"... Abstract. We introduce a generalisation of monads, called relative monads, allowing for underlying functors between different categories. Examples include finitedimensional vector spaces, untyped and typed λcalculus syntax and indexed containers. We show that the Kleisli and EilenbergMoore constr ..."
Abstract

Cited by 19 (5 self)
 Add to MetaCart
(Show Context)
Abstract. We introduce a generalisation of monads, called relative monads, allowing for underlying functors between different categories. Examples include finitedimensional vector spaces, untyped and typed λcalculus syntax and indexed containers. We show that the Kleisli and EilenbergMoore constructions carry over to relative monads and are related to relative adjunctions. Under reasonable assumptions, relative monads are monoids in the functor category concerned and extend to monads, giving rise to a coreflection between monads and relative monads. Arrows are also an instance of relative monads. 1
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 17 (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.
Coherence for SkewMonoidal Categories
"... I motivate a variation (due to K. Szlachányi) of monoidal categories called skewmonoidal categories where the unital and associativity laws are not required to be isomorphisms, only natural transformations. Coherence has to be formulated differently than in the wellknown monoidal case. In my (to ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
I motivate a variation (due to K. Szlachányi) of monoidal categories called skewmonoidal categories where the unital and associativity laws are not required to be isomorphisms, only natural transformations. Coherence has to be formulated differently than in the wellknown monoidal case. In my (to my knowledge new) version, it becomes a statement of uniqueness of normalizing rewrites. I present a proof of this coherence theorem and also formalize it fully in the dependently typed programming language Agda.
Under consideration for publication in Math. Struct. in Comp. Science Classical Linear Logic of Implications
, 2003
"... We give a simple term calculus for the multiplicative exponential fragment of Classical Linear Logic, by extending Barber and Plotkin’s dualcontext system for the intuitionistic case. The calculus has the nonlinear and linear implications as the basic constructs, and this design choice allows a te ..."
Abstract
 Add to MetaCart
(Show Context)
We give a simple term calculus for the multiplicative exponential fragment of Classical Linear Logic, by extending Barber and Plotkin’s dualcontext system for the intuitionistic case. The calculus has the nonlinear and linear implications as the basic constructs, and this design choice allows a technically manageable axiomatization without commuting conversions. Despite this simplicity, the calculus is shown to be sound and complete for categorytheoretic models given by ∗autonomous categories with linear exponential comonads. 1.
Submitted to: MSFP 2014 Coherence for SkewMonoidal Categories
"... We motivate a variation (due to K. Szlachányi) of monoidal categories called skewmonoidal categories where the unital and associativity laws are not required to be isomorphisms, only natural transformations. Coherence has to be formulated differently than in the wellknown monoidal case. In my (t ..."
Abstract
 Add to MetaCart
We motivate a variation (due to K. Szlachányi) of monoidal categories called skewmonoidal categories where the unital and associativity laws are not required to be isomorphisms, only natural transformations. Coherence has to be formulated differently than in the wellknown monoidal case. In my (to my knowledge new) version it becomes a statement of uniqueness of normalizing rewrites. We present a proof of this coherence proof and also formalize it fully in the dependently typed programming language Agda.
MultiLevel Languages are Generalized Arrows ∗
"... Multilevel languages and Arrows both facilitate metaprogramming, the act of writing a program which generates a program. The arr function required of all Arrows turns arbitrary host language expressions into guest language expressions; because of this, Arrows may be used for metaprogramming only w ..."
Abstract
 Add to MetaCart
(Show Context)
Multilevel languages and Arrows both facilitate metaprogramming, the act of writing a program which generates a program. The arr function required of all Arrows turns arbitrary host language expressions into guest language expressions; because of this, Arrows may be used for metaprogramming only when the guest language is a superset of the host language. This restriction is also present in multilevel languages which offer unlimited crosslevel persistence. The converse restriction, that the host language is a subset of the guest language, is imposed for multistage languages – those multilevel languages with a run construct. This paper introduces generalized arrows and proves that they generalize Arrows in the following sense: every Arrow in a programming language arises from a generalized arrow with that language’s term category as its codomain (Theorem 4.5.4). Generalized arrows impose no containment relationship between the guest language and host language; they facilitate heterogeneous metaprogramming. The category having all generalized arrows as its morphisms and the category having all multilevel languages as its morphisms are isomorphic categories (Theorem 4.7.8). This is proven formally in Coq, and the proof is offered as justification for the assertion that multilevel languages are generalized arrows. Combined with the existence of a particular kind of retraction (Definition 4.8.3) in the host language, this proof can be used to define an invertible translation from twolevel terms to onelevel terms parameterized by a generalized arrow instance. This is ergonomically significant: it lets guest language providers write generalized arrow instances while the users of those guest languages write multilevel terms. This is beneficial because implementing a generalized arrow instance is easier than modifying a compiler, whereas writing twolevel terms is easier than manipulating generalized arrow terms. Haskell is one example of a host language with the necessary kind of retraction. A modified version of GHC with multilevel terms is offered1 as a proof of concept; the Haskell extraction of the Coq proofs mentioned above has been compiled into this modified GHC, and is made available as a new flattening pass. 1.